// Code generated by ogen, DO NOT EDIT. package rest 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 *ConstraintSpec) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *ConstraintSpec) encodeFields(e *jx.Encoder) { { e.FieldStart("type") s.Type.Encode(e) } { if s.Op.Set { e.FieldStart("op") s.Op.Encode(e) } } { if s.Limit.Set { e.FieldStart("limit") s.Limit.Encode(e) } } { if s.Action.Set { e.FieldStart("action") s.Action.Encode(e) } } { if s.Mode.Set { e.FieldStart("mode") s.Mode.Encode(e) } } { if s.Label.Set { e.FieldStart("label") s.Label.Encode(e) } } { if s.Vertices != nil { e.FieldStart("vertices") e.ArrStart() for _, elem := range s.Vertices { elem.Encode(e) } e.ArrEnd() } } } var jsonFieldsNameOfConstraintSpec = [7]string{ 0: "type", 1: "op", 2: "limit", 3: "action", 4: "mode", 5: "label", 6: "vertices", } // Decode decodes ConstraintSpec from json. func (s *ConstraintSpec) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ConstraintSpec to nil") } var requiredBitSet [1]uint8 s.setDefaults() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "type": requiredBitSet[0] |= 1 << 0 if err := func() error { if err := s.Type.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"type\"") } case "op": if err := func() error { s.Op.Reset() if err := s.Op.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"op\"") } case "limit": if err := func() error { s.Limit.Reset() if err := s.Limit.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"limit\"") } case "action": if err := func() error { s.Action.Reset() if err := s.Action.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"action\"") } case "mode": if err := func() error { s.Mode.Reset() if err := s.Mode.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"mode\"") } case "label": if err := func() error { s.Label.Reset() if err := s.Label.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"label\"") } case "vertices": if err := func() error { s.Vertices = make([]PolygonVertex, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem PolygonVertex if err := elem.Decode(d); err != nil { return err } s.Vertices = append(s.Vertices, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"vertices\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode ConstraintSpec") } // 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(jsonFieldsNameOfConstraintSpec) { name = jsonFieldsNameOfConstraintSpec[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 *ConstraintSpec) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ConstraintSpec) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes ConstraintSpecAction as json. func (s ConstraintSpecAction) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes ConstraintSpecAction from json. func (s *ConstraintSpecAction) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ConstraintSpecAction to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch ConstraintSpecAction(v) { case ConstraintSpecActionStop: *s = ConstraintSpecActionStop case ConstraintSpecActionFallback: *s = ConstraintSpecActionFallback case ConstraintSpecActionClip: *s = ConstraintSpecActionClip default: *s = ConstraintSpecAction(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s ConstraintSpecAction) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ConstraintSpecAction) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes ConstraintSpecMode as json. func (s ConstraintSpecMode) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes ConstraintSpecMode from json. func (s *ConstraintSpecMode) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ConstraintSpecMode to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch ConstraintSpecMode(v) { case ConstraintSpecModeInside: *s = ConstraintSpecModeInside case ConstraintSpecModeOutside: *s = ConstraintSpecModeOutside default: *s = ConstraintSpecMode(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s ConstraintSpecMode) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ConstraintSpecMode) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes ConstraintSpecOp as json. func (s ConstraintSpecOp) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes ConstraintSpecOp from json. func (s *ConstraintSpecOp) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ConstraintSpecOp to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch ConstraintSpecOp(v) { case ConstraintSpecOpLess: *s = ConstraintSpecOpLess case ConstraintSpecOpLessEq: *s = ConstraintSpecOpLessEq case ConstraintSpecOpGreater: *s = ConstraintSpecOpGreater case ConstraintSpecOpGreaterEq: *s = ConstraintSpecOpGreaterEq case ConstraintSpecOpEqEq: *s = ConstraintSpecOpEqEq default: *s = ConstraintSpecOp(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s ConstraintSpecOp) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ConstraintSpecOp) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes ConstraintSpecType as json. func (s ConstraintSpecType) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes ConstraintSpecType from json. func (s *ConstraintSpecType) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ConstraintSpecType to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch ConstraintSpecType(v) { case ConstraintSpecTypeAltitude: *s = ConstraintSpecTypeAltitude case ConstraintSpecTypeTime: *s = ConstraintSpecTypeTime case ConstraintSpecTypeTerrainContact: *s = ConstraintSpecTypeTerrainContact case ConstraintSpecTypePolygon: *s = ConstraintSpecTypePolygon default: *s = ConstraintSpecType(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s ConstraintSpecType) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ConstraintSpecType) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *Coverage) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *Coverage) encodeFields(e *jx.Encoder) { { e.FieldStart("region") s.Region.Encode(e) } { e.FieldStart("start_time") json.EncodeDateTime(e, s.StartTime) } { e.FieldStart("end_time") json.EncodeDateTime(e, s.EndTime) } } var jsonFieldsNameOfCoverage = [3]string{ 0: "region", 1: "start_time", 2: "end_time", } // Decode decodes Coverage from json. func (s *Coverage) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode Coverage to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "region": requiredBitSet[0] |= 1 << 0 if err := func() error { if err := s.Region.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"region\"") } case "start_time": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := json.DecodeDateTime(d) s.StartTime = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"start_time\"") } case "end_time": requiredBitSet[0] |= 1 << 2 if err := func() error { v, err := json.DecodeDateTime(d) s.EndTime = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"end_time\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode Coverage") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000111, } { 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(jsonFieldsNameOfCoverage) { name = jsonFieldsNameOfCoverage[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 *Coverage) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *Coverage) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *DatasetEntry) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *DatasetEntry) encodeFields(e *jx.Encoder) { { e.FieldStart("filename") e.Str(s.Filename) } { e.FieldStart("epoch") json.EncodeDateTime(e, s.Epoch) } { if s.Subset.Set { e.FieldStart("subset") s.Subset.Encode(e) } } { if s.Coverage.Set { e.FieldStart("coverage") s.Coverage.Encode(e) } } { e.FieldStart("loaded") e.Bool(s.Loaded) } } var jsonFieldsNameOfDatasetEntry = [5]string{ 0: "filename", 1: "epoch", 2: "subset", 3: "coverage", 4: "loaded", } // Decode decodes DatasetEntry from json. func (s *DatasetEntry) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode DatasetEntry to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "filename": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() s.Filename = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"filename\"") } case "epoch": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := json.DecodeDateTime(d) s.Epoch = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"epoch\"") } case "subset": if err := func() error { s.Subset.Reset() if err := s.Subset.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"subset\"") } case "coverage": if err := func() error { s.Coverage.Reset() if err := s.Coverage.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"coverage\"") } case "loaded": requiredBitSet[0] |= 1 << 4 if err := func() error { v, err := d.Bool() s.Loaded = bool(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"loaded\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode DatasetEntry") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00010011, } { 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(jsonFieldsNameOfDatasetEntry) { name = jsonFieldsNameOfDatasetEntry[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 *DatasetEntry) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *DatasetEntry) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *DatasetInfo) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *DatasetInfo) encodeFields(e *jx.Encoder) { { e.FieldStart("source") e.Str(s.Source) } { e.FieldStart("epoch") json.EncodeDateTime(e, s.Epoch) } } var jsonFieldsNameOfDatasetInfo = [2]string{ 0: "source", 1: "epoch", } // Decode decodes DatasetInfo from json. func (s *DatasetInfo) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode DatasetInfo to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "source": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() s.Source = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"source\"") } case "epoch": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := json.DecodeDateTime(d) s.Epoch = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"epoch\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode DatasetInfo") } // 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(jsonFieldsNameOfDatasetInfo) { name = jsonFieldsNameOfDatasetInfo[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 *DatasetInfo) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *DatasetInfo) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *DatasetList) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *DatasetList) encodeFields(e *jx.Encoder) { { e.FieldStart("source") e.Str(s.Source) } { e.FieldStart("datasets") e.ArrStart() for _, elem := range s.Datasets { elem.Encode(e) } e.ArrEnd() } } var jsonFieldsNameOfDatasetList = [2]string{ 0: "source", 1: "datasets", } // Decode decodes DatasetList from json. func (s *DatasetList) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode DatasetList to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "source": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() s.Source = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"source\"") } case "datasets": requiredBitSet[0] |= 1 << 1 if err := func() error { s.Datasets = make([]DatasetEntry, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem DatasetEntry if err := elem.Decode(d); err != nil { return err } s.Datasets = append(s.Datasets, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"datasets\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode DatasetList") } // 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(jsonFieldsNameOfDatasetList) { name = jsonFieldsNameOfDatasetList[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 *DatasetList) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *DatasetList) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *DownloadAccepted) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *DownloadAccepted) encodeFields(e *jx.Encoder) { { e.FieldStart("job_id") e.Str(s.JobID) } } var jsonFieldsNameOfDownloadAccepted = [1]string{ 0: "job_id", } // Decode decodes DownloadAccepted from json. func (s *DownloadAccepted) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode DownloadAccepted to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "job_id": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() s.JobID = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"job_id\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode DownloadAccepted") } // 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(jsonFieldsNameOfDownloadAccepted) { name = jsonFieldsNameOfDownloadAccepted[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 *DownloadAccepted) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *DownloadAccepted) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *DownloadJob) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *DownloadJob) encodeFields(e *jx.Encoder) { { e.FieldStart("id") e.Str(s.ID) } { e.FieldStart("source") e.Str(s.Source) } { e.FieldStart("dataset") e.Str(s.Dataset) } { e.FieldStart("epoch") json.EncodeDateTime(e, s.Epoch) } { e.FieldStart("status") s.Status.Encode(e) } { e.FieldStart("started_at") json.EncodeDateTime(e, s.StartedAt) } { if s.EndedAt.Set { e.FieldStart("ended_at") s.EndedAt.Encode(e, json.EncodeDateTime) } } { if s.Error.Set { e.FieldStart("error") s.Error.Encode(e) } } { e.FieldStart("total_units") e.Int(s.TotalUnits) } { e.FieldStart("done_units") e.Int(s.DoneUnits) } { e.FieldStart("bytes") e.Int64(s.Bytes) } } var jsonFieldsNameOfDownloadJob = [11]string{ 0: "id", 1: "source", 2: "dataset", 3: "epoch", 4: "status", 5: "started_at", 6: "ended_at", 7: "error", 8: "total_units", 9: "done_units", 10: "bytes", } // Decode decodes DownloadJob from json. func (s *DownloadJob) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode DownloadJob to nil") } var requiredBitSet [2]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "id": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() s.ID = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"id\"") } case "source": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := d.Str() s.Source = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"source\"") } case "dataset": requiredBitSet[0] |= 1 << 2 if err := func() error { v, err := d.Str() s.Dataset = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"dataset\"") } case "epoch": requiredBitSet[0] |= 1 << 3 if err := func() error { v, err := json.DecodeDateTime(d) s.Epoch = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"epoch\"") } case "status": requiredBitSet[0] |= 1 << 4 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 "started_at": requiredBitSet[0] |= 1 << 5 if err := func() error { v, err := json.DecodeDateTime(d) s.StartedAt = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"started_at\"") } case "ended_at": if err := func() error { s.EndedAt.Reset() if err := s.EndedAt.Decode(d, json.DecodeDateTime); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"ended_at\"") } case "error": if err := func() error { s.Error.Reset() if err := s.Error.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"error\"") } case "total_units": requiredBitSet[1] |= 1 << 0 if err := func() error { v, err := d.Int() s.TotalUnits = int(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"total_units\"") } case "done_units": requiredBitSet[1] |= 1 << 1 if err := func() error { v, err := d.Int() s.DoneUnits = int(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"done_units\"") } case "bytes": requiredBitSet[1] |= 1 << 2 if err := func() error { v, err := d.Int64() s.Bytes = int64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"bytes\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode DownloadJob") } // Validate required fields. var failures []validate.FieldError for i, mask := range [2]uint8{ 0b00111111, 0b00000111, } { 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(jsonFieldsNameOfDownloadJob) { name = jsonFieldsNameOfDownloadJob[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 *DownloadJob) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *DownloadJob) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes DownloadJobStatus as json. func (s DownloadJobStatus) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes DownloadJobStatus from json. func (s *DownloadJobStatus) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode DownloadJobStatus to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch DownloadJobStatus(v) { case DownloadJobStatusPending: *s = DownloadJobStatusPending case DownloadJobStatusRunning: *s = DownloadJobStatusRunning case DownloadJobStatusComplete: *s = DownloadJobStatusComplete case DownloadJobStatusFailed: *s = DownloadJobStatusFailed case DownloadJobStatusCancelled: *s = DownloadJobStatusCancelled default: *s = DownloadJobStatus(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s DownloadJobStatus) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *DownloadJobStatus) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *DownloadRequest) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *DownloadRequest) encodeFields(e *jx.Encoder) { { if s.Epoch.Set { e.FieldStart("epoch") s.Epoch.Encode(e, json.EncodeDateTime) } } { if s.Latest.Set { e.FieldStart("latest") s.Latest.Encode(e) } } { if s.Subset.Set { e.FieldStart("subset") s.Subset.Encode(e) } } } var jsonFieldsNameOfDownloadRequest = [3]string{ 0: "epoch", 1: "latest", 2: "subset", } // Decode decodes DownloadRequest from json. func (s *DownloadRequest) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode DownloadRequest to nil") } if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "epoch": if err := func() error { s.Epoch.Reset() if err := s.Epoch.Decode(d, json.DecodeDateTime); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"epoch\"") } case "latest": if err := func() error { s.Latest.Reset() if err := s.Latest.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"latest\"") } case "subset": if err := func() error { s.Subset.Reset() if err := s.Subset.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"subset\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode DownloadRequest") } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *DownloadRequest) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *DownloadRequest) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // 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("error") s.Error.Encode(e) } } var jsonFieldsNameOfError = [1]string{ 0: "error", } // 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 "error": requiredBitSet[0] |= 1 << 0 if err := func() error { if err := s.Error.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"error\"") } 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 implements json.Marshaler. func (s *ErrorError) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *ErrorError) encodeFields(e *jx.Encoder) { { e.FieldStart("type") e.Str(s.Type) } { e.FieldStart("description") e.Str(s.Description) } } var jsonFieldsNameOfErrorError = [2]string{ 0: "type", 1: "description", } // Decode decodes ErrorError from json. func (s *ErrorError) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ErrorError to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "type": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() s.Type = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"type\"") } case "description": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := d.Str() s.Description = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"description\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode ErrorError") } // 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(jsonFieldsNameOfErrorError) { name = jsonFieldsNameOfErrorError[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 *ErrorError) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ErrorError) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *EventSummary) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *EventSummary) encodeFields(e *jx.Encoder) { { e.FieldStart("type") e.Str(s.Type) } { e.FieldStart("count") e.Int64(s.Count) } { if s.FirstTime.Set { e.FieldStart("first_time") s.FirstTime.Encode(e) } } { if s.LastTime.Set { e.FieldStart("last_time") s.LastTime.Encode(e) } } { if s.FirstState.Set { e.FieldStart("first_state") s.FirstState.Encode(e) } } { if s.LastState.Set { e.FieldStart("last_state") s.LastState.Encode(e) } } { if s.Message.Set { e.FieldStart("message") s.Message.Encode(e) } } } var jsonFieldsNameOfEventSummary = [7]string{ 0: "type", 1: "count", 2: "first_time", 3: "last_time", 4: "first_state", 5: "last_state", 6: "message", } // Decode decodes EventSummary from json. func (s *EventSummary) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode EventSummary to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "type": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() s.Type = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"type\"") } case "count": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := d.Int64() s.Count = int64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"count\"") } case "first_time": if err := func() error { s.FirstTime.Reset() if err := s.FirstTime.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"first_time\"") } case "last_time": if err := func() error { s.LastTime.Reset() if err := s.LastTime.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"last_time\"") } case "first_state": if err := func() error { s.FirstState.Reset() if err := s.FirstState.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"first_state\"") } case "last_state": if err := func() error { s.LastState.Reset() if err := s.LastState.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"last_state\"") } case "message": if err := func() error { s.Message.Reset() if err := s.Message.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"message\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode EventSummary") } // 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(jsonFieldsNameOfEventSummary) { name = jsonFieldsNameOfEventSummary[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 *EventSummary) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *EventSummary) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *GeoState) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *GeoState) encodeFields(e *jx.Encoder) { { e.FieldStart("lat") e.Float64(s.Lat) } { e.FieldStart("lng") e.Float64(s.Lng) } { e.FieldStart("altitude") e.Float64(s.Altitude) } } var jsonFieldsNameOfGeoState = [3]string{ 0: "lat", 1: "lng", 2: "altitude", } // Decode decodes GeoState from json. func (s *GeoState) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode GeoState to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "lat": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Float64() s.Lat = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"lat\"") } case "lng": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := d.Float64() s.Lng = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"lng\"") } case "altitude": requiredBitSet[0] |= 1 << 2 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 GeoState") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000111, } { 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(jsonFieldsNameOfGeoState) { name = jsonFieldsNameOfGeoState[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 *GeoState) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *GeoState) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *HourRange) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *HourRange) encodeFields(e *jx.Encoder) { { e.FieldStart("min_hour") e.Int(s.MinHour) } { e.FieldStart("max_hour") e.Int(s.MaxHour) } } var jsonFieldsNameOfHourRange = [2]string{ 0: "min_hour", 1: "max_hour", } // Decode decodes HourRange from json. func (s *HourRange) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode HourRange to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "min_hour": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Int() s.MinHour = int(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"min_hour\"") } case "max_hour": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := d.Int() s.MaxHour = int(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"max_hour\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode HourRange") } // 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(jsonFieldsNameOfHourRange) { name = jsonFieldsNameOfHourRange[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 *HourRange) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *HourRange) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *Launch) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *Launch) encodeFields(e *jx.Encoder) { { e.FieldStart("time") json.EncodeDateTime(e, s.Time) } { e.FieldStart("latitude") e.Float64(s.Latitude) } { e.FieldStart("longitude") e.Float64(s.Longitude) } { if s.Altitude.Set { e.FieldStart("altitude") s.Altitude.Encode(e) } } } var jsonFieldsNameOfLaunch = [4]string{ 0: "time", 1: "latitude", 2: "longitude", 3: "altitude", } // Decode decodes Launch from json. func (s *Launch) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode Launch to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "time": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := json.DecodeDateTime(d) s.Time = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"time\"") } 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": if err := func() error { s.Altitude.Reset() if err := s.Altitude.Decode(d); 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 Launch") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000111, } { 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(jsonFieldsNameOfLaunch) { name = jsonFieldsNameOfLaunch[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 *Launch) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *Launch) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *ModelSpec) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *ModelSpec) encodeFields(e *jx.Encoder) { { e.FieldStart("type") s.Type.Encode(e) } { if s.Rate.Set { e.FieldStart("rate") s.Rate.Encode(e) } } { if s.SeaLevelRate.Set { e.FieldStart("sea_level_rate") s.SeaLevelRate.Encode(e) } } { if s.IncludeWind.Set { e.FieldStart("include_wind") s.IncludeWind.Encode(e) } } { if s.Segments != nil { e.FieldStart("segments") e.ArrStart() for _, elem := range s.Segments { elem.Encode(e) } e.ArrEnd() } } } var jsonFieldsNameOfModelSpec = [5]string{ 0: "type", 1: "rate", 2: "sea_level_rate", 3: "include_wind", 4: "segments", } // Decode decodes ModelSpec from json. func (s *ModelSpec) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ModelSpec to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "type": requiredBitSet[0] |= 1 << 0 if err := func() error { if err := s.Type.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"type\"") } case "rate": if err := func() error { s.Rate.Reset() if err := s.Rate.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"rate\"") } case "sea_level_rate": if err := func() error { s.SeaLevelRate.Reset() if err := s.SeaLevelRate.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"sea_level_rate\"") } case "include_wind": if err := func() error { s.IncludeWind.Reset() if err := s.IncludeWind.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"include_wind\"") } case "segments": if err := func() error { s.Segments = make([]PiecewiseSegment, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem PiecewiseSegment if err := elem.Decode(d); err != nil { return err } s.Segments = append(s.Segments, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"segments\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode ModelSpec") } // 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(jsonFieldsNameOfModelSpec) { name = jsonFieldsNameOfModelSpec[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 *ModelSpec) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ModelSpec) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes ModelSpecType as json. func (s ModelSpecType) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes ModelSpecType from json. func (s *ModelSpecType) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ModelSpecType to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch ModelSpecType(v) { case ModelSpecTypeConstantRate: *s = ModelSpecTypeConstantRate case ModelSpecTypeParachuteDescent: *s = ModelSpecTypeParachuteDescent case ModelSpecTypePiecewise: *s = ModelSpecTypePiecewise case ModelSpecTypeWind: *s = ModelSpecTypeWind default: *s = ModelSpecType(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s ModelSpecType) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ModelSpecType) 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 ConstraintSpecAction as json. func (o OptConstraintSpecAction) Encode(e *jx.Encoder) { if !o.Set { return } e.Str(string(o.Value)) } // Decode decodes ConstraintSpecAction from json. func (o *OptConstraintSpecAction) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptConstraintSpecAction to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptConstraintSpecAction) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptConstraintSpecAction) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes ConstraintSpecMode as json. func (o OptConstraintSpecMode) Encode(e *jx.Encoder) { if !o.Set { return } e.Str(string(o.Value)) } // Decode decodes ConstraintSpecMode from json. func (o *OptConstraintSpecMode) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptConstraintSpecMode to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptConstraintSpecMode) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptConstraintSpecMode) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes ConstraintSpecOp as json. func (o OptConstraintSpecOp) Encode(e *jx.Encoder) { if !o.Set { return } e.Str(string(o.Value)) } // Decode decodes ConstraintSpecOp from json. func (o *OptConstraintSpecOp) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptConstraintSpecOp to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptConstraintSpecOp) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptConstraintSpecOp) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes Coverage as json. func (o OptCoverage) Encode(e *jx.Encoder) { if !o.Set { return } o.Value.Encode(e) } // Decode decodes Coverage from json. func (o *OptCoverage) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptCoverage to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptCoverage) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptCoverage) 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 float64 as json. func (o OptFloat64) Encode(e *jx.Encoder) { if !o.Set { return } e.Float64(float64(o.Value)) } // Decode decodes float64 from json. func (o *OptFloat64) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptFloat64 to nil") } o.Set = true v, err := d.Float64() if err != nil { return err } o.Value = float64(v) return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptFloat64) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptFloat64) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes GeoState as json. func (o OptGeoState) Encode(e *jx.Encoder) { if !o.Set { return } o.Value.Encode(e) } // Decode decodes GeoState from json. func (o *OptGeoState) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptGeoState to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptGeoState) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptGeoState) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes HourRange as json. func (o OptHourRange) Encode(e *jx.Encoder) { if !o.Set { return } o.Value.Encode(e) } // Decode decodes HourRange from json. func (o *OptHourRange) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptHourRange to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptHourRange) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptHourRange) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes int as json. func (o OptInt) Encode(e *jx.Encoder) { if !o.Set { return } e.Int(int(o.Value)) } // Decode decodes int from json. func (o *OptInt) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptInt to nil") } o.Set = true v, err := d.Int() if err != nil { return err } o.Value = int(v) return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptInt) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptInt) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes Options as json. func (o OptOptions) Encode(e *jx.Encoder) { if !o.Set { return } o.Value.Encode(e) } // Decode decodes Options from json. func (o *OptOptions) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptOptions to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptOptions) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptOptions) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes PiecewiseSegmentReference as json. func (o OptPiecewiseSegmentReference) Encode(e *jx.Encoder) { if !o.Set { return } e.Str(string(o.Value)) } // Decode decodes PiecewiseSegmentReference from json. func (o *OptPiecewiseSegmentReference) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptPiecewiseSegmentReference to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptPiecewiseSegmentReference) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptPiecewiseSegmentReference) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes PredictionResponseRequest as json. func (o OptPredictionResponseRequest) Encode(e *jx.Encoder) { if !o.Set { return } o.Value.Encode(e) } // Decode decodes PredictionResponseRequest from json. func (o *OptPredictionResponseRequest) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptPredictionResponseRequest to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptPredictionResponseRequest) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptPredictionResponseRequest) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes PredictionResponseWarnings as json. func (o OptPredictionResponseWarnings) Encode(e *jx.Encoder) { if !o.Set { return } o.Value.Encode(e) } // Decode decodes PredictionResponseWarnings from json. func (o *OptPredictionResponseWarnings) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptPredictionResponseWarnings to nil") } o.Set = true o.Value = make(PredictionResponseWarnings) if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptPredictionResponseWarnings) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptPredictionResponseWarnings) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes PredictionV2RequestDirection as json. func (o OptPredictionV2RequestDirection) Encode(e *jx.Encoder) { if !o.Set { return } e.Str(string(o.Value)) } // Decode decodes PredictionV2RequestDirection from json. func (o *OptPredictionV2RequestDirection) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptPredictionV2RequestDirection to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptPredictionV2RequestDirection) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptPredictionV2RequestDirection) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes PredictionV2Response as json. func (o OptPredictionV2Response) Encode(e *jx.Encoder) { if !o.Set { return } o.Value.Encode(e) } // Decode decodes PredictionV2Response from json. func (o *OptPredictionV2Response) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptPredictionV2Response to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptPredictionV2Response) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptPredictionV2Response) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes Region as json. func (o OptRegion) Encode(e *jx.Encoder) { if !o.Set { return } o.Value.Encode(e) } // Decode decodes Region from json. func (o *OptRegion) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptRegion to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptRegion) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptRegion) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // 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 encodes SubsetSpec as json. func (o OptSubsetSpec) Encode(e *jx.Encoder) { if !o.Set { return } o.Value.Encode(e) } // Decode decodes SubsetSpec from json. func (o *OptSubsetSpec) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptSubsetSpec to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptSubsetSpec) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptSubsetSpec) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes TerminationInfo as json. func (o OptTerminationInfo) Encode(e *jx.Encoder) { if !o.Set { return } o.Value.Encode(e) } // Decode decodes TerminationInfo from json. func (o *OptTerminationInfo) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptTerminationInfo to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptTerminationInfo) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptTerminationInfo) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *Options) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *Options) encodeFields(e *jx.Encoder) { { if s.StepSeconds.Set { e.FieldStart("step_seconds") s.StepSeconds.Encode(e) } } { if s.Tolerance.Set { e.FieldStart("tolerance") s.Tolerance.Encode(e) } } } var jsonFieldsNameOfOptions = [2]string{ 0: "step_seconds", 1: "tolerance", } // Decode decodes Options from json. func (s *Options) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode Options to nil") } if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "step_seconds": if err := func() error { s.StepSeconds.Reset() if err := s.StepSeconds.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"step_seconds\"") } case "tolerance": if err := func() error { s.Tolerance.Reset() if err := s.Tolerance.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"tolerance\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode Options") } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *Options) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *Options) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *PiecewiseSegment) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *PiecewiseSegment) encodeFields(e *jx.Encoder) { { e.FieldStart("until") e.Float64(s.Until) } { e.FieldStart("rate") e.Float64(s.Rate) } { if s.Reference.Set { e.FieldStart("reference") s.Reference.Encode(e) } } } var jsonFieldsNameOfPiecewiseSegment = [3]string{ 0: "until", 1: "rate", 2: "reference", } // Decode decodes PiecewiseSegment from json. func (s *PiecewiseSegment) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PiecewiseSegment to nil") } var requiredBitSet [1]uint8 s.setDefaults() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "until": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Float64() s.Until = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"until\"") } case "rate": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := d.Float64() s.Rate = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"rate\"") } case "reference": if err := func() error { s.Reference.Reset() if err := s.Reference.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"reference\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode PiecewiseSegment") } // 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(jsonFieldsNameOfPiecewiseSegment) { name = jsonFieldsNameOfPiecewiseSegment[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 *PiecewiseSegment) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PiecewiseSegment) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes PiecewiseSegmentReference as json. func (s PiecewiseSegmentReference) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes PiecewiseSegmentReference from json. func (s *PiecewiseSegmentReference) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PiecewiseSegmentReference to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch PiecewiseSegmentReference(v) { case PiecewiseSegmentReferenceAbsolute: *s = PiecewiseSegmentReferenceAbsolute case PiecewiseSegmentReferenceProfileStart: *s = PiecewiseSegmentReferenceProfileStart case PiecewiseSegmentReferencePropagatorStart: *s = PiecewiseSegmentReferencePropagatorStart default: *s = PiecewiseSegmentReference(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s PiecewiseSegmentReference) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PiecewiseSegmentReference) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *PolygonVertex) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *PolygonVertex) encodeFields(e *jx.Encoder) { { e.FieldStart("lat") e.Float64(s.Lat) } { e.FieldStart("lng") e.Float64(s.Lng) } } var jsonFieldsNameOfPolygonVertex = [2]string{ 0: "lat", 1: "lng", } // Decode decodes PolygonVertex from json. func (s *PolygonVertex) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PolygonVertex to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "lat": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Float64() s.Lat = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"lat\"") } case "lng": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := d.Float64() s.Lng = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"lng\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode PolygonVertex") } // 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(jsonFieldsNameOfPolygonVertex) { name = jsonFieldsNameOfPolygonVertex[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 *PolygonVertex) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PolygonVertex) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *PredictionJob) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *PredictionJob) encodeFields(e *jx.Encoder) { { e.FieldStart("id") e.Str(s.ID) } { e.FieldStart("status") s.Status.Encode(e) } { e.FieldStart("created_at") json.EncodeDateTime(e, s.CreatedAt) } { if s.StartedAt.Set { e.FieldStart("started_at") s.StartedAt.Encode(e, json.EncodeDateTime) } } { if s.CompletedAt.Set { e.FieldStart("completed_at") s.CompletedAt.Encode(e, json.EncodeDateTime) } } { if s.Error.Set { e.FieldStart("error") s.Error.Encode(e) } } { if s.Result.Set { e.FieldStart("result") s.Result.Encode(e) } } } var jsonFieldsNameOfPredictionJob = [7]string{ 0: "id", 1: "status", 2: "created_at", 3: "started_at", 4: "completed_at", 5: "error", 6: "result", } // Decode decodes PredictionJob from json. func (s *PredictionJob) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionJob to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "id": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() s.ID = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"id\"") } case "status": requiredBitSet[0] |= 1 << 1 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 "created_at": requiredBitSet[0] |= 1 << 2 if err := func() error { v, err := json.DecodeDateTime(d) s.CreatedAt = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"created_at\"") } case "started_at": if err := func() error { s.StartedAt.Reset() if err := s.StartedAt.Decode(d, json.DecodeDateTime); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"started_at\"") } case "completed_at": if err := func() error { s.CompletedAt.Reset() if err := s.CompletedAt.Decode(d, json.DecodeDateTime); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"completed_at\"") } case "error": if err := func() error { s.Error.Reset() if err := s.Error.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"error\"") } case "result": if err := func() error { s.Result.Reset() if err := s.Result.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"result\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode PredictionJob") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000111, } { 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(jsonFieldsNameOfPredictionJob) { name = jsonFieldsNameOfPredictionJob[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 *PredictionJob) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionJob) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes PredictionJobStatus as json. func (s PredictionJobStatus) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes PredictionJobStatus from json. func (s *PredictionJobStatus) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionJobStatus to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch PredictionJobStatus(v) { case PredictionJobStatusPending: *s = PredictionJobStatusPending case PredictionJobStatusRunning: *s = PredictionJobStatusRunning case PredictionJobStatusComplete: *s = PredictionJobStatusComplete case PredictionJobStatusFailed: *s = PredictionJobStatusFailed case PredictionJobStatusCancelled: *s = PredictionJobStatusCancelled default: *s = PredictionJobStatus(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s PredictionJobStatus) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionJobStatus) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *PredictionResponse) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *PredictionResponse) encodeFields(e *jx.Encoder) { { if s.Request.Set { e.FieldStart("request") s.Request.Encode(e) } } { e.FieldStart("prediction") e.ArrStart() for _, elem := range s.Prediction { elem.Encode(e) } e.ArrEnd() } { e.FieldStart("metadata") s.Metadata.Encode(e) } { if s.Warnings.Set { e.FieldStart("warnings") s.Warnings.Encode(e) } } } var jsonFieldsNameOfPredictionResponse = [4]string{ 0: "request", 1: "prediction", 2: "metadata", 3: "warnings", } // Decode decodes PredictionResponse from json. func (s *PredictionResponse) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionResponse to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "request": if err := func() error { s.Request.Reset() if err := s.Request.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"request\"") } case "prediction": requiredBitSet[0] |= 1 << 1 if err := func() error { s.Prediction = make([]PredictionResponsePredictionItem, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem PredictionResponsePredictionItem 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\"") } case "metadata": requiredBitSet[0] |= 1 << 2 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 "warnings": if err := func() error { s.Warnings.Reset() if err := s.Warnings.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"warnings\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode PredictionResponse") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000110, } { 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(jsonFieldsNameOfPredictionResponse) { name = jsonFieldsNameOfPredictionResponse[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 *PredictionResponse) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionResponse) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *PredictionResponseMetadata) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *PredictionResponseMetadata) encodeFields(e *jx.Encoder) { { e.FieldStart("start_datetime") json.EncodeDateTime(e, s.StartDatetime) } { e.FieldStart("complete_datetime") json.EncodeDateTime(e, s.CompleteDatetime) } } var jsonFieldsNameOfPredictionResponseMetadata = [2]string{ 0: "start_datetime", 1: "complete_datetime", } // Decode decodes PredictionResponseMetadata from json. func (s *PredictionResponseMetadata) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionResponseMetadata to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "start_datetime": requiredBitSet[0] |= 1 << 0 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\"") } case "complete_datetime": requiredBitSet[0] |= 1 << 1 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\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode PredictionResponseMetadata") } // 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(jsonFieldsNameOfPredictionResponseMetadata) { name = jsonFieldsNameOfPredictionResponseMetadata[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 *PredictionResponseMetadata) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionResponseMetadata) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *PredictionResponsePredictionItem) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *PredictionResponsePredictionItem) 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 jsonFieldsNameOfPredictionResponsePredictionItem = [2]string{ 0: "stage", 1: "trajectory", } // Decode decodes PredictionResponsePredictionItem from json. func (s *PredictionResponsePredictionItem) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionResponsePredictionItem 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([]TawhiriPoint, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem TawhiriPoint 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 PredictionResponsePredictionItem") } // 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(jsonFieldsNameOfPredictionResponsePredictionItem) { name = jsonFieldsNameOfPredictionResponsePredictionItem[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 *PredictionResponsePredictionItem) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionResponsePredictionItem) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes PredictionResponsePredictionItemStage as json. func (s PredictionResponsePredictionItemStage) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes PredictionResponsePredictionItemStage from json. func (s *PredictionResponsePredictionItemStage) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionResponsePredictionItemStage to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch PredictionResponsePredictionItemStage(v) { case PredictionResponsePredictionItemStageAscent: *s = PredictionResponsePredictionItemStageAscent case PredictionResponsePredictionItemStageDescent: *s = PredictionResponsePredictionItemStageDescent case PredictionResponsePredictionItemStageFloat: *s = PredictionResponsePredictionItemStageFloat default: *s = PredictionResponsePredictionItemStage(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s PredictionResponsePredictionItemStage) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionResponsePredictionItemStage) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *PredictionResponseRequest) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *PredictionResponseRequest) encodeFields(e *jx.Encoder) { { if s.Dataset.Set { e.FieldStart("dataset") s.Dataset.Encode(e) } } { if s.LaunchLatitude.Set { e.FieldStart("launch_latitude") s.LaunchLatitude.Encode(e) } } { if s.LaunchLongitude.Set { e.FieldStart("launch_longitude") s.LaunchLongitude.Encode(e) } } { if s.LaunchDatetime.Set { e.FieldStart("launch_datetime") s.LaunchDatetime.Encode(e) } } { if s.LaunchAltitude.Set { e.FieldStart("launch_altitude") s.LaunchAltitude.Encode(e) } } { if s.Profile.Set { e.FieldStart("profile") s.Profile.Encode(e) } } { if s.AscentRate.Set { e.FieldStart("ascent_rate") s.AscentRate.Encode(e) } } { if s.BurstAltitude.Set { e.FieldStart("burst_altitude") s.BurstAltitude.Encode(e) } } { if s.DescentRate.Set { e.FieldStart("descent_rate") s.DescentRate.Encode(e) } } } var jsonFieldsNameOfPredictionResponseRequest = [9]string{ 0: "dataset", 1: "launch_latitude", 2: "launch_longitude", 3: "launch_datetime", 4: "launch_altitude", 5: "profile", 6: "ascent_rate", 7: "burst_altitude", 8: "descent_rate", } // Decode decodes PredictionResponseRequest from json. func (s *PredictionResponseRequest) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionResponseRequest to nil") } if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "dataset": if err := func() error { s.Dataset.Reset() if err := s.Dataset.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"dataset\"") } case "launch_latitude": if err := func() error { s.LaunchLatitude.Reset() if err := s.LaunchLatitude.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"launch_latitude\"") } case "launch_longitude": if err := func() error { s.LaunchLongitude.Reset() if err := s.LaunchLongitude.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"launch_longitude\"") } case "launch_datetime": if err := func() error { s.LaunchDatetime.Reset() if err := s.LaunchDatetime.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"launch_datetime\"") } case "launch_altitude": if err := func() error { s.LaunchAltitude.Reset() if err := s.LaunchAltitude.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"launch_altitude\"") } case "profile": if err := func() error { s.Profile.Reset() if err := s.Profile.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"profile\"") } case "ascent_rate": if err := func() error { s.AscentRate.Reset() if err := s.AscentRate.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"ascent_rate\"") } case "burst_altitude": if err := func() error { s.BurstAltitude.Reset() if err := s.BurstAltitude.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"burst_altitude\"") } case "descent_rate": if err := func() error { s.DescentRate.Reset() if err := s.DescentRate.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"descent_rate\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode PredictionResponseRequest") } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *PredictionResponseRequest) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionResponseRequest) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s PredictionResponseWarnings) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields implements json.Marshaler. func (s PredictionResponseWarnings) encodeFields(e *jx.Encoder) { for k, elem := range s { e.FieldStart(k) if len(elem) != 0 { e.Raw(elem) } } } // Decode decodes PredictionResponseWarnings from json. func (s *PredictionResponseWarnings) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionResponseWarnings to nil") } m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { var elem jx.Raw if err := func() error { v, err := d.RawAppend(nil) elem = jx.Raw(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrapf(err, "decode field %q", k) } m[string(k)] = elem return nil }); err != nil { return errors.Wrap(err, "decode PredictionResponseWarnings") } return nil } // MarshalJSON implements stdjson.Marshaler. func (s PredictionResponseWarnings) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionResponseWarnings) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *PredictionV2Request) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *PredictionV2Request) encodeFields(e *jx.Encoder) { { e.FieldStart("launch") s.Launch.Encode(e) } { if s.Direction.Set { e.FieldStart("direction") s.Direction.Encode(e) } } { e.FieldStart("profile") e.ArrStart() for _, elem := range s.Profile { elem.Encode(e) } e.ArrEnd() } { if s.Globals != nil { e.FieldStart("globals") e.ArrStart() for _, elem := range s.Globals { elem.Encode(e) } e.ArrEnd() } } { if s.Options.Set { e.FieldStart("options") s.Options.Encode(e) } } } var jsonFieldsNameOfPredictionV2Request = [5]string{ 0: "launch", 1: "direction", 2: "profile", 3: "globals", 4: "options", } // Decode decodes PredictionV2Request from json. func (s *PredictionV2Request) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionV2Request to nil") } var requiredBitSet [1]uint8 s.setDefaults() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "launch": requiredBitSet[0] |= 1 << 0 if err := func() error { if err := s.Launch.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"launch\"") } case "direction": if err := func() error { s.Direction.Reset() if err := s.Direction.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"direction\"") } case "profile": requiredBitSet[0] |= 1 << 2 if err := func() error { s.Profile = make([]StageSpec, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem StageSpec if err := elem.Decode(d); err != nil { return err } s.Profile = append(s.Profile, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"profile\"") } case "globals": if err := func() error { s.Globals = make([]ConstraintSpec, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem ConstraintSpec if err := elem.Decode(d); err != nil { return err } s.Globals = append(s.Globals, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"globals\"") } case "options": if err := func() error { s.Options.Reset() if err := s.Options.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"options\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode PredictionV2Request") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000101, } { 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(jsonFieldsNameOfPredictionV2Request) { name = jsonFieldsNameOfPredictionV2Request[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 *PredictionV2Request) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionV2Request) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes PredictionV2RequestDirection as json. func (s PredictionV2RequestDirection) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes PredictionV2RequestDirection from json. func (s *PredictionV2RequestDirection) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionV2RequestDirection to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch PredictionV2RequestDirection(v) { case PredictionV2RequestDirectionForward: *s = PredictionV2RequestDirectionForward case PredictionV2RequestDirectionReverse: *s = PredictionV2RequestDirectionReverse default: *s = PredictionV2RequestDirection(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s PredictionV2RequestDirection) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionV2RequestDirection) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *PredictionV2Response) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *PredictionV2Response) encodeFields(e *jx.Encoder) { { e.FieldStart("stages") e.ArrStart() for _, elem := range s.Stages { elem.Encode(e) } e.ArrEnd() } { if s.Events != nil { e.FieldStart("events") e.ArrStart() for _, elem := range s.Events { elem.Encode(e) } e.ArrEnd() } } { e.FieldStart("dataset") s.Dataset.Encode(e) } { e.FieldStart("started_at") json.EncodeDateTime(e, s.StartedAt) } { e.FieldStart("completed_at") json.EncodeDateTime(e, s.CompletedAt) } } var jsonFieldsNameOfPredictionV2Response = [5]string{ 0: "stages", 1: "events", 2: "dataset", 3: "started_at", 4: "completed_at", } // Decode decodes PredictionV2Response from json. func (s *PredictionV2Response) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode PredictionV2Response to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "stages": requiredBitSet[0] |= 1 << 0 if err := func() error { s.Stages = make([]StageResult, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem StageResult if err := elem.Decode(d); err != nil { return err } s.Stages = append(s.Stages, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"stages\"") } case "events": if err := func() error { s.Events = make([]EventSummary, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem EventSummary if err := elem.Decode(d); err != nil { return err } s.Events = append(s.Events, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"events\"") } case "dataset": requiredBitSet[0] |= 1 << 2 if err := func() error { if err := s.Dataset.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"dataset\"") } case "started_at": requiredBitSet[0] |= 1 << 3 if err := func() error { v, err := json.DecodeDateTime(d) s.StartedAt = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"started_at\"") } case "completed_at": requiredBitSet[0] |= 1 << 4 if err := func() error { v, err := json.DecodeDateTime(d) s.CompletedAt = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"completed_at\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode PredictionV2Response") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00011101, } { 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(jsonFieldsNameOfPredictionV2Response) { name = jsonFieldsNameOfPredictionV2Response[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 *PredictionV2Response) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *PredictionV2Response) 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.DatasetTime.Set { e.FieldStart("dataset_time") s.DatasetTime.Encode(e, json.EncodeDateTime) } } { if s.ErrorMessage.Set { e.FieldStart("error_message") s.ErrorMessage.Encode(e) } } } var jsonFieldsNameOfReadinessResponse = [3]string{ 0: "status", 1: "dataset_time", 2: "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 "dataset_time": if err := func() error { s.DatasetTime.Reset() if err := s.DatasetTime.Decode(d, json.DecodeDateTime); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"dataset_time\"") } 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) } // Encode implements json.Marshaler. func (s *Region) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *Region) encodeFields(e *jx.Encoder) { { e.FieldStart("min_lat") e.Float64(s.MinLat) } { e.FieldStart("max_lat") e.Float64(s.MaxLat) } { e.FieldStart("min_lng") e.Float64(s.MinLng) } { e.FieldStart("max_lng") e.Float64(s.MaxLng) } } var jsonFieldsNameOfRegion = [4]string{ 0: "min_lat", 1: "max_lat", 2: "min_lng", 3: "max_lng", } // Decode decodes Region from json. func (s *Region) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode Region to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "min_lat": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Float64() s.MinLat = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"min_lat\"") } case "max_lat": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := d.Float64() s.MaxLat = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"max_lat\"") } case "min_lng": requiredBitSet[0] |= 1 << 2 if err := func() error { v, err := d.Float64() s.MinLng = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"min_lng\"") } case "max_lng": requiredBitSet[0] |= 1 << 3 if err := func() error { v, err := d.Float64() s.MaxLng = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"max_lng\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode Region") } // 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(jsonFieldsNameOfRegion) { name = jsonFieldsNameOfRegion[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 *Region) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *Region) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *StageResult) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *StageResult) encodeFields(e *jx.Encoder) { { e.FieldStart("name") e.Str(s.Name) } { e.FieldStart("outcome") s.Outcome.Encode(e) } { if s.Constraint.Set { e.FieldStart("constraint") s.Constraint.Encode(e) } } { if s.Termination.Set { e.FieldStart("termination") s.Termination.Encode(e) } } { if s.Events != nil { e.FieldStart("events") e.ArrStart() for _, elem := range s.Events { elem.Encode(e) } e.ArrEnd() } } { e.FieldStart("trajectory") e.ArrStart() for _, elem := range s.Trajectory { elem.Encode(e) } e.ArrEnd() } } var jsonFieldsNameOfStageResult = [6]string{ 0: "name", 1: "outcome", 2: "constraint", 3: "termination", 4: "events", 5: "trajectory", } // Decode decodes StageResult from json. func (s *StageResult) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode StageResult to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "name": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() s.Name = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"name\"") } case "outcome": requiredBitSet[0] |= 1 << 1 if err := func() error { if err := s.Outcome.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"outcome\"") } case "constraint": if err := func() error { s.Constraint.Reset() if err := s.Constraint.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"constraint\"") } case "termination": if err := func() error { s.Termination.Reset() if err := s.Termination.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"termination\"") } case "events": if err := func() error { s.Events = make([]EventSummary, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem EventSummary if err := elem.Decode(d); err != nil { return err } s.Events = append(s.Events, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"events\"") } case "trajectory": requiredBitSet[0] |= 1 << 5 if err := func() error { s.Trajectory = make([]TrajectoryPoint, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem TrajectoryPoint 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 StageResult") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00100011, } { 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(jsonFieldsNameOfStageResult) { name = jsonFieldsNameOfStageResult[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 *StageResult) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *StageResult) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes StageResultOutcome as json. func (s StageResultOutcome) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes StageResultOutcome from json. func (s *StageResultOutcome) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode StageResultOutcome to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch StageResultOutcome(v) { case StageResultOutcomeStopped: *s = StageResultOutcomeStopped case StageResultOutcomeFallback: *s = StageResultOutcomeFallback case StageResultOutcomeContinued: *s = StageResultOutcomeContinued default: *s = StageResultOutcome(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s StageResultOutcome) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *StageResultOutcome) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *StageSpec) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *StageSpec) encodeFields(e *jx.Encoder) { { e.FieldStart("name") e.Str(s.Name) } { e.FieldStart("model") s.Model.Encode(e) } { if s.Constraints != nil { e.FieldStart("constraints") e.ArrStart() for _, elem := range s.Constraints { elem.Encode(e) } e.ArrEnd() } } { if s.FallbackIndex.Set { e.FieldStart("fallback_index") s.FallbackIndex.Encode(e) } } } var jsonFieldsNameOfStageSpec = [4]string{ 0: "name", 1: "model", 2: "constraints", 3: "fallback_index", } // Decode decodes StageSpec from json. func (s *StageSpec) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode StageSpec to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "name": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() s.Name = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"name\"") } case "model": requiredBitSet[0] |= 1 << 1 if err := func() error { if err := s.Model.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"model\"") } case "constraints": if err := func() error { s.Constraints = make([]ConstraintSpec, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem ConstraintSpec if err := elem.Decode(d); err != nil { return err } s.Constraints = append(s.Constraints, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"constraints\"") } case "fallback_index": if err := func() error { s.FallbackIndex.Reset() if err := s.FallbackIndex.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"fallback_index\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode StageSpec") } // 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(jsonFieldsNameOfStageSpec) { name = jsonFieldsNameOfStageSpec[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 *StageSpec) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *StageSpec) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *StatusResponse) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *StatusResponse) encodeFields(e *jx.Encoder) { { e.FieldStart("source") e.Str(s.Source) } { e.FieldStart("uptime") e.Str(s.Uptime) } { e.FieldStart("goroutines") e.Int(s.Goroutines) } { e.FieldStart("memory_mb") e.Int64(s.MemoryMB) } { e.FieldStart("jobs_by_status") s.JobsByStatus.Encode(e) } { e.FieldStart("stored_datasets") e.Int(s.StoredDatasets) } { e.FieldStart("loaded_datasets") e.Int(s.LoadedDatasets) } } var jsonFieldsNameOfStatusResponse = [7]string{ 0: "source", 1: "uptime", 2: "goroutines", 3: "memory_mb", 4: "jobs_by_status", 5: "stored_datasets", 6: "loaded_datasets", } // Decode decodes StatusResponse from json. func (s *StatusResponse) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode StatusResponse to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "source": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() s.Source = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"source\"") } case "uptime": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := d.Str() s.Uptime = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"uptime\"") } case "goroutines": requiredBitSet[0] |= 1 << 2 if err := func() error { v, err := d.Int() s.Goroutines = int(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"goroutines\"") } case "memory_mb": requiredBitSet[0] |= 1 << 3 if err := func() error { v, err := d.Int64() s.MemoryMB = int64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"memory_mb\"") } case "jobs_by_status": requiredBitSet[0] |= 1 << 4 if err := func() error { if err := s.JobsByStatus.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"jobs_by_status\"") } case "stored_datasets": requiredBitSet[0] |= 1 << 5 if err := func() error { v, err := d.Int() s.StoredDatasets = int(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"stored_datasets\"") } case "loaded_datasets": requiredBitSet[0] |= 1 << 6 if err := func() error { v, err := d.Int() s.LoadedDatasets = int(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"loaded_datasets\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode StatusResponse") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b01111111, } { 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(jsonFieldsNameOfStatusResponse) { name = jsonFieldsNameOfStatusResponse[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 *StatusResponse) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *StatusResponse) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s StatusResponseJobsByStatus) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields implements json.Marshaler. func (s StatusResponseJobsByStatus) encodeFields(e *jx.Encoder) { for k, elem := range s { e.FieldStart(k) e.Int(elem) } } // Decode decodes StatusResponseJobsByStatus from json. func (s *StatusResponseJobsByStatus) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode StatusResponseJobsByStatus to nil") } m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { var elem int if err := func() error { v, err := d.Int() elem = int(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrapf(err, "decode field %q", k) } m[string(k)] = elem return nil }); err != nil { return errors.Wrap(err, "decode StatusResponseJobsByStatus") } return nil } // MarshalJSON implements stdjson.Marshaler. func (s StatusResponseJobsByStatus) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *StatusResponseJobsByStatus) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *SubsetSpec) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *SubsetSpec) encodeFields(e *jx.Encoder) { { if s.Region.Set { e.FieldStart("region") s.Region.Encode(e) } } { if s.HourRange.Set { e.FieldStart("hour_range") s.HourRange.Encode(e) } } { if s.Members != nil { e.FieldStart("members") e.ArrStart() for _, elem := range s.Members { e.Int(elem) } e.ArrEnd() } } } var jsonFieldsNameOfSubsetSpec = [3]string{ 0: "region", 1: "hour_range", 2: "members", } // Decode decodes SubsetSpec from json. func (s *SubsetSpec) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode SubsetSpec to nil") } if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "region": if err := func() error { s.Region.Reset() if err := s.Region.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"region\"") } case "hour_range": if err := func() error { s.HourRange.Reset() if err := s.HourRange.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"hour_range\"") } case "members": if err := func() error { s.Members = make([]int, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem int v, err := d.Int() elem = int(v) if err != nil { return err } s.Members = append(s.Members, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"members\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode SubsetSpec") } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *SubsetSpec) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *SubsetSpec) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *TawhiriPoint) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *TawhiriPoint) 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 jsonFieldsNameOfTawhiriPoint = [4]string{ 0: "datetime", 1: "latitude", 2: "longitude", 3: "altitude", } // Decode decodes TawhiriPoint from json. func (s *TawhiriPoint) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode TawhiriPoint 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 TawhiriPoint") } // 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(jsonFieldsNameOfTawhiriPoint) { name = jsonFieldsNameOfTawhiriPoint[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 *TawhiriPoint) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *TawhiriPoint) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *TerminationInfo) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *TerminationInfo) encodeFields(e *jx.Encoder) { { e.FieldStart("violation_time") json.EncodeDateTime(e, s.ViolationTime) } { e.FieldStart("violation_state") s.ViolationState.Encode(e) } { e.FieldStart("refined_time") json.EncodeDateTime(e, s.RefinedTime) } { e.FieldStart("refined_state") s.RefinedState.Encode(e) } } var jsonFieldsNameOfTerminationInfo = [4]string{ 0: "violation_time", 1: "violation_state", 2: "refined_time", 3: "refined_state", } // Decode decodes TerminationInfo from json. func (s *TerminationInfo) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode TerminationInfo to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "violation_time": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := json.DecodeDateTime(d) s.ViolationTime = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"violation_time\"") } case "violation_state": requiredBitSet[0] |= 1 << 1 if err := func() error { if err := s.ViolationState.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"violation_state\"") } case "refined_time": requiredBitSet[0] |= 1 << 2 if err := func() error { v, err := json.DecodeDateTime(d) s.RefinedTime = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"refined_time\"") } case "refined_state": requiredBitSet[0] |= 1 << 3 if err := func() error { if err := s.RefinedState.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"refined_state\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode TerminationInfo") } // 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(jsonFieldsNameOfTerminationInfo) { name = jsonFieldsNameOfTerminationInfo[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 *TerminationInfo) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *TerminationInfo) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *TrajectoryPoint) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *TrajectoryPoint) encodeFields(e *jx.Encoder) { { e.FieldStart("time") json.EncodeDateTime(e, s.Time) } { e.FieldStart("latitude") e.Float64(s.Latitude) } { e.FieldStart("longitude") e.Float64(s.Longitude) } { e.FieldStart("altitude") e.Float64(s.Altitude) } } var jsonFieldsNameOfTrajectoryPoint = [4]string{ 0: "time", 1: "latitude", 2: "longitude", 3: "altitude", } // Decode decodes TrajectoryPoint from json. func (s *TrajectoryPoint) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode TrajectoryPoint to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "time": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := json.DecodeDateTime(d) s.Time = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"time\"") } 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 TrajectoryPoint") } // 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(jsonFieldsNameOfTrajectoryPoint) { name = jsonFieldsNameOfTrajectoryPoint[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 *TrajectoryPoint) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *TrajectoryPoint) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *WindComponent) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *WindComponent) encodeFields(e *jx.Encoder) { { e.FieldStart("header") s.Header.Encode(e) } { e.FieldStart("data") e.ArrStart() for _, elem := range s.Data { e.Float64(elem) } e.ArrEnd() } } var jsonFieldsNameOfWindComponent = [2]string{ 0: "header", 1: "data", } // Decode decodes WindComponent from json. func (s *WindComponent) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode WindComponent to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "header": requiredBitSet[0] |= 1 << 0 if err := func() error { if err := s.Header.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"header\"") } case "data": requiredBitSet[0] |= 1 << 1 if err := func() error { s.Data = make([]float64, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem float64 v, err := d.Float64() elem = float64(v) if err != nil { return err } s.Data = append(s.Data, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"data\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode WindComponent") } // 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(jsonFieldsNameOfWindComponent) { name = jsonFieldsNameOfWindComponent[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 *WindComponent) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *WindComponent) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *WindHeader) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *WindHeader) encodeFields(e *jx.Encoder) { { e.FieldStart("parameterCategory") e.Int(s.ParameterCategory) } { e.FieldStart("parameterNumber") e.Int(s.ParameterNumber) } { if s.ParameterNumberName.Set { e.FieldStart("parameterNumberName") s.ParameterNumberName.Encode(e) } } { if s.ParameterUnit.Set { e.FieldStart("parameterUnit") s.ParameterUnit.Encode(e) } } { e.FieldStart("nx") e.Int(s.Nx) } { e.FieldStart("ny") e.Int(s.Ny) } { e.FieldStart("lo1") e.Float64(s.Lo1) } { e.FieldStart("la1") e.Float64(s.La1) } { e.FieldStart("lo2") e.Float64(s.Lo2) } { e.FieldStart("la2") e.Float64(s.La2) } { e.FieldStart("dx") e.Float64(s.Dx) } { e.FieldStart("dy") e.Float64(s.Dy) } { e.FieldStart("refTime") e.Str(s.RefTime) } { e.FieldStart("forecastTime") e.Int(s.ForecastTime) } } var jsonFieldsNameOfWindHeader = [14]string{ 0: "parameterCategory", 1: "parameterNumber", 2: "parameterNumberName", 3: "parameterUnit", 4: "nx", 5: "ny", 6: "lo1", 7: "la1", 8: "lo2", 9: "la2", 10: "dx", 11: "dy", 12: "refTime", 13: "forecastTime", } // Decode decodes WindHeader from json. func (s *WindHeader) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode WindHeader to nil") } var requiredBitSet [2]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "parameterCategory": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Int() s.ParameterCategory = int(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"parameterCategory\"") } case "parameterNumber": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := d.Int() s.ParameterNumber = int(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"parameterNumber\"") } case "parameterNumberName": if err := func() error { s.ParameterNumberName.Reset() if err := s.ParameterNumberName.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"parameterNumberName\"") } case "parameterUnit": if err := func() error { s.ParameterUnit.Reset() if err := s.ParameterUnit.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"parameterUnit\"") } case "nx": requiredBitSet[0] |= 1 << 4 if err := func() error { v, err := d.Int() s.Nx = int(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"nx\"") } case "ny": requiredBitSet[0] |= 1 << 5 if err := func() error { v, err := d.Int() s.Ny = int(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"ny\"") } case "lo1": requiredBitSet[0] |= 1 << 6 if err := func() error { v, err := d.Float64() s.Lo1 = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"lo1\"") } case "la1": requiredBitSet[0] |= 1 << 7 if err := func() error { v, err := d.Float64() s.La1 = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"la1\"") } case "lo2": requiredBitSet[1] |= 1 << 0 if err := func() error { v, err := d.Float64() s.Lo2 = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"lo2\"") } case "la2": requiredBitSet[1] |= 1 << 1 if err := func() error { v, err := d.Float64() s.La2 = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"la2\"") } case "dx": requiredBitSet[1] |= 1 << 2 if err := func() error { v, err := d.Float64() s.Dx = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"dx\"") } case "dy": requiredBitSet[1] |= 1 << 3 if err := func() error { v, err := d.Float64() s.Dy = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"dy\"") } case "refTime": requiredBitSet[1] |= 1 << 4 if err := func() error { v, err := d.Str() s.RefTime = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"refTime\"") } case "forecastTime": requiredBitSet[1] |= 1 << 5 if err := func() error { v, err := d.Int() s.ForecastTime = int(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"forecastTime\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode WindHeader") } // Validate required fields. var failures []validate.FieldError for i, mask := range [2]uint8{ 0b11110011, 0b00111111, } { 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(jsonFieldsNameOfWindHeader) { name = jsonFieldsNameOfWindHeader[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 *WindHeader) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *WindHeader) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *WindMeta) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *WindMeta) encodeFields(e *jx.Encoder) { { e.FieldStart("source") e.Str(s.Source) } { e.FieldStart("epoch") json.EncodeDateTime(e, s.Epoch) } { e.FieldStart("default_step") e.Float64(s.DefaultStep) } { e.FieldStart("min_step") e.Float64(s.MinStep) } { e.FieldStart("suggested_altitudes") e.ArrStart() for _, elem := range s.SuggestedAltitudes { e.Int(elem) } e.ArrEnd() } { e.FieldStart("bbox") s.Bbox.Encode(e) } } var jsonFieldsNameOfWindMeta = [6]string{ 0: "source", 1: "epoch", 2: "default_step", 3: "min_step", 4: "suggested_altitudes", 5: "bbox", } // Decode decodes WindMeta from json. func (s *WindMeta) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode WindMeta to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "source": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() s.Source = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"source\"") } case "epoch": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := json.DecodeDateTime(d) s.Epoch = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"epoch\"") } case "default_step": requiredBitSet[0] |= 1 << 2 if err := func() error { v, err := d.Float64() s.DefaultStep = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"default_step\"") } case "min_step": requiredBitSet[0] |= 1 << 3 if err := func() error { v, err := d.Float64() s.MinStep = float64(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"min_step\"") } case "suggested_altitudes": requiredBitSet[0] |= 1 << 4 if err := func() error { s.SuggestedAltitudes = make([]int, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem int v, err := d.Int() elem = int(v) if err != nil { return err } s.SuggestedAltitudes = append(s.SuggestedAltitudes, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"suggested_altitudes\"") } case "bbox": requiredBitSet[0] |= 1 << 5 if err := func() error { if err := s.Bbox.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"bbox\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode WindMeta") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00111111, } { 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(jsonFieldsNameOfWindMeta) { name = jsonFieldsNameOfWindMeta[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 *WindMeta) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *WindMeta) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) }