github.com/Foodji/aws-lambda-go@v1.20.2/events/duration.go (about) 1 package events 2 3 import ( 4 "encoding/json" 5 "math" 6 "time" 7 ) 8 9 type DurationSeconds time.Duration 10 11 // UnmarshalJSON converts a given json to a DurationSeconds 12 func (duration *DurationSeconds) UnmarshalJSON(data []byte) error { 13 var seconds float64 14 if err := json.Unmarshal(data, &seconds); err != nil { 15 return err 16 } 17 18 *duration = DurationSeconds(time.Duration(seconds) * time.Second) 19 return nil 20 } 21 22 // MarshalJSON converts a given DurationSeconds to json 23 func (duration DurationSeconds) MarshalJSON() ([]byte, error) { 24 seconds := time.Duration(duration).Seconds() 25 return json.Marshal(int64(math.Ceil(seconds))) 26 } 27 28 type DurationMinutes time.Duration 29 30 // UnmarshalJSON converts a given json to a DurationMinutes 31 func (duration *DurationMinutes) UnmarshalJSON(data []byte) error { 32 var minutes float64 33 if err := json.Unmarshal(data, &minutes); err != nil { 34 return err 35 } 36 37 *duration = DurationMinutes(time.Duration(minutes) * time.Minute) 38 return nil 39 } 40 41 // MarshalJSON converts a given DurationMinutes to json 42 func (duration DurationMinutes) MarshalJSON() ([]byte, error) { 43 minutes := time.Duration(duration).Minutes() 44 return json.Marshal(int64(math.Ceil(minutes))) 45 }