idfm-api/types/misc.go

71 lines
2.0 KiB
Go

package types
import (
"image/color"
"strconv"
"time"
"github.com/pkg/errors"
)
// DataFreshness codes for a specific data freshness requirement: realtime or base_schedule
type DataFreshness string
// parseColor, given a hex code #RRGGBB returns a color.NRGBA
func parseColor(str string) (color.NRGBA, error) {
var clr color.NRGBA
if len(str) != 6 {
return clr, errors.Errorf("parseColor: can't parse, invalid length (len=%d instead of 6)", len(str))
}
r, err := strconv.ParseUint(str[:2], 16, 8)
if err != nil {
return clr, errors.Wrapf(err, "parseColor: red component parsing failed (str: %s)", str[:2])
}
g, err := strconv.ParseUint(str[2:4], 16, 8)
if err != nil {
return clr, errors.Wrapf(err, "parseColor: green component parsing failed (str: %s)", str[2:4])
}
b, err := strconv.ParseUint(str[4:], 16, 8)
if err != nil {
return clr, errors.Wrapf(err, "parseColor: blue component parsing failed (str: %s)", str[4:])
}
return color.NRGBA{
R: uint8(r),
G: uint8(g),
B: uint8(b),
}, nil
}
const (
// DataFreshnessRealTime means you'll get undisrupted journeys
DataFreshnessRealTime DataFreshness = "realtime"
// DataFreshnessBaseSchedule means you can get disrupted journeys in the response.
DataFreshnessBaseSchedule = "base_schedule"
)
// A PTDateTime (pt stands for “public transport”) is a complex date time object to manage the difference between stop and leaving times at a stop.
// It is used by:
// - Row in Schedule
// - StopSchedule
// - StopDatetime
type PTDateTime struct {
// Date/Time of departure
Departure time.Time `json:"departure"`
// Date/Time of arrival
Arrival time.Time `json:"arrival"`
}
// A Code is associated to a dataset
//
// Every object managed by Navitia comes with its own list of ids.
// You will find some source ids, merge ids, etc. in “codes” list in json responses.
// Be careful, these codes may not be unique. The navitia id is the only unique id.
type Code struct {
Type string `json:"type"`
Value string `json:"value"`
}