package report import "time" func Resolve(id ID, req ResolveRequest) (Resolved, error) { return DefaultRegistry().Resolve(id, req) } func (r Registry) Resolve(id ID, req ResolveRequest) (Resolved, error) { definition, err := r.Lookup(id) if err != nil { return Resolved{}, err } return r.resolveDefinition(definition, req) } func (r Registry) resolveDefinition(definition Definition, req ResolveRequest) (Resolved, error) { if req.Location == nil { req.Location = time.UTC } if req.Now.IsZero() { req.Now = time.Now() } period, err := definition.ResolvePeriod(req) if err != nil { return Resolved{}, err } return Resolved{ Definition: definition, GeneratedAt: req.Now, Timezone: req.Location.String(), ValidPeriod: period, }, nil }