// Code generated by ogen, DO NOT EDIT. package gsn import ( "fmt" "net/http" "time" "github.com/go-faster/errors" "github.com/ogen-go/ogen/conv" "github.com/ogen-go/ogen/middleware" "github.com/ogen-go/ogen/ogenerrors" "github.com/ogen-go/ogen/uri" "github.com/ogen-go/ogen/validate" ) // PerformPredictionParams is parameters of performPrediction operation. type PerformPredictionParams struct { LaunchLatitude OptFloat64 `json:",omitempty,omitzero"` LaunchLongitude OptFloat64 `json:",omitempty,omitzero"` LaunchDatetime OptDateTime `json:",omitempty,omitzero"` LaunchAltitude OptFloat64 `json:",omitempty,omitzero"` Profile OptPerformPredictionProfile `json:",omitempty,omitzero"` AscentRate OptFloat64 `json:",omitempty,omitzero"` BurstAltitude OptFloat64 `json:",omitempty,omitzero"` DescentRate OptFloat64 `json:",omitempty,omitzero"` FloatAltitude OptFloat64 `json:",omitempty,omitzero"` StopDatetime OptDateTime `json:",omitempty,omitzero"` AscentCurve OptString `json:",omitempty,omitzero"` DescentCurve OptString `json:",omitempty,omitzero"` SimulateStages []PerformPredictionSimulateStagesItem `json:",omitempty"` Interpolate OptBool `json:",omitempty,omitzero"` Format OptPerformPredictionFormat `json:",omitempty,omitzero"` Dataset OptDateTime `json:",omitempty,omitzero"` } func unpackPerformPredictionParams(packed middleware.Parameters) (params PerformPredictionParams) { { key := middleware.ParameterKey{ Name: "launch_latitude", In: "query", } if v, ok := packed[key]; ok { params.LaunchLatitude = v.(OptFloat64) } } { key := middleware.ParameterKey{ Name: "launch_longitude", In: "query", } if v, ok := packed[key]; ok { params.LaunchLongitude = v.(OptFloat64) } } { key := middleware.ParameterKey{ Name: "launch_datetime", In: "query", } if v, ok := packed[key]; ok { params.LaunchDatetime = v.(OptDateTime) } } { key := middleware.ParameterKey{ Name: "launch_altitude", In: "query", } if v, ok := packed[key]; ok { params.LaunchAltitude = v.(OptFloat64) } } { key := middleware.ParameterKey{ Name: "profile", In: "query", } if v, ok := packed[key]; ok { params.Profile = v.(OptPerformPredictionProfile) } } { key := middleware.ParameterKey{ Name: "ascent_rate", In: "query", } if v, ok := packed[key]; ok { params.AscentRate = v.(OptFloat64) } } { key := middleware.ParameterKey{ Name: "burst_altitude", In: "query", } if v, ok := packed[key]; ok { params.BurstAltitude = v.(OptFloat64) } } { key := middleware.ParameterKey{ Name: "descent_rate", In: "query", } if v, ok := packed[key]; ok { params.DescentRate = v.(OptFloat64) } } { key := middleware.ParameterKey{ Name: "float_altitude", In: "query", } if v, ok := packed[key]; ok { params.FloatAltitude = v.(OptFloat64) } } { key := middleware.ParameterKey{ Name: "stop_datetime", In: "query", } if v, ok := packed[key]; ok { params.StopDatetime = v.(OptDateTime) } } { key := middleware.ParameterKey{ Name: "ascent_curve", In: "query", } if v, ok := packed[key]; ok { params.AscentCurve = v.(OptString) } } { key := middleware.ParameterKey{ Name: "descent_curve", In: "query", } if v, ok := packed[key]; ok { params.DescentCurve = v.(OptString) } } { key := middleware.ParameterKey{ Name: "simulate_stages", In: "query", } if v, ok := packed[key]; ok { params.SimulateStages = v.([]PerformPredictionSimulateStagesItem) } } { key := middleware.ParameterKey{ Name: "interpolate", In: "query", } if v, ok := packed[key]; ok { params.Interpolate = v.(OptBool) } } { key := middleware.ParameterKey{ Name: "format", In: "query", } if v, ok := packed[key]; ok { params.Format = v.(OptPerformPredictionFormat) } } { key := middleware.ParameterKey{ Name: "dataset", In: "query", } if v, ok := packed[key]; ok { params.Dataset = v.(OptDateTime) } } return params } func decodePerformPredictionParams(args [0]string, argsEscaped bool, r *http.Request) (params PerformPredictionParams, _ error) { q := uri.NewQueryDecoder(r.URL.Query()) // Decode query: launch_latitude. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "launch_latitude", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotLaunchLatitudeVal float64 if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToFloat64(val) if err != nil { return err } paramsDotLaunchLatitudeVal = c return nil }(); err != nil { return err } params.LaunchLatitude.SetTo(paramsDotLaunchLatitudeVal) return nil }); err != nil { return err } if err := func() error { if value, ok := params.LaunchLatitude.Get(); ok { if err := func() error { if err := (validate.Float{}).Validate(float64(value)); err != nil { return errors.Wrap(err, "float") } return nil }(); err != nil { return err } } return nil }(); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "launch_latitude", In: "query", Err: err, } } // Decode query: launch_longitude. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "launch_longitude", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotLaunchLongitudeVal float64 if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToFloat64(val) if err != nil { return err } paramsDotLaunchLongitudeVal = c return nil }(); err != nil { return err } params.LaunchLongitude.SetTo(paramsDotLaunchLongitudeVal) return nil }); err != nil { return err } if err := func() error { if value, ok := params.LaunchLongitude.Get(); ok { if err := func() error { if err := (validate.Float{}).Validate(float64(value)); err != nil { return errors.Wrap(err, "float") } return nil }(); err != nil { return err } } return nil }(); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "launch_longitude", In: "query", Err: err, } } // Decode query: launch_datetime. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "launch_datetime", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotLaunchDatetimeVal time.Time if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToDateTime(val) if err != nil { return err } paramsDotLaunchDatetimeVal = c return nil }(); err != nil { return err } params.LaunchDatetime.SetTo(paramsDotLaunchDatetimeVal) return nil }); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "launch_datetime", In: "query", Err: err, } } // Decode query: launch_altitude. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "launch_altitude", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotLaunchAltitudeVal float64 if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToFloat64(val) if err != nil { return err } paramsDotLaunchAltitudeVal = c return nil }(); err != nil { return err } params.LaunchAltitude.SetTo(paramsDotLaunchAltitudeVal) return nil }); err != nil { return err } if err := func() error { if value, ok := params.LaunchAltitude.Get(); ok { if err := func() error { if err := (validate.Float{}).Validate(float64(value)); err != nil { return errors.Wrap(err, "float") } return nil }(); err != nil { return err } } return nil }(); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "launch_altitude", In: "query", Err: err, } } // Decode query: profile. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "profile", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotProfileVal PerformPredictionProfile if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToString(val) if err != nil { return err } paramsDotProfileVal = PerformPredictionProfile(c) return nil }(); err != nil { return err } params.Profile.SetTo(paramsDotProfileVal) return nil }); err != nil { return err } if err := func() error { if value, ok := params.Profile.Get(); ok { if err := func() error { if err := value.Validate(); err != nil { return err } return nil }(); err != nil { return err } } return nil }(); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "profile", In: "query", Err: err, } } // Decode query: ascent_rate. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "ascent_rate", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotAscentRateVal float64 if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToFloat64(val) if err != nil { return err } paramsDotAscentRateVal = c return nil }(); err != nil { return err } params.AscentRate.SetTo(paramsDotAscentRateVal) return nil }); err != nil { return err } if err := func() error { if value, ok := params.AscentRate.Get(); ok { if err := func() error { if err := (validate.Float{}).Validate(float64(value)); err != nil { return errors.Wrap(err, "float") } return nil }(); err != nil { return err } } return nil }(); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "ascent_rate", In: "query", Err: err, } } // Decode query: burst_altitude. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "burst_altitude", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotBurstAltitudeVal float64 if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToFloat64(val) if err != nil { return err } paramsDotBurstAltitudeVal = c return nil }(); err != nil { return err } params.BurstAltitude.SetTo(paramsDotBurstAltitudeVal) return nil }); err != nil { return err } if err := func() error { if value, ok := params.BurstAltitude.Get(); ok { if err := func() error { if err := (validate.Float{}).Validate(float64(value)); err != nil { return errors.Wrap(err, "float") } return nil }(); err != nil { return err } } return nil }(); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "burst_altitude", In: "query", Err: err, } } // Decode query: descent_rate. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "descent_rate", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotDescentRateVal float64 if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToFloat64(val) if err != nil { return err } paramsDotDescentRateVal = c return nil }(); err != nil { return err } params.DescentRate.SetTo(paramsDotDescentRateVal) return nil }); err != nil { return err } if err := func() error { if value, ok := params.DescentRate.Get(); ok { if err := func() error { if err := (validate.Float{}).Validate(float64(value)); err != nil { return errors.Wrap(err, "float") } return nil }(); err != nil { return err } } return nil }(); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "descent_rate", In: "query", Err: err, } } // Decode query: float_altitude. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "float_altitude", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotFloatAltitudeVal float64 if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToFloat64(val) if err != nil { return err } paramsDotFloatAltitudeVal = c return nil }(); err != nil { return err } params.FloatAltitude.SetTo(paramsDotFloatAltitudeVal) return nil }); err != nil { return err } if err := func() error { if value, ok := params.FloatAltitude.Get(); ok { if err := func() error { if err := (validate.Float{}).Validate(float64(value)); err != nil { return errors.Wrap(err, "float") } return nil }(); err != nil { return err } } return nil }(); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "float_altitude", In: "query", Err: err, } } // Decode query: stop_datetime. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "stop_datetime", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotStopDatetimeVal time.Time if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToDateTime(val) if err != nil { return err } paramsDotStopDatetimeVal = c return nil }(); err != nil { return err } params.StopDatetime.SetTo(paramsDotStopDatetimeVal) return nil }); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "stop_datetime", In: "query", Err: err, } } // Decode query: ascent_curve. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "ascent_curve", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotAscentCurveVal string if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToString(val) if err != nil { return err } paramsDotAscentCurveVal = c return nil }(); err != nil { return err } params.AscentCurve.SetTo(paramsDotAscentCurveVal) return nil }); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "ascent_curve", In: "query", Err: err, } } // Decode query: descent_curve. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "descent_curve", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotDescentCurveVal string if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToString(val) if err != nil { return err } paramsDotDescentCurveVal = c return nil }(); err != nil { return err } params.DescentCurve.SetTo(paramsDotDescentCurveVal) return nil }); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "descent_curve", In: "query", Err: err, } } // Decode query: simulate_stages. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "simulate_stages", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { return d.DecodeArray(func(d uri.Decoder) error { var paramsDotSimulateStagesVal PerformPredictionSimulateStagesItem if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToString(val) if err != nil { return err } paramsDotSimulateStagesVal = PerformPredictionSimulateStagesItem(c) return nil }(); err != nil { return err } params.SimulateStages = append(params.SimulateStages, paramsDotSimulateStagesVal) return nil }) }); err != nil { return err } if err := func() error { var failures []validate.FieldError for i, elem := range params.SimulateStages { if err := func() error { if err := elem.Validate(); err != nil { return err } return nil }(); err != nil { failures = append(failures, validate.FieldError{ Name: fmt.Sprintf("[%d]", i), Error: err, }) } } if len(failures) > 0 { return &validate.Error{Fields: failures} } return nil }(); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "simulate_stages", In: "query", Err: err, } } // Decode query: interpolate. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "interpolate", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotInterpolateVal bool if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToBool(val) if err != nil { return err } paramsDotInterpolateVal = c return nil }(); err != nil { return err } params.Interpolate.SetTo(paramsDotInterpolateVal) return nil }); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "interpolate", In: "query", Err: err, } } // Decode query: format. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "format", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotFormatVal PerformPredictionFormat if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToString(val) if err != nil { return err } paramsDotFormatVal = PerformPredictionFormat(c) return nil }(); err != nil { return err } params.Format.SetTo(paramsDotFormatVal) return nil }); err != nil { return err } if err := func() error { if value, ok := params.Format.Get(); ok { if err := func() error { if err := value.Validate(); err != nil { return err } return nil }(); err != nil { return err } } return nil }(); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "format", In: "query", Err: err, } } // Decode query: dataset. if err := func() error { cfg := uri.QueryParameterDecodingConfig{ Name: "dataset", Style: uri.QueryStyleForm, Explode: true, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { var paramsDotDatasetVal time.Time if err := func() error { val, err := d.DecodeValue() if err != nil { return err } c, err := conv.ToDateTime(val) if err != nil { return err } paramsDotDatasetVal = c return nil }(); err != nil { return err } params.Dataset.SetTo(paramsDotDatasetVal) return nil }); err != nil { return err } } return nil }(); err != nil { return params, &ogenerrors.DecodeParamError{ Name: "dataset", In: "query", Err: err, } } return params, nil }