From 0d00bf9fd242d3b4f9f3d6caaf5a61f8a3627d7f Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Tue, 28 May 2024 13:13:13 +0200 Subject: [golang] fixed golang api client design mistakes --- golang/pkg/api/errors.go | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'golang/pkg/api/errors.go') diff --git a/golang/pkg/api/errors.go b/golang/pkg/api/errors.go index d39a205..2e36f16 100644 --- a/golang/pkg/api/errors.go +++ b/golang/pkg/api/errors.go @@ -6,18 +6,37 @@ import ( "time" ) +// ----- 429 -------------------------------------------------------------------- type RateLimitError struct { LimitType string `json:"type"` - RetryAfter float64 `json:"retryAfter"` + RetryAfter Duration `json:"retryAfter"` LimitBurst int `json:"limitBurst"` LimitPerSecond int `json:"limitPerSecond"` Remaining int `json:"remaining"` Reset time.Time `json:"reset"` } -func decode429(msg []byte) (e APIMessage[any, RateLimitError]) { +func decodeRateLimitError(msg json.RawMessage) RateLimitError { + var e RateLimitError if err := json.Unmarshal(msg, &e); err != nil { - panic(fmt.Sprintf("Failed to decode419: %+v", err)) + panic(fmt.Errorf("Failed to decode iapi error code 429 RateLimitError: %v, %w", msg, err)) + } + return e +} + +// ----- 4214 ------------------------------------------------------------------- +type ShipInTransitError struct { + Arrival time.Time `json:"arrival"` + DepartureSymbol string `json:"departureSymbol"` + DepartureTime time.Time `json:"departureTime"` + DestinationSymbol string `json:"destinationSymbol"` + SecondsToArrival Duration `json:"secondsToArrival"` +} + +func decodeShipInTransitError(msg json.RawMessage) ShipInTransitError { + var e ShipInTransitError + if err := json.Unmarshal(msg, &e); err != nil { + panic(fmt.Errorf("Failed to decode api error code 4214 ShipInTransitError: %v, %w", msg, err)) } return e } -- cgit v1.2.3