// Code generated by ogen, DO NOT EDIT. package gsn import ( "math/bits" "strconv" "time" "github.com/go-faster/errors" "github.com/go-faster/jx" "github.com/ogen-go/ogen/json" "github.com/ogen-go/ogen/validate" ) // Encode implements json.Marshaler. func (s *Error) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *Error) encodeFields(e *jx.Encoder) { { e.FieldStart("message") e.Str(s.Message) } { if s.Details.Set { e.FieldStart("details") s.Details.Encode(e) } } } var jsonFieldsNameOfError = [2]string{ 0: "message", 1: "details", } // Decode decodes Error from json. func (s *Error) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode Error to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "message": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() s.Message = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"message\"") } case "details": if err := func() error { s.Details.Reset() if err := s.Details.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"details\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode Error") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000001, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. // // If XOR result is not zero, result is not equal to expected, so some fields are missed. // Bits of fields which would be set are actually bits of missed fields. missed := bits.OnesCount8(result) for bitN := 0; bitN < missed; bitN++ { bitIdx := bits.TrailingZeros8(result) fieldIdx := i*8 + bitIdx var name string if fieldIdx < len(jsonFieldsNameOfError) { name = jsonFieldsNameOfError[fieldIdx] } else { name = strconv.Itoa(fieldIdx) } failures = append(failures, validate.FieldError{ Name: name, Error: validate.ErrFieldRequired, }) // Reset bit. result &^= 1 << bitIdx } } } if len(failures) > 0 { return &validate.Error{Fields: failures} } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *Error) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *Error) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes bool as json. func (o OptBool) Encode(e *jx.Encoder) { if !o.Set { return } e.Bool(bool(o.Value)) } // Decode decodes bool from json. func (o *OptBool) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptBool to nil") } o.Set = true v, err := d.Bool() if err != nil { return err } o.Value = bool(v) return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptBool) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptBool) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes time.Time as json. func (o OptDateTime) Encode(e *jx.Encoder, format func(*jx.Encoder, time.Time)) { if !o.Set { return } format(e, o.Value) } // Decode decodes time.Time from json. func (o *OptDateTime) Decode(d *jx.Decoder, format func(*jx.Decoder) (time.Time, error)) error { if o == nil { return errors.New("invalid: unable to decode OptDateTime to nil") } o.Set = true v, err := format(d) if err != nil { return err } o.Value = v return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptDateTime) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e, json.EncodeDateTime) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptDateTime) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d, json.DecodeDateTime) } // Encode encodes string as json. func (o OptString) Encode(e *jx.Encoder) { if !o.Set { return } e.Str(string(o.Value)) } // Decode decodes string from json. func (o *OptString) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptString to nil") } o.Set = true v, err := d.Str() if err != nil { return err } o.Value = string(v) return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptString) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptString) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *PredictionResult) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *PredictionResult) encodeFields(e *jx.Encoder) { { e.FieldStart("metadata") s.Metadata.Encode(e) } { e.FieldStart("prediction") e.ArrStart() for _, elem := range s.Prediction { elem.Encode(e) } e.ArrEnd() } } var jsonFieldsNameOfPredictionResult = [2]string{ 0: "metadata", 1: "prediction", } // Decode decodes PredictionResult from json. func (s *PredictionResult) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionResult to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "metadata": requiredBitSet[0] |= 1 << 0 if err := func() error { if err := s.Metadata.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"metadata\"") } case "prediction": requiredBitSet[0] |= 1 << 1 if err := func() error { s.Prediction = make([]PredictionResultPredictionItem, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem PredictionResultPredictionItem if err := elem.Decode(d); err != nil { return err } s.Prediction = append(s.Prediction, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"prediction\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode PredictionResult") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000011, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. // // If XOR result is not zero, result is not equal to expected, so some fields are missed. // Bits of fields which would be set are actually bits of missed fields. missed := bits.OnesCount8(result) for bitN := 0; bitN < missed; bitN++ { bitIdx := bits.TrailingZeros8(result) fieldIdx := i*8 + bitIdx var name string if fieldIdx < len(jsonFieldsNameOfPredictionResult) { name = jsonFieldsNameOfPredictionResult[fieldIdx] } else { name = strconv.Itoa(fieldIdx) } failures = append(failures, validate.FieldError{ Name: name, Error: validate.ErrFieldRequired, }) // Reset bit. result &^= 1 << bitIdx } } } if len(failures) > 0 { return &validate.Error{Fields: failures} } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *PredictionResult) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionResult) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *PredictionResultMetadata) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *PredictionResultMetadata) encodeFields(e *jx.Encoder) { { e.FieldStart("complete_datetime") json.EncodeDateTime(e, s.CompleteDatetime) } { e.FieldStart("start_datetime") json.EncodeDateTime(e, s.StartDatetime) } } var jsonFieldsNameOfPredictionResultMetadata = [2]string{ 0: "complete_datetime", 1: "start_datetime", } // Decode decodes PredictionResultMetadata from json. func (s *PredictionResultMetadata) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionResultMetadata to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "complete_datetime": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := json.DecodeDateTime(d) s.CompleteDatetime = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"complete_datetime\"") } case "start_datetime": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := json.DecodeDateTime(d) s.StartDatetime = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"start_datetime\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode PredictionResultMetadata") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000011, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. // // If XOR result is not zero, result is not equal to expected, so some fields are missed. // Bits of fields which would be set are actually bits of missed fields. missed := bits.OnesCount8(result) for bitN := 0; bitN < missed; bitN++ { bitIdx := bits.TrailingZeros8(result) fieldIdx := i*8 + bitIdx var name string if fieldIdx < len(jsonFieldsNameOfPredictionResultMetadata) { name = jsonFieldsNameOfPredictionResultMetadata[fieldIdx] } else { name = strconv.Itoa(fieldIdx) } failures = append(failures, validate.FieldError{ Name: name, Error: validate.ErrFieldRequired, }) // Reset bit. result &^= 1 << bitIdx } } } if len(failures) > 0 { return &validate.Error{Fields: failures} } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *PredictionResultMetadata) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionResultMetadata) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *PredictionResultPredictionItem) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *PredictionResultPredictionItem) encodeFields(e *jx.Encoder) { { e.FieldStart("stage") s.Stage.Encode(e) } { e.FieldStart("trajectory") e.ArrStart() for _, elem := range s.Trajectory { elem.Encode(e) } e.ArrEnd() } } var jsonFieldsNameOfPredictionResultPredictionItem = [2]string{ 0: "stage", 1: "trajectory", } // Decode decodes PredictionResultPredictionItem from json. func (s *PredictionResultPredictionItem) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionResultPredictionItem to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "stage": requiredBitSet[0] |= 1 << 0 if err := func() error { if err := s.Stage.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"stage\"") } case "trajectory": requiredBitSet[0] |= 1 << 1 if err := func() error { s.Trajectory = make([]PredictionResultPredictionItemTrajectoryItem, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem PredictionResultPredictionItemTrajectoryItem if err := elem.Decode(d); err != nil { return err } s.Trajectory = append(s.Trajectory, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"trajectory\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode PredictionResultPredictionItem") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000011, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. // // If XOR result is not zero, result is not equal to expected, so some fields are missed. // Bits of fields which would be set are actually bits of missed fields. missed := bits.OnesCount8(result) for bitN := 0; bitN < missed; bitN++ { bitIdx := bits.TrailingZeros8(result) fieldIdx := i*8 + bitIdx var name string if fieldIdx < len(jsonFieldsNameOfPredictionResultPredictionItem) { name = jsonFieldsNameOfPredictionResultPredictionItem[fieldIdx] } else { name = strconv.Itoa(fieldIdx) } failures = append(failures, validate.FieldError{ Name: name, Error: validate.ErrFieldRequired, }) // Reset bit. result &^= 1 << bitIdx } } } if len(failures) > 0 { return &validate.Error{Fields: failures} } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *PredictionResultPredictionItem) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionResultPredictionItem) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes PredictionResultPredictionItemStage as json. func (s PredictionResultPredictionItemStage) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes PredictionResultPredictionItemStage from json. func (s *PredictionResultPredictionItemStage) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionResultPredictionItemStage to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch PredictionResultPredictionItemStage(v) { case PredictionResultPredictionItemStageAscent: *s = PredictionResultPredictionItemStageAscent case PredictionResultPredictionItemStageDescent: *s = PredictionResultPredictionItemStageDescent case PredictionResultPredictionItemStageFloat: *s = PredictionResultPredictionItemStageFloat default: *s = PredictionResultPredictionItemStage(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s PredictionResultPredictionItemStage) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionResultPredictionItemStage) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *PredictionResultPredictionItemTrajectoryItem) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *PredictionResultPredictionItemTrajectoryItem) encodeFields(e *jx.Encoder) { { e.FieldStart("datetime") json.EncodeDateTime(e, s.Datetime) } { e.FieldStart("latitude") e.Float64(s.Latitude) } { e.FieldStart("longitude") e.Float64(s.Longitude) } { e.FieldStart("altitude") e.Float64(s.Altitude) } } var jsonFieldsNameOfPredictionResultPredictionItemTrajectoryItem = [4]string{ 0: "datetime", 1: "latitude", 2: "longitude", 3: "altitude", } // Decode decodes PredictionResultPredictionItemTrajectoryItem from json. func (s *PredictionResultPredictionItemTrajectoryItem) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionResultPredictionItemTrajectoryItem to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "datetime": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := json.DecodeDateTime(d) s.Datetime = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"datetime\"") } case "latitude": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := d.Float64() s.Latitude = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"latitude\"") } case "longitude": requiredBitSet[0] |= 1 << 2 if err := func() error { v, err := d.Float64() s.Longitude = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"longitude\"") } case "altitude": requiredBitSet[0] |= 1 << 3 if err := func() error { v, err := d.Float64() s.Altitude = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"altitude\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode PredictionResultPredictionItemTrajectoryItem") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00001111, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. // // If XOR result is not zero, result is not equal to expected, so some fields are missed. // Bits of fields which would be set are actually bits of missed fields. missed := bits.OnesCount8(result) for bitN := 0; bitN < missed; bitN++ { bitIdx := bits.TrailingZeros8(result) fieldIdx := i*8 + bitIdx var name string if fieldIdx < len(jsonFieldsNameOfPredictionResultPredictionItemTrajectoryItem) { name = jsonFieldsNameOfPredictionResultPredictionItemTrajectoryItem[fieldIdx] } else { name = strconv.Itoa(fieldIdx) } failures = append(failures, validate.FieldError{ Name: name, Error: validate.ErrFieldRequired, }) // Reset bit. result &^= 1 << bitIdx } } } if len(failures) > 0 { return &validate.Error{Fields: failures} } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *PredictionResultPredictionItemTrajectoryItem) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionResultPredictionItemTrajectoryItem) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *ReadinessResponse) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *ReadinessResponse) encodeFields(e *jx.Encoder) { { e.FieldStart("status") s.Status.Encode(e) } { if s.LastUpdate.Set { e.FieldStart("last_update") s.LastUpdate.Encode(e, json.EncodeDateTime) } } { if s.IsFresh.Set { e.FieldStart("is_fresh") s.IsFresh.Encode(e) } } { if s.ErrorMessage.Set { e.FieldStart("error_message") s.ErrorMessage.Encode(e) } } } var jsonFieldsNameOfReadinessResponse = [4]string{ 0: "status", 1: "last_update", 2: "is_fresh", 3: "error_message", } // Decode decodes ReadinessResponse from json. func (s *ReadinessResponse) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ReadinessResponse to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "status": requiredBitSet[0] |= 1 << 0 if err := func() error { if err := s.Status.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"status\"") } case "last_update": if err := func() error { s.LastUpdate.Reset() if err := s.LastUpdate.Decode(d, json.DecodeDateTime); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"last_update\"") } case "is_fresh": if err := func() error { s.IsFresh.Reset() if err := s.IsFresh.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"is_fresh\"") } case "error_message": if err := func() error { s.ErrorMessage.Reset() if err := s.ErrorMessage.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"error_message\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode ReadinessResponse") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000001, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. // // If XOR result is not zero, result is not equal to expected, so some fields are missed. // Bits of fields which would be set are actually bits of missed fields. missed := bits.OnesCount8(result) for bitN := 0; bitN < missed; bitN++ { bitIdx := bits.TrailingZeros8(result) fieldIdx := i*8 + bitIdx var name string if fieldIdx < len(jsonFieldsNameOfReadinessResponse) { name = jsonFieldsNameOfReadinessResponse[fieldIdx] } else { name = strconv.Itoa(fieldIdx) } failures = append(failures, validate.FieldError{ Name: name, Error: validate.ErrFieldRequired, }) // Reset bit. result &^= 1 << bitIdx } } } if len(failures) > 0 { return &validate.Error{Fields: failures} } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *ReadinessResponse) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ReadinessResponse) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes ReadinessResponseStatus as json. func (s ReadinessResponseStatus) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes ReadinessResponseStatus from json. func (s *ReadinessResponseStatus) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ReadinessResponseStatus to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch ReadinessResponseStatus(v) { case ReadinessResponseStatusOk: *s = ReadinessResponseStatusOk case ReadinessResponseStatusNotReady: *s = ReadinessResponseStatusNotReady case ReadinessResponseStatusError: *s = ReadinessResponseStatusError default: *s = ReadinessResponseStatus(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s ReadinessResponseStatus) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ReadinessResponseStatus) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) }