Files
sablier/pkg/durations/duration.go

35 lines
571 B
Go

package durations
import (
"encoding/json"
"fmt"
"time"
)
type Duration struct {
time.Duration
}
func (duration *Duration) UnmarshalJSON(b []byte) error {
var unmarshalledJson interface{}
err := json.Unmarshal(b, &unmarshalledJson)
if err != nil {
return err
}
switch value := unmarshalledJson.(type) {
case float64:
duration.Duration = time.Duration(value)
case string:
duration.Duration, err = time.ParseDuration(value)
if err != nil {
return err
}
default:
return fmt.Errorf("invalid duration: %#v", unmarshalledJson)
}
return nil
}