36 lines
849 B
Go
36 lines
849 B
Go
package v4
|
|
|
|
import "time"
|
|
|
|
// SigningTime provides a wrapper around a time.Time which provides cached values for SigV4 signing.
|
|
type SigningTime struct {
|
|
time.Time
|
|
timeFormat string
|
|
shortTimeFormat string
|
|
}
|
|
|
|
// NewSigningTime creates a new SigningTime given a time.Time
|
|
func NewSigningTime(t time.Time) SigningTime {
|
|
return SigningTime{
|
|
Time: t,
|
|
}
|
|
}
|
|
|
|
// TimeFormat provides a time formatted in the X-Amz-Date format.
|
|
func (m *SigningTime) TimeFormat() string {
|
|
return m.format(&m.timeFormat, TimeFormat)
|
|
}
|
|
|
|
// ShortTimeFormat provides a time formatted of 20060102.
|
|
func (m *SigningTime) ShortTimeFormat() string {
|
|
return m.format(&m.shortTimeFormat, ShortTimeFormat)
|
|
}
|
|
|
|
func (m *SigningTime) format(target *string, format string) string {
|
|
if len(*target) > 0 {
|
|
return *target
|
|
}
|
|
v := m.Time.Format(format)
|
|
*target = v
|
|
return v
|
|
}
|