You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
849 B
37 lines
849 B
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
|
|
}
|