Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ChristianSch/de9f92697dd19cc78c0a31b224e3359f to your computer and use it in GitHub Desktop.
Save ChristianSch/de9f92697dd19cc78c0a31b224e3359f to your computer and use it in GitHub Desktop.
oapi-codegen lufthansa
// Package go-lufthansa provides primitives to interact with the openapi HTTP API.
//
// Code generated by github.com/deepmap/oapi-codegen/v2 version v2.1.0 DO NOT EDIT.
package go-lufthansa
import (
"bytes"
"compress/gzip"
"context"
"encoding/base64"
"encoding/json"
"encoding/xml"
"errors"
"fmt"
"gopkg.in/yaml.v2"
"io"
"os"
"mime"
"mime/multipart"
"net/http"
"net/url"
"path"
"strings"
"time"
"github.com/oapi-codegen/runtime"
strictecho "github.com/oapi-codegen/runtime/strictmiddleware/echo"
strictgin "github.com/oapi-codegen/runtime/strictmiddleware/gin"
strictiris "github.com/oapi-codegen/runtime/strictmiddleware/iris"
strictnethttp "github.com/oapi-codegen/runtime/strictmiddleware/nethttp"
openapi_types "github.com/oapi-codegen/runtime/types"
"github.com/getkin/kin-openapi/openapi3"
"github.com/go-chi/chi/v5"
"github.com/labstack/echo/v4"
"github.com/gin-gonic/gin"
"github.com/gofiber/fiber/v2"
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/core/router"
"github.com/gorilla/mux"
)
const (
BearerScopes = "Bearer.Scopes"
)
// Defines values for MessageLevel.
const (
ERROR MessageLevel = "ERROR"
INFO MessageLevel = "INFO"
WARNING MessageLevel = "WARNING"
)
// Defines values for TimeMode.
const (
LT TimeMode = "LT"
UTC TimeMode = "UTC"
)
// AircraftType The fleet type identifier 3 characters, can contain letters and numbers.
type AircraftType = string
// Airline The airline code of the flight
type Airline = string
// Airport Airport represented by a 3 letter IATA airport code
type Airport = string
// DataElement A data element is an additional flight attribute as defined in SSIM, Chapter 2 dealing with a variety of characteristics, e.g.:
// * Traffic Restriction: 8
// * Codeshare - Duplicate leg cross-reference: 10
// * Codeshare - Operational leg cross-reference: 50
// * Departure Terminal: 99
// * Arrival Terminal: 98
// * Passenger Reservation Booking Designator (PRBD): 106
// * Meal service note: 109
// * Inflight Service: 503
// * Electronic Ticket Indicator: 505
// * etc.
type DataElement struct {
// EndLegSequenceNumber The sequence number of the leg where data element offpoint belongs to
EndLegSequenceNumber int`json:"endLegSequenceNumber"`
// Id The data element identifier - see SSIM, Chapter 2 for additional information
Id int`json:"id"`
// StartLegSequenceNumber The sequence number of the leg where data element boardpoint belongs to
StartLegSequenceNumber int`json:"startLegSequenceNumber"`
// Value The data element value itself
Value *string`json:"value,omitempty"`
}
// DaysOfOperation String representation of the days of operation (weekdays) in the format 'fffffff' with whitespace padding
type DaysOfOperation = string
// ErrorResponse defines model for ErrorResponse.
type ErrorResponse struct {
HttpStatus *int`json:"httpStatus,omitempty"`
Messages *[]Message`json:"messages,omitempty"`
TechnicalMessages *[]TechnicalMessage`json:"technicalMessages,omitempty"`
}
// FlightAggregate A FlightAggregate is a date-wise aggregation of otherwise single-dated flights. I.e. flights with identical attributes are aggregated into periods of operation.
type FlightAggregate struct {
// Airline The airline code of the flight
Airline *Airline`json:"airline,omitempty"`
// DataElements The data elements
DataElements *[]DataElement`json:"dataElements,omitempty"`
// FlightNumber The flight number
FlightNumber *FlightNumber`json:"flightNumber,omitempty"`
// Legs The legs
Legs *[]Leg`json:"legs,omitempty"`
// PeriodOfOperationLT The combination of start date, end date and a weekday pattern
PeriodOfOperationLT *PeriodOfOperation`json:"periodOfOperationLT,omitempty"`
// PeriodOfOperationUTC The combination of start date, end date and a weekday pattern
PeriodOfOperationUTC *PeriodOfOperation`json:"periodOfOperationUTC,omitempty"`
// Suffix Operational suffix. One character or empty string.
Suffix *Suffix`json:"suffix,omitempty"`
}
// FlightNumber The flight number
type FlightNumber = int
// FlightResponse defines model for FlightResponse.
type FlightResponse = []FlightAggregate
// Leg A flight's leg is a smaller part of an overall journey which involves landing at an intermediate airport
type Leg struct {
// AircraftArrivalTimeDateDiffLT The date difference between the flight LT date and the aircraft arrival time of this leg in days.
AircraftArrivalTimeDateDiffLT *int`json:"aircraftArrivalTimeDateDiffLT,omitempty"`
// AircraftArrivalTimeDateDiffUTC The date difference between the flight UTC date and the aircraftarrival time of this leg in days.
AircraftArrivalTimeDateDiffUTC *int`json:"aircraftArrivalTimeDateDiffUTC,omitempty"`
// AircraftArrivalTimeLT The LT Aircraft Scheduled Time of Arrival for this leg in minutes
AircraftArrivalTimeLT *int`json:"aircraftArrivalTimeLT,omitempty"`
// AircraftArrivalTimeUTC The UTC Aircraft Scheduled Time of Arrival for this leg in minutes
AircraftArrivalTimeUTC *int`json:"aircraftArrivalTimeUTC,omitempty"`
// AircraftArrivalTimeVariation The arrival time difference between the LT and UTC time in minutes.
AircraftArrivalTimeVariation *int`json:"aircraftArrivalTimeVariation,omitempty"`
// AircraftConfigurationVersion The Aircraft Configuration/Version.
AircraftConfigurationVersion *string`json:"aircraftConfigurationVersion,omitempty"`
// AircraftDepartureTimeDateDiffLT The date difference between the flight LT date and the aircraft departure time of this leg in days.
AircraftDepartureTimeDateDiffLT *int`json:"aircraftDepartureTimeDateDiffLT,omitempty"`
// AircraftDepartureTimeDateDiffUTC The date difference between the flight UTC date and the aircraft departure time of this leg in days.
AircraftDepartureTimeDateDiffUTC *int`json:"aircraftDepartureTimeDateDiffUTC,omitempty"`
// AircraftDepartureTimeLT The LT Aircraft Scheduled Time of Departure for this leg in minutes
AircraftDepartureTimeLT *int`json:"aircraftDepartureTimeLT,omitempty"`
// AircraftDepartureTimeUTC The UTC Aircraft Scheduled Time of Departure for this leg in minutes
AircraftDepartureTimeUTC *int`json:"aircraftDepartureTimeUTC,omitempty"`
// AircraftDepartureTimeVariation The departure time difference between the LT and UTC time in minutes.
AircraftDepartureTimeVariation *int`json:"aircraftDepartureTimeVariation,omitempty"`
// AircraftOwner The aircraft owner or administrative carrier (an airline code) of the leg
AircraftOwner *Airline`json:"aircraftOwner,omitempty"`
// AircraftType The fleet type identifier 3 characters, can contain letters and numbers.
AircraftType AircraftType`json:"aircraftType"`
// Destination The arrival airport code
Destination Airport`json:"destination"`
// Op Signals whether this is an operating or a marketing leg
Op *bool`json:"op,omitempty"`
// Origin The departure airport code
Origin Airport`json:"origin"`
// Registration Aircraft Registration Information
Registration *string`json:"registration,omitempty"`
// SequenceNumber The sequence number of this leg in the associated itinerary
SequenceNumber int`json:"sequenceNumber"`
// ServiceType The service type of the leg. An uppercase letter.
ServiceType ServiceType`json:"serviceType"`
}
// Message defines model for Message.
type Message struct {
// Level The level of messages retured by the REST API to the Client
Level *MessageLevel`json:"level,omitempty"`
// Text Message text
Text *string`json:"text,omitempty"`
}
// MessageLevel The level of messages retured by the REST API to the Client
type MessageLevel string
// PeriodOfOperation The combination of start date, end date and a weekday pattern
type PeriodOfOperation struct {
// DaysOfOperation String representation of the days of operation (weekdays) in the format 'fffffff' with whitespace padding
DaysOfOperation DaysOfOperation`json:"daysOfOperation"`
// EndDate The start date of this period in the format 'DDMMMYY'
EndDate SSIMDate`json:"endDate"`
// StartDate The start date of this period in the format 'DDMMMYY'
StartDate SSIMDate`json:"startDate"`
}
// SSIMDate A date represented in the format 'DDMMMYY'
type SSIMDate = string
// ServiceType Service type identifying whether the flight is a passenger or cargo flight (or something else). An uppercase letter.
type ServiceType = string
// Suffix Operational suffix. One character or empty string.
type Suffix = string
// TechnicalMessage defines model for TechnicalMessage.
type TechnicalMessage struct {
// Text Message text
Text *string`json:"text,omitempty"`
}
// TimeMode The intended time mode. Either Universal Time Coordinated (UTC) or Local Time (LT)
type TimeMode string
// AircraftTypes defines model for aircraftTypes.
type AircraftTypes = []AircraftType
// Airlines defines model for airlines.
type Airlines = []Airline
// Destination Airport represented by a 3 letter IATA airport code
type Destination = Airport
// EndDate A date represented in the format 'DDMMMYY'
type EndDate = SSIMDate
// FlightNumberRanges defines model for flightNumberRanges.
type FlightNumberRanges = string
// Origin Airport represented by a 3 letter IATA airport code
type Origin = Airport
// StartDate A date represented in the format 'DDMMMYY'
type StartDate = SSIMDate
// GetFlightschedulesParams defines parameters for GetFlightschedules.
type GetFlightschedulesParams struct {
// Airlines The list of airline codes
Airlines Airlines`form:"airlines" json:"airlines"`
// FlightNumberRanges The flight number range filter string. e.g.: '-100, 200, 100-200, 300-'
FlightNumberRanges *FlightNumberRanges`form:"flightNumberRanges,omitempty" json:"flightNumberRanges,omitempty"`
// StartDate The period start date. SSIM date format DDMMMYY
StartDate StartDate`form:"startDate" json:"startDate"`
// EndDate The period end date. SSIM date format DDMMMYY
EndDate EndDate`form:"endDate" json:"endDate"`
// DaysOfOperation The days of operation, i.e. the days of the week. Whitespace padded to 7 chars. E.g.: ' 34 6 '
DaysOfOperation DaysOfOperation`form:"daysOfOperation" json:"daysOfOperation"`
// TimeMode The time mode of the period of operations
TimeMode TimeMode`form:"timeMode" json:"timeMode"`
// Origin Search for flights departing from this station. 3 letter IATA airport code.
Origin *Origin`form:"origin,omitempty" json:"origin,omitempty"`
// Destination Search for flights arriving at this station. 3 letter IATA airport code.
Destination *Destination`form:"destination,omitempty" json:"destination,omitempty"`
// AircraftTypes The list of aircraft types
AircraftTypes *AircraftTypes`form:"aircraftTypes,omitempty" json:"aircraftTypes,omitempty"`
}
// GetFlightschedulesCargoParams defines parameters for GetFlightschedulesCargo.
type GetFlightschedulesCargoParams struct {
// Airlines The list of airline codes
Airlines Airlines`form:"airlines" json:"airlines"`
// FlightNumberRanges The flight number range filter string. e.g.: '-100, 200, 100-200, 300-'
FlightNumberRanges *FlightNumberRanges`form:"flightNumberRanges,omitempty" json:"flightNumberRanges,omitempty"`
// StartDate The period start date. SSIM date format DDMMMYY
StartDate StartDate`form:"startDate" json:"startDate"`
// EndDate The period end date. SSIM date format DDMMMYY
EndDate EndDate`form:"endDate" json:"endDate"`
// DaysOfOperation The days of operation, i.e. the days of the week. Whitespace padded to 7 chars. E.g.: ' 34 6 '
DaysOfOperation DaysOfOperation`form:"daysOfOperation" json:"daysOfOperation"`
// TimeMode The time mode of the period of operations
TimeMode TimeMode`form:"timeMode" json:"timeMode"`
// Origin Search for flights departing from this station. 3 letter IATA airport code.
Origin *Origin`form:"origin,omitempty" json:"origin,omitempty"`
// Destination Search for flights arriving at this station. 3 letter IATA airport code.
Destination *Destination`form:"destination,omitempty" json:"destination,omitempty"`
// AircraftTypes The list of aircraft types
AircraftTypes *AircraftTypes`form:"aircraftTypes,omitempty" json:"aircraftTypes,omitempty"`
}
// GetFlightschedulesPassengerParams defines parameters for GetFlightschedulesPassenger.
type GetFlightschedulesPassengerParams struct {
// Airlines The list of airline codes
Airlines Airlines`form:"airlines" json:"airlines"`
// FlightNumberRanges The flight number range filter string. e.g.: '-100, 200, 100-200, 300-'
FlightNumberRanges *FlightNumberRanges`form:"flightNumberRanges,omitempty" json:"flightNumberRanges,omitempty"`
// StartDate The period start date. SSIM date format DDMMMYY
StartDate StartDate`form:"startDate" json:"startDate"`
// EndDate The period end date. SSIM date format DDMMMYY
EndDate EndDate`form:"endDate" json:"endDate"`
// DaysOfOperation The days of operation, i.e. the days of the week. Whitespace padded to 7 chars. E.g.: ' 34 6 '
DaysOfOperation DaysOfOperation`form:"daysOfOperation" json:"daysOfOperation"`
// TimeMode The time mode of the period of operations
TimeMode TimeMode`form:"timeMode" json:"timeMode"`
// Origin Search for flights departing from this station. 3 letter IATA airport code.
Origin *Origin`form:"origin,omitempty" json:"origin,omitempty"`
// Destination Search for flights arriving at this station. 3 letter IATA airport code.
Destination *Destination`form:"destination,omitempty" json:"destination,omitempty"`
// AircraftTypes The list of aircraft types
AircraftTypes *AircraftTypes`form:"aircraftTypes,omitempty" json:"aircraftTypes,omitempty"`
}
// RequestEditorFn is the function signature for the RequestEditor callback function
type RequestEditorFn func(ctx context.Context, req *http.Request) error
// Doer performs HTTP requests.
//
// The standard http.Client implements this interface.
type HttpRequestDoer interface {
Do(req *http.Request) (*http.Response, error)
}
// Client which conforms to the OpenAPI3 specification for this service.
type Client struct {
// The endpoint of the server conforming to this interface, with scheme,
// https://api.deepmap.com for example. This can contain a path relative
// to the server, such as https://api.deepmap.com/dev-test, and all the
// paths in the swagger spec will be appended to the server.
Server string
// Doer for performing requests, typically a *http.Client with any
// customized settings, such as certificate chains.
Client HttpRequestDoer
// A list of callbacks for modifying requests which are generated before sending over
// the network.
RequestEditors []RequestEditorFn
}
// ClientOption allows setting custom parameters during construction
type ClientOption func(*Client) error
// Creates a new Client, with reasonable defaults
func NewClient(server string, opts ...ClientOption) (*Client, error) {
// create a client with sane default values
client := Client{
Server: server,
}
// mutate client and add all optional params
for _, o := range opts {
if err := o(&client); err != nil {
return nil, err
}
}
// ensure the server URL always has a trailing slash
if !strings.HasSuffix(client.Server, "/") {
client.Server += "/"
}
// create httpClient, if not already present
if client.Client == nil {
client.Client = &http.Client{}
}
return &client, nil
}
// WithHTTPClient allows overriding the default Doer, which is
// automatically created using http.Client. This is useful for tests.
func WithHTTPClient(doer HttpRequestDoer) ClientOption {
return func(c *Client) error {
c.Client = doer
return nil
}
}
// WithRequestEditorFn allows setting up a callback function, which will be
// called right before sending the request. This can be used to mutate the request.
func WithRequestEditorFn(fn RequestEditorFn) ClientOption {
return func(c *Client) error {
c.RequestEditors = append(c.RequestEditors, fn)
return nil
}
}
// The interface specification for the client above.
type ClientInterface interface {
// GetFlightschedules request
GetFlightschedules(ctx context.Context, params *GetFlightschedulesParams, reqEditors... RequestEditorFn) (*http.Response, error)
// GetFlightschedulesCargo request
GetFlightschedulesCargo(ctx context.Context, params *GetFlightschedulesCargoParams, reqEditors... RequestEditorFn) (*http.Response, error)
// GetFlightschedulesPassenger request
GetFlightschedulesPassenger(ctx context.Context, params *GetFlightschedulesPassengerParams, reqEditors... RequestEditorFn) (*http.Response, error)
}
func (c *Client) GetFlightschedules(ctx context.Context, params *GetFlightschedulesParams, reqEditors... RequestEditorFn) (*http.Response, error) {
req, err := NewGetFlightschedulesRequest(c.Server, params)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
if err := c.applyEditors(ctx, req, reqEditors); err != nil {
return nil, err
}
return c.Client.Do(req)
}
func (c *Client) GetFlightschedulesCargo(ctx context.Context, params *GetFlightschedulesCargoParams, reqEditors... RequestEditorFn) (*http.Response, error) {
req, err := NewGetFlightschedulesCargoRequest(c.Server, params)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
if err := c.applyEditors(ctx, req, reqEditors); err != nil {
return nil, err
}
return c.Client.Do(req)
}
func (c *Client) GetFlightschedulesPassenger(ctx context.Context, params *GetFlightschedulesPassengerParams, reqEditors... RequestEditorFn) (*http.Response, error) {
req, err := NewGetFlightschedulesPassengerRequest(c.Server, params)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
if err := c.applyEditors(ctx, req, reqEditors); err != nil {
return nil, err
}
return c.Client.Do(req)
}
// NewGetFlightschedulesRequest generates requests for GetFlightschedules
func NewGetFlightschedulesRequest(server string, params *GetFlightschedulesParams) (*http.Request, error) {
var err error
serverURL, err := url.Parse(server)
if err != nil {
return nil, err
}
operationPath := fmt.Sprintf("/flightschedules")
if operationPath[0] == '/' {
operationPath = "." + operationPath
}
queryURL, err := serverURL.Parse(operationPath)
if err != nil {
return nil, err
}
if params != nil {
queryValues := queryURL.Query()
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "airlines", runtime.ParamLocationQuery, params.Airlines); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.FlightNumberRanges != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "flightNumberRanges", runtime.ParamLocationQuery, *params.FlightNumberRanges); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "startDate", runtime.ParamLocationQuery, params.StartDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "endDate", runtime.ParamLocationQuery, params.EndDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "daysOfOperation", runtime.ParamLocationQuery, params.DaysOfOperation); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "timeMode", runtime.ParamLocationQuery, params.TimeMode); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.Origin != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "origin", runtime.ParamLocationQuery, *params.Origin); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.Destination != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "destination", runtime.ParamLocationQuery, *params.Destination); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.AircraftTypes != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "aircraftTypes", runtime.ParamLocationQuery, *params.AircraftTypes); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
queryURL.RawQuery = queryValues.Encode()
}
req, err := http.NewRequest("GET", queryURL.String(), nil)
if err != nil {
return nil, err
}
return req, nil
}
// NewGetFlightschedulesCargoRequest generates requests for GetFlightschedulesCargo
func NewGetFlightschedulesCargoRequest(server string, params *GetFlightschedulesCargoParams) (*http.Request, error) {
var err error
serverURL, err := url.Parse(server)
if err != nil {
return nil, err
}
operationPath := fmt.Sprintf("/flightschedules/cargo")
if operationPath[0] == '/' {
operationPath = "." + operationPath
}
queryURL, err := serverURL.Parse(operationPath)
if err != nil {
return nil, err
}
if params != nil {
queryValues := queryURL.Query()
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "airlines", runtime.ParamLocationQuery, params.Airlines); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.FlightNumberRanges != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "flightNumberRanges", runtime.ParamLocationQuery, *params.FlightNumberRanges); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "startDate", runtime.ParamLocationQuery, params.StartDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "endDate", runtime.ParamLocationQuery, params.EndDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "daysOfOperation", runtime.ParamLocationQuery, params.DaysOfOperation); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "timeMode", runtime.ParamLocationQuery, params.TimeMode); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.Origin != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "origin", runtime.ParamLocationQuery, *params.Origin); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.Destination != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "destination", runtime.ParamLocationQuery, *params.Destination); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.AircraftTypes != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "aircraftTypes", runtime.ParamLocationQuery, *params.AircraftTypes); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
queryURL.RawQuery = queryValues.Encode()
}
req, err := http.NewRequest("GET", queryURL.String(), nil)
if err != nil {
return nil, err
}
return req, nil
}
// NewGetFlightschedulesPassengerRequest generates requests for GetFlightschedulesPassenger
func NewGetFlightschedulesPassengerRequest(server string, params *GetFlightschedulesPassengerParams) (*http.Request, error) {
var err error
serverURL, err := url.Parse(server)
if err != nil {
return nil, err
}
operationPath := fmt.Sprintf("/flightschedules/passenger")
if operationPath[0] == '/' {
operationPath = "." + operationPath
}
queryURL, err := serverURL.Parse(operationPath)
if err != nil {
return nil, err
}
if params != nil {
queryValues := queryURL.Query()
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "airlines", runtime.ParamLocationQuery, params.Airlines); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.FlightNumberRanges != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "flightNumberRanges", runtime.ParamLocationQuery, *params.FlightNumberRanges); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "startDate", runtime.ParamLocationQuery, params.StartDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "endDate", runtime.ParamLocationQuery, params.EndDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "daysOfOperation", runtime.ParamLocationQuery, params.DaysOfOperation); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "timeMode", runtime.ParamLocationQuery, params.TimeMode); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.Origin != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "origin", runtime.ParamLocationQuery, *params.Origin); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.Destination != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "destination", runtime.ParamLocationQuery, *params.Destination); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.AircraftTypes != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "aircraftTypes", runtime.ParamLocationQuery, *params.AircraftTypes); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
queryURL.RawQuery = queryValues.Encode()
}
req, err := http.NewRequest("GET", queryURL.String(), nil)
if err != nil {
return nil, err
}
return req, nil
}
func (c *Client) applyEditors(ctx context.Context, req *http.Request, additionalEditors []RequestEditorFn) error {
for _, r := range c.RequestEditors {
if err := r(ctx, req); err != nil {
return err
}
}
for _, r := range additionalEditors {
if err := r(ctx, req); err != nil {
return err
}
}
return nil
}
// ClientWithResponses builds on ClientInterface to offer response payloads
type ClientWithResponses struct {
ClientInterface
}
// NewClientWithResponses creates a new ClientWithResponses, which wraps
// Client with return type handling
func NewClientWithResponses(server string, opts ...ClientOption) (*ClientWithResponses, error) {
client, err := NewClient(server, opts...)
if err != nil {
return nil, err
}
return &ClientWithResponses{client}, nil
}
// WithBaseURL overrides the baseURL.
func WithBaseURL(baseURL string) ClientOption {
return func(c *Client) error {
newBaseURL, err := url.Parse(baseURL)
if err != nil {
return err
}
c.Server = newBaseURL.String()
return nil
}
}
// ClientWithResponsesInterface is the interface specification for the client with responses above.
type ClientWithResponsesInterface interface {
// GetFlightschedulesWithResponse request
GetFlightschedulesWithResponse(ctx context.Context, params *GetFlightschedulesParams, reqEditors... RequestEditorFn) (*GetFlightschedulesResponse, error)
// GetFlightschedulesCargoWithResponse request
GetFlightschedulesCargoWithResponse(ctx context.Context, params *GetFlightschedulesCargoParams, reqEditors... RequestEditorFn) (*GetFlightschedulesCargoResponse, error)
// GetFlightschedulesPassengerWithResponse request
GetFlightschedulesPassengerWithResponse(ctx context.Context, params *GetFlightschedulesPassengerParams, reqEditors... RequestEditorFn) (*GetFlightschedulesPassengerResponse, error)
}
type GetFlightschedulesResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *FlightResponse
JSON206 *FlightResponse
JSON400 *ErrorResponse
JSON401 *ErrorResponse
JSON404 *ErrorResponse
JSON500 *ErrorResponse
}
// Status returns HTTPResponse.Status
func (r GetFlightschedulesResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r GetFlightschedulesResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
type GetFlightschedulesCargoResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *FlightResponse
JSON206 *FlightResponse
JSON400 *ErrorResponse
JSON401 *ErrorResponse
JSON404 *ErrorResponse
JSON500 *ErrorResponse
}
// Status returns HTTPResponse.Status
func (r GetFlightschedulesCargoResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r GetFlightschedulesCargoResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
type GetFlightschedulesPassengerResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *FlightResponse
JSON206 *FlightResponse
JSON400 *ErrorResponse
JSON401 *ErrorResponse
JSON404 *ErrorResponse
JSON500 *ErrorResponse
}
// Status returns HTTPResponse.Status
func (r GetFlightschedulesPassengerResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r GetFlightschedulesPassengerResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
// GetFlightschedulesWithResponse request returning *GetFlightschedulesResponse
func (c *ClientWithResponses) GetFlightschedulesWithResponse(ctx context.Context, params *GetFlightschedulesParams, reqEditors... RequestEditorFn) (*GetFlightschedulesResponse, error){
rsp, err := c.GetFlightschedules(ctx, params, reqEditors...)
if err != nil {
return nil, err
}
return ParseGetFlightschedulesResponse(rsp)
}
// GetFlightschedulesCargoWithResponse request returning *GetFlightschedulesCargoResponse
func (c *ClientWithResponses) GetFlightschedulesCargoWithResponse(ctx context.Context, params *GetFlightschedulesCargoParams, reqEditors... RequestEditorFn) (*GetFlightschedulesCargoResponse, error){
rsp, err := c.GetFlightschedulesCargo(ctx, params, reqEditors...)
if err != nil {
return nil, err
}
return ParseGetFlightschedulesCargoResponse(rsp)
}
// GetFlightschedulesPassengerWithResponse request returning *GetFlightschedulesPassengerResponse
func (c *ClientWithResponses) GetFlightschedulesPassengerWithResponse(ctx context.Context, params *GetFlightschedulesPassengerParams, reqEditors... RequestEditorFn) (*GetFlightschedulesPassengerResponse, error){
rsp, err := c.GetFlightschedulesPassenger(ctx, params, reqEditors...)
if err != nil {
return nil, err
}
return ParseGetFlightschedulesPassengerResponse(rsp)
}
// ParseGetFlightschedulesResponse parses an HTTP response from a GetFlightschedulesWithResponse call
func ParseGetFlightschedulesResponse(rsp *http.Response) (*GetFlightschedulesResponse, error) {
bodyBytes, err := io.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &GetFlightschedulesResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON200 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 206:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON206 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON400 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON401 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON404 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON500 = &dest
}
return response, nil
}
// ParseGetFlightschedulesCargoResponse parses an HTTP response from a GetFlightschedulesCargoWithResponse call
func ParseGetFlightschedulesCargoResponse(rsp *http.Response) (*GetFlightschedulesCargoResponse, error) {
bodyBytes, err := io.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &GetFlightschedulesCargoResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON200 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 206:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON206 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON400 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON401 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON404 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON500 = &dest
}
return response, nil
}
// ParseGetFlightschedulesPassengerResponse parses an HTTP response from a GetFlightschedulesPassengerWithResponse call
func ParseGetFlightschedulesPassengerResponse(rsp *http.Response) (*GetFlightschedulesPassengerResponse, error) {
bodyBytes, err := io.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &GetFlightschedulesPassengerResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON200 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 206:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON206 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON400 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON401 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON404 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON500 = &dest
}
return response, nil
}
// ServerInterface represents all server handlers.
type ServerInterface interface {
// Search all flights
// (GET /flightschedules)
GetFlightschedules(ctx echo.Context, params GetFlightschedulesParams) error
// Returns cargo flights
// (GET /flightschedules/cargo)
GetFlightschedulesCargo(ctx echo.Context, params GetFlightschedulesCargoParams) error
// Returns passenger flights
// (GET /flightschedules/passenger)
GetFlightschedulesPassenger(ctx echo.Context, params GetFlightschedulesPassengerParams) error
}
// ServerInterfaceWrapper converts echo contexts to parameters.
type ServerInterfaceWrapper struct {
Handler ServerInterface
}
// GetFlightschedules converts echo context to params.
func (w *ServerInterfaceWrapper) GetFlightschedules (ctx echo.Context) error {
var err error
ctx.Set(BearerScopes, []string{})
// Parameter object where we will unmarshal all parameters from the context
var params GetFlightschedulesParams
// ------------- Required query parameter "airlines" -------------
err = runtime.BindQueryParameter("form", true, true, "airlines", ctx.QueryParams(), &params.Airlines)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter airlines: %s", err))
}
// ------------- Optional query parameter "flightNumberRanges" -------------
err = runtime.BindQueryParameter("form", true, false, "flightNumberRanges", ctx.QueryParams(), &params.FlightNumberRanges)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter flightNumberRanges: %s", err))
}
// ------------- Required query parameter "startDate" -------------
err = runtime.BindQueryParameter("form", true, true, "startDate", ctx.QueryParams(), &params.StartDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter startDate: %s", err))
}
// ------------- Required query parameter "endDate" -------------
err = runtime.BindQueryParameter("form", true, true, "endDate", ctx.QueryParams(), &params.EndDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter endDate: %s", err))
}
// ------------- Required query parameter "daysOfOperation" -------------
err = runtime.BindQueryParameter("form", true, true, "daysOfOperation", ctx.QueryParams(), &params.DaysOfOperation)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter daysOfOperation: %s", err))
}
// ------------- Required query parameter "timeMode" -------------
err = runtime.BindQueryParameter("form", true, true, "timeMode", ctx.QueryParams(), &params.TimeMode)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter timeMode: %s", err))
}
// ------------- Optional query parameter "origin" -------------
err = runtime.BindQueryParameter("form", true, false, "origin", ctx.QueryParams(), &params.Origin)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter origin: %s", err))
}
// ------------- Optional query parameter "destination" -------------
err = runtime.BindQueryParameter("form", true, false, "destination", ctx.QueryParams(), &params.Destination)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter destination: %s", err))
}
// ------------- Optional query parameter "aircraftTypes" -------------
err = runtime.BindQueryParameter("form", true, false, "aircraftTypes", ctx.QueryParams(), &params.AircraftTypes)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter aircraftTypes: %s", err))
}
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.GetFlightschedules(ctx, params)
return err
}
// GetFlightschedulesCargo converts echo context to params.
func (w *ServerInterfaceWrapper) GetFlightschedulesCargo (ctx echo.Context) error {
var err error
ctx.Set(BearerScopes, []string{})
// Parameter object where we will unmarshal all parameters from the context
var params GetFlightschedulesCargoParams
// ------------- Required query parameter "airlines" -------------
err = runtime.BindQueryParameter("form", true, true, "airlines", ctx.QueryParams(), &params.Airlines)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter airlines: %s", err))
}
// ------------- Optional query parameter "flightNumberRanges" -------------
err = runtime.BindQueryParameter("form", true, false, "flightNumberRanges", ctx.QueryParams(), &params.FlightNumberRanges)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter flightNumberRanges: %s", err))
}
// ------------- Required query parameter "startDate" -------------
err = runtime.BindQueryParameter("form", true, true, "startDate", ctx.QueryParams(), &params.StartDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter startDate: %s", err))
}
// ------------- Required query parameter "endDate" -------------
err = runtime.BindQueryParameter("form", true, true, "endDate", ctx.QueryParams(), &params.EndDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter endDate: %s", err))
}
// ------------- Required query parameter "daysOfOperation" -------------
err = runtime.BindQueryParameter("form", true, true, "daysOfOperation", ctx.QueryParams(), &params.DaysOfOperation)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter daysOfOperation: %s", err))
}
// ------------- Required query parameter "timeMode" -------------
err = runtime.BindQueryParameter("form", true, true, "timeMode", ctx.QueryParams(), &params.TimeMode)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter timeMode: %s", err))
}
// ------------- Optional query parameter "origin" -------------
err = runtime.BindQueryParameter("form", true, false, "origin", ctx.QueryParams(), &params.Origin)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter origin: %s", err))
}
// ------------- Optional query parameter "destination" -------------
err = runtime.BindQueryParameter("form", true, false, "destination", ctx.QueryParams(), &params.Destination)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter destination: %s", err))
}
// ------------- Optional query parameter "aircraftTypes" -------------
err = runtime.BindQueryParameter("form", true, false, "aircraftTypes", ctx.QueryParams(), &params.AircraftTypes)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter aircraftTypes: %s", err))
}
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.GetFlightschedulesCargo(ctx, params)
return err
}
// GetFlightschedulesPassenger converts echo context to params.
func (w *ServerInterfaceWrapper) GetFlightschedulesPassenger (ctx echo.Context) error {
var err error
ctx.Set(BearerScopes, []string{})
// Parameter object where we will unmarshal all parameters from the context
var params GetFlightschedulesPassengerParams
// ------------- Required query parameter "airlines" -------------
err = runtime.BindQueryParameter("form", true, true, "airlines", ctx.QueryParams(), &params.Airlines)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter airlines: %s", err))
}
// ------------- Optional query parameter "flightNumberRanges" -------------
err = runtime.BindQueryParameter("form", true, false, "flightNumberRanges", ctx.QueryParams(), &params.FlightNumberRanges)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter flightNumberRanges: %s", err))
}
// ------------- Required query parameter "startDate" -------------
err = runtime.BindQueryParameter("form", true, true, "startDate", ctx.QueryParams(), &params.StartDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter startDate: %s", err))
}
// ------------- Required query parameter "endDate" -------------
err = runtime.BindQueryParameter("form", true, true, "endDate", ctx.QueryParams(), &params.EndDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter endDate: %s", err))
}
// ------------- Required query parameter "daysOfOperation" -------------
err = runtime.BindQueryParameter("form", true, true, "daysOfOperation", ctx.QueryParams(), &params.DaysOfOperation)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter daysOfOperation: %s", err))
}
// ------------- Required query parameter "timeMode" -------------
err = runtime.BindQueryParameter("form", true, true, "timeMode", ctx.QueryParams(), &params.TimeMode)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter timeMode: %s", err))
}
// ------------- Optional query parameter "origin" -------------
err = runtime.BindQueryParameter("form", true, false, "origin", ctx.QueryParams(), &params.Origin)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter origin: %s", err))
}
// ------------- Optional query parameter "destination" -------------
err = runtime.BindQueryParameter("form", true, false, "destination", ctx.QueryParams(), &params.Destination)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter destination: %s", err))
}
// ------------- Optional query parameter "aircraftTypes" -------------
err = runtime.BindQueryParameter("form", true, false, "aircraftTypes", ctx.QueryParams(), &params.AircraftTypes)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter aircraftTypes: %s", err))
}
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.GetFlightschedulesPassenger(ctx, params)
return err
}
// This is a simple interface which specifies echo.Route addition functions which
// are present on both echo.Echo and echo.Group, since we want to allow using
// either of them for path registration
type EchoRouter interface {
CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
}
// RegisterHandlers adds each server route to the EchoRouter.
func RegisterHandlers(router EchoRouter, si ServerInterface) {
RegisterHandlersWithBaseURL(router, si, "")
}
// Registers handlers, and prepends BaseURL to the paths, so that the paths
// can be served under a prefix.
func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
wrapper := ServerInterfaceWrapper{
Handler: si,
}
router.GET(baseURL + "/flightschedules", wrapper.GetFlightschedules)
router.GET(baseURL + "/flightschedules/cargo", wrapper.GetFlightschedulesCargo)
router.GET(baseURL + "/flightschedules/passenger", wrapper.GetFlightschedulesPassenger)
}
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"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",
}
// GetSwagger returns the content of the embedded swagger specification file
// or error if failed to decode
func decodeSpec() ([]byte, error) {
zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
if err != nil {
return nil, fmt.Errorf("error base64 decoding spec: %w", err)
}
zr, err := gzip.NewReader(bytes.NewReader(zipped))
if err != nil {
return nil, fmt.Errorf("error decompressing spec: %w", err)
}
var buf bytes.Buffer
_, err = buf.ReadFrom(zr)
if err != nil {
return nil, fmt.Errorf("error decompressing spec: %w", err)
}
return buf.Bytes(), nil
}
var rawSpec = decodeSpecCached()
// a naive cached of a decoded swagger spec
func decodeSpecCached() func() ([]byte, error) {
data, err := decodeSpec()
return func() ([]byte, error) {
return data, err
}
}
// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
res := make(map[string]func() ([]byte, error))
if len(pathToFile) > 0 {
res[pathToFile] = rawSpec
}
return res
}
// GetSwagger returns the Swagger specification corresponding to the generated code
// in this file. The external references of Swagger specification are resolved.
// The logic of resolving external references is tightly connected to "import-mapping" feature.
// Externally referenced files must be embedded in the corresponding golang packages.
// Urls can be supported but this task was out of the scope.
func GetSwagger() (swagger *openapi3.T, err error) {
resolvePath := PathToRawSpec("")
loader := openapi3.NewLoader()
loader.IsExternalRefsAllowed = true
loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
pathToFile := url.String()
pathToFile = path.Clean(pathToFile)
getSpec, ok := resolvePath[pathToFile]
if !ok {
err1 := fmt.Errorf("path not found: %s", pathToFile)
return nil, err1
}
return getSpec()
}
var specData []byte
specData, err = rawSpec()
if err != nil {
return
}
swagger, err = loader.LoadFromData(specData)
if err != nil {
return
}
return
}
: go-lufthansa.go:4:9: expected 'IDENT', found 'go'
~/d/go-lufthansa >>> (base) 256ms  Mon Mar 4 13:58:50 2024
~/d/go-lufthansa >>> oapi-codegen -package go-lufthansa swagger-spec-21516.json > lufthansa.gen.go
error generating code: error formatting Go code // Package go-lufthansa provides primitives to interact with the openapi HTTP API.
//
// Code generated by github.com/deepmap/oapi-codegen/v2 version v2.1.0 DO NOT EDIT.
package go-lufthansa
import (
"bytes"
"compress/gzip"
"context"
"encoding/base64"
"encoding/json"
"encoding/xml"
"errors"
"fmt"
"gopkg.in/yaml.v2"
"io"
"os"
"mime"
"mime/multipart"
"net/http"
"net/url"
"path"
"strings"
"time"
"github.com/oapi-codegen/runtime"
strictecho "github.com/oapi-codegen/runtime/strictmiddleware/echo"
strictgin "github.com/oapi-codegen/runtime/strictmiddleware/gin"
strictiris "github.com/oapi-codegen/runtime/strictmiddleware/iris"
strictnethttp "github.com/oapi-codegen/runtime/strictmiddleware/nethttp"
openapi_types "github.com/oapi-codegen/runtime/types"
"github.com/getkin/kin-openapi/openapi3"
"github.com/go-chi/chi/v5"
"github.com/labstack/echo/v4"
"github.com/gin-gonic/gin"
"github.com/gofiber/fiber/v2"
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/core/router"
"github.com/gorilla/mux"
)
const (
BearerScopes = "Bearer.Scopes"
)
// Defines values for MessageLevel.
const (
ERROR MessageLevel = "ERROR"
INFO MessageLevel = "INFO"
WARNING MessageLevel = "WARNING"
)
// Defines values for TimeMode.
const (
LT TimeMode = "LT"
UTC TimeMode = "UTC"
)
// AircraftType The fleet type identifier 3 characters, can contain letters and numbers.
type AircraftType = string
// Airline The airline code of the flight
type Airline = string
// Airport Airport represented by a 3 letter IATA airport code
type Airport = string
// DataElement A data element is an additional flight attribute as defined in SSIM, Chapter 2 dealing with a variety of characteristics, e.g.:
// * Traffic Restriction: 8
// * Codeshare - Duplicate leg cross-reference: 10
// * Codeshare - Operational leg cross-reference: 50
// * Departure Terminal: 99
// * Arrival Terminal: 98
// * Passenger Reservation Booking Designator (PRBD): 106
// * Meal service note: 109
// * Inflight Service: 503
// * Electronic Ticket Indicator: 505
// * etc.
type DataElement struct {
// EndLegSequenceNumber The sequence number of the leg where data element offpoint belongs to
EndLegSequenceNumber int`json:"endLegSequenceNumber"`
// Id The data element identifier - see SSIM, Chapter 2 for additional information
Id int`json:"id"`
// StartLegSequenceNumber The sequence number of the leg where data element boardpoint belongs to
StartLegSequenceNumber int`json:"startLegSequenceNumber"`
// Value The data element value itself
Value *string`json:"value,omitempty"`
}
// DaysOfOperation String representation of the days of operation (weekdays) in the format 'fffffff' with whitespace padding
type DaysOfOperation = string
// ErrorResponse defines model for ErrorResponse.
type ErrorResponse struct {
HttpStatus *int`json:"httpStatus,omitempty"`
Messages *[]Message`json:"messages,omitempty"`
TechnicalMessages *[]TechnicalMessage`json:"technicalMessages,omitempty"`
}
// FlightAggregate A FlightAggregate is a date-wise aggregation of otherwise single-dated flights. I.e. flights with identical attributes are aggregated into periods of operation.
type FlightAggregate struct {
// Airline The airline code of the flight
Airline *Airline`json:"airline,omitempty"`
// DataElements The data elements
DataElements *[]DataElement`json:"dataElements,omitempty"`
// FlightNumber The flight number
FlightNumber *FlightNumber`json:"flightNumber,omitempty"`
// Legs The legs
Legs *[]Leg`json:"legs,omitempty"`
// PeriodOfOperationLT The combination of start date, end date and a weekday pattern
PeriodOfOperationLT *PeriodOfOperation`json:"periodOfOperationLT,omitempty"`
// PeriodOfOperationUTC The combination of start date, end date and a weekday pattern
PeriodOfOperationUTC *PeriodOfOperation`json:"periodOfOperationUTC,omitempty"`
// Suffix Operational suffix. One character or empty string.
Suffix *Suffix`json:"suffix,omitempty"`
}
// FlightNumber The flight number
type FlightNumber = int
// FlightResponse defines model for FlightResponse.
type FlightResponse = []FlightAggregate
// Leg A flight's leg is a smaller part of an overall journey which involves landing at an intermediate airport
type Leg struct {
// AircraftArrivalTimeDateDiffLT The date difference between the flight LT date and the aircraft arrival time of this leg in days.
AircraftArrivalTimeDateDiffLT *int`json:"aircraftArrivalTimeDateDiffLT,omitempty"`
// AircraftArrivalTimeDateDiffUTC The date difference between the flight UTC date and the aircraftarrival time of this leg in days.
AircraftArrivalTimeDateDiffUTC *int`json:"aircraftArrivalTimeDateDiffUTC,omitempty"`
// AircraftArrivalTimeLT The LT Aircraft Scheduled Time of Arrival for this leg in minutes
AircraftArrivalTimeLT *int`json:"aircraftArrivalTimeLT,omitempty"`
// AircraftArrivalTimeUTC The UTC Aircraft Scheduled Time of Arrival for this leg in minutes
AircraftArrivalTimeUTC *int`json:"aircraftArrivalTimeUTC,omitempty"`
// AircraftArrivalTimeVariation The arrival time difference between the LT and UTC time in minutes.
AircraftArrivalTimeVariation *int`json:"aircraftArrivalTimeVariation,omitempty"`
// AircraftConfigurationVersion The Aircraft Configuration/Version.
AircraftConfigurationVersion *string`json:"aircraftConfigurationVersion,omitempty"`
// AircraftDepartureTimeDateDiffLT The date difference between the flight LT date and the aircraft departure time of this leg in days.
AircraftDepartureTimeDateDiffLT *int`json:"aircraftDepartureTimeDateDiffLT,omitempty"`
// AircraftDepartureTimeDateDiffUTC The date difference between the flight UTC date and the aircraft departure time of this leg in days.
AircraftDepartureTimeDateDiffUTC *int`json:"aircraftDepartureTimeDateDiffUTC,omitempty"`
// AircraftDepartureTimeLT The LT Aircraft Scheduled Time of Departure for this leg in minutes
AircraftDepartureTimeLT *int`json:"aircraftDepartureTimeLT,omitempty"`
// AircraftDepartureTimeUTC The UTC Aircraft Scheduled Time of Departure for this leg in minutes
AircraftDepartureTimeUTC *int`json:"aircraftDepartureTimeUTC,omitempty"`
// AircraftDepartureTimeVariation The departure time difference between the LT and UTC time in minutes.
AircraftDepartureTimeVariation *int`json:"aircraftDepartureTimeVariation,omitempty"`
// AircraftOwner The aircraft owner or administrative carrier (an airline code) of the leg
AircraftOwner *Airline`json:"aircraftOwner,omitempty"`
// AircraftType The fleet type identifier 3 characters, can contain letters and numbers.
AircraftType AircraftType`json:"aircraftType"`
// Destination The arrival airport code
Destination Airport`json:"destination"`
// Op Signals whether this is an operating or a marketing leg
Op *bool`json:"op,omitempty"`
// Origin The departure airport code
Origin Airport`json:"origin"`
// Registration Aircraft Registration Information
Registration *string`json:"registration,omitempty"`
// SequenceNumber The sequence number of this leg in the associated itinerary
SequenceNumber int`json:"sequenceNumber"`
// ServiceType The service type of the leg. An uppercase letter.
ServiceType ServiceType`json:"serviceType"`
}
// Message defines model for Message.
type Message struct {
// Level The level of messages retured by the REST API to the Client
Level *MessageLevel`json:"level,omitempty"`
// Text Message text
Text *string`json:"text,omitempty"`
}
// MessageLevel The level of messages retured by the REST API to the Client
type MessageLevel string
// PeriodOfOperation The combination of start date, end date and a weekday pattern
type PeriodOfOperation struct {
// DaysOfOperation String representation of the days of operation (weekdays) in the format 'fffffff' with whitespace padding
DaysOfOperation DaysOfOperation`json:"daysOfOperation"`
// EndDate The start date of this period in the format 'DDMMMYY'
EndDate SSIMDate`json:"endDate"`
// StartDate The start date of this period in the format 'DDMMMYY'
StartDate SSIMDate`json:"startDate"`
}
// SSIMDate A date represented in the format 'DDMMMYY'
type SSIMDate = string
// ServiceType Service type identifying whether the flight is a passenger or cargo flight (or something else). An uppercase letter.
type ServiceType = string
// Suffix Operational suffix. One character or empty string.
type Suffix = string
// TechnicalMessage defines model for TechnicalMessage.
type TechnicalMessage struct {
// Text Message text
Text *string`json:"text,omitempty"`
}
// TimeMode The intended time mode. Either Universal Time Coordinated (UTC) or Local Time (LT)
type TimeMode string
// AircraftTypes defines model for aircraftTypes.
type AircraftTypes = []AircraftType
// Airlines defines model for airlines.
type Airlines = []Airline
// Destination Airport represented by a 3 letter IATA airport code
type Destination = Airport
// EndDate A date represented in the format 'DDMMMYY'
type EndDate = SSIMDate
// FlightNumberRanges defines model for flightNumberRanges.
type FlightNumberRanges = string
// Origin Airport represented by a 3 letter IATA airport code
type Origin = Airport
// StartDate A date represented in the format 'DDMMMYY'
type StartDate = SSIMDate
// GetFlightschedulesParams defines parameters for GetFlightschedules.
type GetFlightschedulesParams struct {
// Airlines The list of airline codes
Airlines Airlines`form:"airlines" json:"airlines"`
// FlightNumberRanges The flight number range filter string. e.g.: '-100, 200, 100-200, 300-'
FlightNumberRanges *FlightNumberRanges`form:"flightNumberRanges,omitempty" json:"flightNumberRanges,omitempty"`
// StartDate The period start date. SSIM date format DDMMMYY
StartDate StartDate`form:"startDate" json:"startDate"`
// EndDate The period end date. SSIM date format DDMMMYY
EndDate EndDate`form:"endDate" json:"endDate"`
// DaysOfOperation The days of operation, i.e. the days of the week. Whitespace padded to 7 chars. E.g.: ' 34 6 '
DaysOfOperation DaysOfOperation`form:"daysOfOperation" json:"daysOfOperation"`
// TimeMode The time mode of the period of operations
TimeMode TimeMode`form:"timeMode" json:"timeMode"`
// Origin Search for flights departing from this station. 3 letter IATA airport code.
Origin *Origin`form:"origin,omitempty" json:"origin,omitempty"`
// Destination Search for flights arriving at this station. 3 letter IATA airport code.
Destination *Destination`form:"destination,omitempty" json:"destination,omitempty"`
// AircraftTypes The list of aircraft types
AircraftTypes *AircraftTypes`form:"aircraftTypes,omitempty" json:"aircraftTypes,omitempty"`
}
// GetFlightschedulesCargoParams defines parameters for GetFlightschedulesCargo.
type GetFlightschedulesCargoParams struct {
// Airlines The list of airline codes
Airlines Airlines`form:"airlines" json:"airlines"`
// FlightNumberRanges The flight number range filter string. e.g.: '-100, 200, 100-200, 300-'
FlightNumberRanges *FlightNumberRanges`form:"flightNumberRanges,omitempty" json:"flightNumberRanges,omitempty"`
// StartDate The period start date. SSIM date format DDMMMYY
StartDate StartDate`form:"startDate" json:"startDate"`
// EndDate The period end date. SSIM date format DDMMMYY
EndDate EndDate`form:"endDate" json:"endDate"`
// DaysOfOperation The days of operation, i.e. the days of the week. Whitespace padded to 7 chars. E.g.: ' 34 6 '
DaysOfOperation DaysOfOperation`form:"daysOfOperation" json:"daysOfOperation"`
// TimeMode The time mode of the period of operations
TimeMode TimeMode`form:"timeMode" json:"timeMode"`
// Origin Search for flights departing from this station. 3 letter IATA airport code.
Origin *Origin`form:"origin,omitempty" json:"origin,omitempty"`
// Destination Search for flights arriving at this station. 3 letter IATA airport code.
Destination *Destination`form:"destination,omitempty" json:"destination,omitempty"`
// AircraftTypes The list of aircraft types
AircraftTypes *AircraftTypes`form:"aircraftTypes,omitempty" json:"aircraftTypes,omitempty"`
}
// GetFlightschedulesPassengerParams defines parameters for GetFlightschedulesPassenger.
type GetFlightschedulesPassengerParams struct {
// Airlines The list of airline codes
Airlines Airlines`form:"airlines" json:"airlines"`
// FlightNumberRanges The flight number range filter string. e.g.: '-100, 200, 100-200, 300-'
FlightNumberRanges *FlightNumberRanges`form:"flightNumberRanges,omitempty" json:"flightNumberRanges,omitempty"`
// StartDate The period start date. SSIM date format DDMMMYY
StartDate StartDate`form:"startDate" json:"startDate"`
// EndDate The period end date. SSIM date format DDMMMYY
EndDate EndDate`form:"endDate" json:"endDate"`
// DaysOfOperation The days of operation, i.e. the days of the week. Whitespace padded to 7 chars. E.g.: ' 34 6 '
DaysOfOperation DaysOfOperation`form:"daysOfOperation" json:"daysOfOperation"`
// TimeMode The time mode of the period of operations
TimeMode TimeMode`form:"timeMode" json:"timeMode"`
// Origin Search for flights departing from this station. 3 letter IATA airport code.
Origin *Origin`form:"origin,omitempty" json:"origin,omitempty"`
// Destination Search for flights arriving at this station. 3 letter IATA airport code.
Destination *Destination`form:"destination,omitempty" json:"destination,omitempty"`
// AircraftTypes The list of aircraft types
AircraftTypes *AircraftTypes`form:"aircraftTypes,omitempty" json:"aircraftTypes,omitempty"`
}
// RequestEditorFn is the function signature for the RequestEditor callback function
type RequestEditorFn func(ctx context.Context, req *http.Request) error
// Doer performs HTTP requests.
//
// The standard http.Client implements this interface.
type HttpRequestDoer interface {
Do(req *http.Request) (*http.Response, error)
}
// Client which conforms to the OpenAPI3 specification for this service.
type Client struct {
// The endpoint of the server conforming to this interface, with scheme,
// https://api.deepmap.com for example. This can contain a path relative
// to the server, such as https://api.deepmap.com/dev-test, and all the
// paths in the swagger spec will be appended to the server.
Server string
// Doer for performing requests, typically a *http.Client with any
// customized settings, such as certificate chains.
Client HttpRequestDoer
// A list of callbacks for modifying requests which are generated before sending over
// the network.
RequestEditors []RequestEditorFn
}
// ClientOption allows setting custom parameters during construction
type ClientOption func(*Client) error
// Creates a new Client, with reasonable defaults
func NewClient(server string, opts ...ClientOption) (*Client, error) {
// create a client with sane default values
client := Client{
Server: server,
}
// mutate client and add all optional params
for _, o := range opts {
if err := o(&client); err != nil {
return nil, err
}
}
// ensure the server URL always has a trailing slash
if !strings.HasSuffix(client.Server, "/") {
client.Server += "/"
}
// create httpClient, if not already present
if client.Client == nil {
client.Client = &http.Client{}
}
return &client, nil
}
// WithHTTPClient allows overriding the default Doer, which is
// automatically created using http.Client. This is useful for tests.
func WithHTTPClient(doer HttpRequestDoer) ClientOption {
return func(c *Client) error {
c.Client = doer
return nil
}
}
// WithRequestEditorFn allows setting up a callback function, which will be
// called right before sending the request. This can be used to mutate the request.
func WithRequestEditorFn(fn RequestEditorFn) ClientOption {
return func(c *Client) error {
c.RequestEditors = append(c.RequestEditors, fn)
return nil
}
}
// The interface specification for the client above.
type ClientInterface interface {
// GetFlightschedules request
GetFlightschedules(ctx context.Context, params *GetFlightschedulesParams, reqEditors... RequestEditorFn) (*http.Response, error)
// GetFlightschedulesCargo request
GetFlightschedulesCargo(ctx context.Context, params *GetFlightschedulesCargoParams, reqEditors... RequestEditorFn) (*http.Response, error)
// GetFlightschedulesPassenger request
GetFlightschedulesPassenger(ctx context.Context, params *GetFlightschedulesPassengerParams, reqEditors... RequestEditorFn) (*http.Response, error)
}
func (c *Client) GetFlightschedules(ctx context.Context, params *GetFlightschedulesParams, reqEditors... RequestEditorFn) (*http.Response, error) {
req, err := NewGetFlightschedulesRequest(c.Server, params)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
if err := c.applyEditors(ctx, req, reqEditors); err != nil {
return nil, err
}
return c.Client.Do(req)
}
func (c *Client) GetFlightschedulesCargo(ctx context.Context, params *GetFlightschedulesCargoParams, reqEditors... RequestEditorFn) (*http.Response, error) {
req, err := NewGetFlightschedulesCargoRequest(c.Server, params)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
if err := c.applyEditors(ctx, req, reqEditors); err != nil {
return nil, err
}
return c.Client.Do(req)
}
func (c *Client) GetFlightschedulesPassenger(ctx context.Context, params *GetFlightschedulesPassengerParams, reqEditors... RequestEditorFn) (*http.Response, error) {
req, err := NewGetFlightschedulesPassengerRequest(c.Server, params)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
if err := c.applyEditors(ctx, req, reqEditors); err != nil {
return nil, err
}
return c.Client.Do(req)
}
// NewGetFlightschedulesRequest generates requests for GetFlightschedules
func NewGetFlightschedulesRequest(server string, params *GetFlightschedulesParams) (*http.Request, error) {
var err error
serverURL, err := url.Parse(server)
if err != nil {
return nil, err
}
operationPath := fmt.Sprintf("/flightschedules")
if operationPath[0] == '/' {
operationPath = "." + operationPath
}
queryURL, err := serverURL.Parse(operationPath)
if err != nil {
return nil, err
}
if params != nil {
queryValues := queryURL.Query()
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "airlines", runtime.ParamLocationQuery, params.Airlines); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.FlightNumberRanges != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "flightNumberRanges", runtime.ParamLocationQuery, *params.FlightNumberRanges); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "startDate", runtime.ParamLocationQuery, params.StartDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "endDate", runtime.ParamLocationQuery, params.EndDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "daysOfOperation", runtime.ParamLocationQuery, params.DaysOfOperation); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "timeMode", runtime.ParamLocationQuery, params.TimeMode); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.Origin != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "origin", runtime.ParamLocationQuery, *params.Origin); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.Destination != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "destination", runtime.ParamLocationQuery, *params.Destination); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.AircraftTypes != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "aircraftTypes", runtime.ParamLocationQuery, *params.AircraftTypes); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
queryURL.RawQuery = queryValues.Encode()
}
req, err := http.NewRequest("GET", queryURL.String(), nil)
if err != nil {
return nil, err
}
return req, nil
}
// NewGetFlightschedulesCargoRequest generates requests for GetFlightschedulesCargo
func NewGetFlightschedulesCargoRequest(server string, params *GetFlightschedulesCargoParams) (*http.Request, error) {
var err error
serverURL, err := url.Parse(server)
if err != nil {
return nil, err
}
operationPath := fmt.Sprintf("/flightschedules/cargo")
if operationPath[0] == '/' {
operationPath = "." + operationPath
}
queryURL, err := serverURL.Parse(operationPath)
if err != nil {
return nil, err
}
if params != nil {
queryValues := queryURL.Query()
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "airlines", runtime.ParamLocationQuery, params.Airlines); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.FlightNumberRanges != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "flightNumberRanges", runtime.ParamLocationQuery, *params.FlightNumberRanges); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "startDate", runtime.ParamLocationQuery, params.StartDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "endDate", runtime.ParamLocationQuery, params.EndDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "daysOfOperation", runtime.ParamLocationQuery, params.DaysOfOperation); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "timeMode", runtime.ParamLocationQuery, params.TimeMode); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.Origin != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "origin", runtime.ParamLocationQuery, *params.Origin); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.Destination != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "destination", runtime.ParamLocationQuery, *params.Destination); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.AircraftTypes != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "aircraftTypes", runtime.ParamLocationQuery, *params.AircraftTypes); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
queryURL.RawQuery = queryValues.Encode()
}
req, err := http.NewRequest("GET", queryURL.String(), nil)
if err != nil {
return nil, err
}
return req, nil
}
// NewGetFlightschedulesPassengerRequest generates requests for GetFlightschedulesPassenger
func NewGetFlightschedulesPassengerRequest(server string, params *GetFlightschedulesPassengerParams) (*http.Request, error) {
var err error
serverURL, err := url.Parse(server)
if err != nil {
return nil, err
}
operationPath := fmt.Sprintf("/flightschedules/passenger")
if operationPath[0] == '/' {
operationPath = "." + operationPath
}
queryURL, err := serverURL.Parse(operationPath)
if err != nil {
return nil, err
}
if params != nil {
queryValues := queryURL.Query()
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "airlines", runtime.ParamLocationQuery, params.Airlines); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.FlightNumberRanges != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "flightNumberRanges", runtime.ParamLocationQuery, *params.FlightNumberRanges); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "startDate", runtime.ParamLocationQuery, params.StartDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "endDate", runtime.ParamLocationQuery, params.EndDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "daysOfOperation", runtime.ParamLocationQuery, params.DaysOfOperation); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "timeMode", runtime.ParamLocationQuery, params.TimeMode); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.Origin != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "origin", runtime.ParamLocationQuery, *params.Origin); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.Destination != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "destination", runtime.ParamLocationQuery, *params.Destination); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.AircraftTypes != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "aircraftTypes", runtime.ParamLocationQuery, *params.AircraftTypes); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
queryURL.RawQuery = queryValues.Encode()
}
req, err := http.NewRequest("GET", queryURL.String(), nil)
if err != nil {
return nil, err
}
return req, nil
}
func (c *Client) applyEditors(ctx context.Context, req *http.Request, additionalEditors []RequestEditorFn) error {
for _, r := range c.RequestEditors {
if err := r(ctx, req); err != nil {
return err
}
}
for _, r := range additionalEditors {
if err := r(ctx, req); err != nil {
return err
}
}
return nil
}
// ClientWithResponses builds on ClientInterface to offer response payloads
type ClientWithResponses struct {
ClientInterface
}
// NewClientWithResponses creates a new ClientWithResponses, which wraps
// Client with return type handling
func NewClientWithResponses(server string, opts ...ClientOption) (*ClientWithResponses, error) {
client, err := NewClient(server, opts...)
if err != nil {
return nil, err
}
return &ClientWithResponses{client}, nil
}
// WithBaseURL overrides the baseURL.
func WithBaseURL(baseURL string) ClientOption {
return func(c *Client) error {
newBaseURL, err := url.Parse(baseURL)
if err != nil {
return err
}
c.Server = newBaseURL.String()
return nil
}
}
// ClientWithResponsesInterface is the interface specification for the client with responses above.
type ClientWithResponsesInterface interface {
// GetFlightschedulesWithResponse request
GetFlightschedulesWithResponse(ctx context.Context, params *GetFlightschedulesParams, reqEditors... RequestEditorFn) (*GetFlightschedulesResponse, error)
// GetFlightschedulesCargoWithResponse request
GetFlightschedulesCargoWithResponse(ctx context.Context, params *GetFlightschedulesCargoParams, reqEditors... RequestEditorFn) (*GetFlightschedulesCargoResponse, error)
// GetFlightschedulesPassengerWithResponse request
GetFlightschedulesPassengerWithResponse(ctx context.Context, params *GetFlightschedulesPassengerParams, reqEditors... RequestEditorFn) (*GetFlightschedulesPassengerResponse, error)
}
type GetFlightschedulesResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *FlightResponse
JSON206 *FlightResponse
JSON400 *ErrorResponse
JSON401 *ErrorResponse
JSON404 *ErrorResponse
JSON500 *ErrorResponse
}
// Status returns HTTPResponse.Status
func (r GetFlightschedulesResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r GetFlightschedulesResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
type GetFlightschedulesCargoResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *FlightResponse
JSON206 *FlightResponse
JSON400 *ErrorResponse
JSON401 *ErrorResponse
JSON404 *ErrorResponse
JSON500 *ErrorResponse
}
// Status returns HTTPResponse.Status
func (r GetFlightschedulesCargoResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r GetFlightschedulesCargoResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
type GetFlightschedulesPassengerResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *FlightResponse
JSON206 *FlightResponse
JSON400 *ErrorResponse
JSON401 *ErrorResponse
JSON404 *ErrorResponse
JSON500 *ErrorResponse
}
// Status returns HTTPResponse.Status
func (r GetFlightschedulesPassengerResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r GetFlightschedulesPassengerResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
// GetFlightschedulesWithResponse request returning *GetFlightschedulesResponse
func (c *ClientWithResponses) GetFlightschedulesWithResponse(ctx context.Context, params *GetFlightschedulesParams, reqEditors... RequestEditorFn) (*GetFlightschedulesResponse, error){
rsp, err := c.GetFlightschedules(ctx, params, reqEditors...)
if err != nil {
return nil, err
}
return ParseGetFlightschedulesResponse(rsp)
}
// GetFlightschedulesCargoWithResponse request returning *GetFlightschedulesCargoResponse
func (c *ClientWithResponses) GetFlightschedulesCargoWithResponse(ctx context.Context, params *GetFlightschedulesCargoParams, reqEditors... RequestEditorFn) (*GetFlightschedulesCargoResponse, error){
rsp, err := c.GetFlightschedulesCargo(ctx, params, reqEditors...)
if err != nil {
return nil, err
}
return ParseGetFlightschedulesCargoResponse(rsp)
}
// GetFlightschedulesPassengerWithResponse request returning *GetFlightschedulesPassengerResponse
func (c *ClientWithResponses) GetFlightschedulesPassengerWithResponse(ctx context.Context, params *GetFlightschedulesPassengerParams, reqEditors... RequestEditorFn) (*GetFlightschedulesPassengerResponse, error){
rsp, err := c.GetFlightschedulesPassenger(ctx, params, reqEditors...)
if err != nil {
return nil, err
}
return ParseGetFlightschedulesPassengerResponse(rsp)
}
// ParseGetFlightschedulesResponse parses an HTTP response from a GetFlightschedulesWithResponse call
func ParseGetFlightschedulesResponse(rsp *http.Response) (*GetFlightschedulesResponse, error) {
bodyBytes, err := io.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &GetFlightschedulesResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON200 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 206:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON206 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON400 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON401 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON404 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON500 = &dest
}
return response, nil
}
// ParseGetFlightschedulesCargoResponse parses an HTTP response from a GetFlightschedulesCargoWithResponse call
func ParseGetFlightschedulesCargoResponse(rsp *http.Response) (*GetFlightschedulesCargoResponse, error) {
bodyBytes, err := io.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &GetFlightschedulesCargoResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON200 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 206:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON206 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON400 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON401 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON404 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON500 = &dest
}
return response, nil
}
// ParseGetFlightschedulesPassengerResponse parses an HTTP response from a GetFlightschedulesPassengerWithResponse call
func ParseGetFlightschedulesPassengerResponse(rsp *http.Response) (*GetFlightschedulesPassengerResponse, error) {
bodyBytes, err := io.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &GetFlightschedulesPassengerResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON200 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 206:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON206 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON400 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON401 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON404 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON500 = &dest
}
return response, nil
}
// ServerInterface represents all server handlers.
type ServerInterface interface {
// Search all flights
// (GET /flightschedules)
GetFlightschedules(ctx echo.Context, params GetFlightschedulesParams) error
// Returns cargo flights
// (GET /flightschedules/cargo)
GetFlightschedulesCargo(ctx echo.Context, params GetFlightschedulesCargoParams) error
// Returns passenger flights
// (GET /flightschedules/passenger)
GetFlightschedulesPassenger(ctx echo.Context, params GetFlightschedulesPassengerParams) error
}
// ServerInterfaceWrapper converts echo contexts to parameters.
type ServerInterfaceWrapper struct {
Handler ServerInterface
}
// GetFlightschedules converts echo context to params.
func (w *ServerInterfaceWrapper) GetFlightschedules (ctx echo.Context) error {
var err error
ctx.Set(BearerScopes, []string{})
// Parameter object where we will unmarshal all parameters from the context
var params GetFlightschedulesParams
// ------------- Required query parameter "airlines" -------------
err = runtime.BindQueryParameter("form", true, true, "airlines", ctx.QueryParams(), &params.Airlines)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter airlines: %s", err))
}
// ------------- Optional query parameter "flightNumberRanges" -------------
err = runtime.BindQueryParameter("form", true, false, "flightNumberRanges", ctx.QueryParams(), &params.FlightNumberRanges)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter flightNumberRanges: %s", err))
}
// ------------- Required query parameter "startDate" -------------
err = runtime.BindQueryParameter("form", true, true, "startDate", ctx.QueryParams(), &params.StartDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter startDate: %s", err))
}
// ------------- Required query parameter "endDate" -------------
err = runtime.BindQueryParameter("form", true, true, "endDate", ctx.QueryParams(), &params.EndDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter endDate: %s", err))
}
// ------------- Required query parameter "daysOfOperation" -------------
err = runtime.BindQueryParameter("form", true, true, "daysOfOperation", ctx.QueryParams(), &params.DaysOfOperation)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter daysOfOperation: %s", err))
}
// ------------- Required query parameter "timeMode" -------------
err = runtime.BindQueryParameter("form", true, true, "timeMode", ctx.QueryParams(), &params.TimeMode)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter timeMode: %s", err))
}
// ------------- Optional query parameter "origin" -------------
err = runtime.BindQueryParameter("form", true, false, "origin", ctx.QueryParams(), &params.Origin)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter origin: %s", err))
}
// ------------- Optional query parameter "destination" -------------
err = runtime.BindQueryParameter("form", true, false, "destination", ctx.QueryParams(), &params.Destination)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter destination: %s", err))
}
// ------------- Optional query parameter "aircraftTypes" -------------
err = runtime.BindQueryParameter("form", true, false, "aircraftTypes", ctx.QueryParams(), &params.AircraftTypes)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter aircraftTypes: %s", err))
}
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.GetFlightschedules(ctx, params)
return err
}
// GetFlightschedulesCargo converts echo context to params.
func (w *ServerInterfaceWrapper) GetFlightschedulesCargo (ctx echo.Context) error {
var err error
ctx.Set(BearerScopes, []string{})
// Parameter object where we will unmarshal all parameters from the context
var params GetFlightschedulesCargoParams
// ------------- Required query parameter "airlines" -------------
err = runtime.BindQueryParameter("form", true, true, "airlines", ctx.QueryParams(), &params.Airlines)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter airlines: %s", err))
}
// ------------- Optional query parameter "flightNumberRanges" -------------
err = runtime.BindQueryParameter("form", true, false, "flightNumberRanges", ctx.QueryParams(), &params.FlightNumberRanges)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter flightNumberRanges: %s", err))
}
// ------------- Required query parameter "startDate" -------------
err = runtime.BindQueryParameter("form", true, true, "startDate", ctx.QueryParams(), &params.StartDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter startDate: %s", err))
}
// ------------- Required query parameter "endDate" -------------
err = runtime.BindQueryParameter("form", true, true, "endDate", ctx.QueryParams(), &params.EndDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter endDate: %s", err))
}
// ------------- Required query parameter "daysOfOperation" -------------
err = runtime.BindQueryParameter("form", true, true, "daysOfOperation", ctx.QueryParams(), &params.DaysOfOperation)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter daysOfOperation: %s", err))
}
// ------------- Required query parameter "timeMode" -------------
err = runtime.BindQueryParameter("form", true, true, "timeMode", ctx.QueryParams(), &params.TimeMode)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter timeMode: %s", err))
}
// ------------- Optional query parameter "origin" -------------
err = runtime.BindQueryParameter("form", true, false, "origin", ctx.QueryParams(), &params.Origin)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter origin: %s", err))
}
// ------------- Optional query parameter "destination" -------------
err = runtime.BindQueryParameter("form", true, false, "destination", ctx.QueryParams(), &params.Destination)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter destination: %s", err))
}
// ------------- Optional query parameter "aircraftTypes" -------------
err = runtime.BindQueryParameter("form", true, false, "aircraftTypes", ctx.QueryParams(), &params.AircraftTypes)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter aircraftTypes: %s", err))
}
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.GetFlightschedulesCargo(ctx, params)
return err
}
// GetFlightschedulesPassenger converts echo context to params.
func (w *ServerInterfaceWrapper) GetFlightschedulesPassenger (ctx echo.Context) error {
var err error
ctx.Set(BearerScopes, []string{})
// Parameter object where we will unmarshal all parameters from the context
var params GetFlightschedulesPassengerParams
// ------------- Required query parameter "airlines" -------------
err = runtime.BindQueryParameter("form", true, true, "airlines", ctx.QueryParams(), &params.Airlines)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter airlines: %s", err))
}
// ------------- Optional query parameter "flightNumberRanges" -------------
err = runtime.BindQueryParameter("form", true, false, "flightNumberRanges", ctx.QueryParams(), &params.FlightNumberRanges)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter flightNumberRanges: %s", err))
}
// ------------- Required query parameter "startDate" -------------
err = runtime.BindQueryParameter("form", true, true, "startDate", ctx.QueryParams(), &params.StartDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter startDate: %s", err))
}
// ------------- Required query parameter "endDate" -------------
err = runtime.BindQueryParameter("form", true, true, "endDate", ctx.QueryParams(), &params.EndDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter endDate: %s", err))
}
// ------------- Required query parameter "daysOfOperation" -------------
err = runtime.BindQueryParameter("form", true, true, "daysOfOperation", ctx.QueryParams(), &params.DaysOfOperation)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter daysOfOperation: %s", err))
}
// ------------- Required query parameter "timeMode" -------------
err = runtime.BindQueryParameter("form", true, true, "timeMode", ctx.QueryParams(), &params.TimeMode)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter timeMode: %s", err))
}
// ------------- Optional query parameter "origin" -------------
err = runtime.BindQueryParameter("form", true, false, "origin", ctx.QueryParams(), &params.Origin)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter origin: %s", err))
}
// ------------- Optional query parameter "destination" -------------
err = runtime.BindQueryParameter("form", true, false, "destination", ctx.QueryParams(), &params.Destination)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter destination: %s", err))
}
// ------------- Optional query parameter "aircraftTypes" -------------
err = runtime.BindQueryParameter("form", true, false, "aircraftTypes", ctx.QueryParams(), &params.AircraftTypes)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter aircraftTypes: %s", err))
}
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.GetFlightschedulesPassenger(ctx, params)
return err
}
// This is a simple interface which specifies echo.Route addition functions which
// are present on both echo.Echo and echo.Group, since we want to allow using
// either of them for path registration
type EchoRouter interface {
CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
}
// RegisterHandlers adds each server route to the EchoRouter.
func RegisterHandlers(router EchoRouter, si ServerInterface) {
RegisterHandlersWithBaseURL(router, si, "")
}
// Registers handlers, and prepends BaseURL to the paths, so that the paths
// can be served under a prefix.
func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
wrapper := ServerInterfaceWrapper{
Handler: si,
}
router.GET(baseURL + "/flightschedules", wrapper.GetFlightschedules)
router.GET(baseURL + "/flightschedules/cargo", wrapper.GetFlightschedulesCargo)
router.GET(baseURL + "/flightschedules/passenger", wrapper.GetFlightschedulesPassenger)
}
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"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",
}
// GetSwagger returns the content of the embedded swagger specification file
// or error if failed to decode
func decodeSpec() ([]byte, error) {
zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
if err != nil {
return nil, fmt.Errorf("error base64 decoding spec: %w", err)
}
zr, err := gzip.NewReader(bytes.NewReader(zipped))
if err != nil {
return nil, fmt.Errorf("error decompressing spec: %w", err)
}
var buf bytes.Buffer
_, err = buf.ReadFrom(zr)
if err != nil {
return nil, fmt.Errorf("error decompressing spec: %w", err)
}
return buf.Bytes(), nil
}
var rawSpec = decodeSpecCached()
// a naive cached of a decoded swagger spec
func decodeSpecCached() func() ([]byte, error) {
data, err := decodeSpec()
return func() ([]byte, error) {
return data, err
}
}
// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
res := make(map[string]func() ([]byte, error))
if len(pathToFile) > 0 {
res[pathToFile] = rawSpec
}
return res
}
// GetSwagger returns the Swagger specification corresponding to the generated code
// in this file. The external references of Swagger specification are resolved.
// The logic of resolving external references is tightly connected to "import-mapping" feature.
// Externally referenced files must be embedded in the corresponding golang packages.
// Urls can be supported but this task was out of the scope.
func GetSwagger() (swagger *openapi3.T, err error) {
resolvePath := PathToRawSpec("")
loader := openapi3.NewLoader()
loader.IsExternalRefsAllowed = true
loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
pathToFile := url.String()
pathToFile = path.Clean(pathToFile)
getSpec, ok := resolvePath[pathToFile]
if !ok {
err1 := fmt.Errorf("path not found: %s", pathToFile)
return nil, err1
}
return getSpec()
}
var specData []byte
specData, err = rawSpec()
if err != nil {
return
}
swagger, err = loader.LoadFromData(specData)
if err != nil {
return
}
return
}
: go-lufthansa.go:4:9: expected 'IDENT', found 'go'
~/d/go-lufthansa >>> oapi-codegen -package go-lufthansa swagger-spec-21516.json > lufthansa.gen.go (base) Mon Mar 4 13:59:39 2024
error generating code: error formatting Go code // Package go-lufthansa provides primitives to interact with the openapi HTTP API.
//
// Code generated by github.com/deepmap/oapi-codegen/v2 version v2.1.0 DO NOT EDIT.
package go-lufthansa
import (
"bytes"
"compress/gzip"
"context"
"encoding/base64"
"encoding/json"
"encoding/xml"
"errors"
"fmt"
"gopkg.in/yaml.v2"
"io"
"os"
"mime"
"mime/multipart"
"net/http"
"net/url"
"path"
"strings"
"time"
"github.com/oapi-codegen/runtime"
strictecho "github.com/oapi-codegen/runtime/strictmiddleware/echo"
strictgin "github.com/oapi-codegen/runtime/strictmiddleware/gin"
strictiris "github.com/oapi-codegen/runtime/strictmiddleware/iris"
strictnethttp "github.com/oapi-codegen/runtime/strictmiddleware/nethttp"
openapi_types "github.com/oapi-codegen/runtime/types"
"github.com/getkin/kin-openapi/openapi3"
"github.com/go-chi/chi/v5"
"github.com/labstack/echo/v4"
"github.com/gin-gonic/gin"
"github.com/gofiber/fiber/v2"
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/core/router"
"github.com/gorilla/mux"
)
const (
BearerScopes = "Bearer.Scopes"
)
// Defines values for MessageLevel.
const (
ERROR MessageLevel = "ERROR"
INFO MessageLevel = "INFO"
WARNING MessageLevel = "WARNING"
)
// Defines values for TimeMode.
const (
LT TimeMode = "LT"
UTC TimeMode = "UTC"
)
// AircraftType The fleet type identifier 3 characters, can contain letters and numbers.
type AircraftType = string
// Airline The airline code of the flight
type Airline = string
// Airport Airport represented by a 3 letter IATA airport code
type Airport = string
// DataElement A data element is an additional flight attribute as defined in SSIM, Chapter 2 dealing with a variety of characteristics, e.g.:
// * Traffic Restriction: 8
// * Codeshare - Duplicate leg cross-reference: 10
// * Codeshare - Operational leg cross-reference: 50
// * Departure Terminal: 99
// * Arrival Terminal: 98
// * Passenger Reservation Booking Designator (PRBD): 106
// * Meal service note: 109
// * Inflight Service: 503
// * Electronic Ticket Indicator: 505
// * etc.
type DataElement struct {
// EndLegSequenceNumber The sequence number of the leg where data element offpoint belongs to
EndLegSequenceNumber int`json:"endLegSequenceNumber"`
// Id The data element identifier - see SSIM, Chapter 2 for additional information
Id int`json:"id"`
// StartLegSequenceNumber The sequence number of the leg where data element boardpoint belongs to
StartLegSequenceNumber int`json:"startLegSequenceNumber"`
// Value The data element value itself
Value *string`json:"value,omitempty"`
}
// DaysOfOperation String representation of the days of operation (weekdays) in the format 'fffffff' with whitespace padding
type DaysOfOperation = string
// ErrorResponse defines model for ErrorResponse.
type ErrorResponse struct {
HttpStatus *int`json:"httpStatus,omitempty"`
Messages *[]Message`json:"messages,omitempty"`
TechnicalMessages *[]TechnicalMessage`json:"technicalMessages,omitempty"`
}
// FlightAggregate A FlightAggregate is a date-wise aggregation of otherwise single-dated flights. I.e. flights with identical attributes are aggregated into periods of operation.
type FlightAggregate struct {
// Airline The airline code of the flight
Airline *Airline`json:"airline,omitempty"`
// DataElements The data elements
DataElements *[]DataElement`json:"dataElements,omitempty"`
// FlightNumber The flight number
FlightNumber *FlightNumber`json:"flightNumber,omitempty"`
// Legs The legs
Legs *[]Leg`json:"legs,omitempty"`
// PeriodOfOperationLT The combination of start date, end date and a weekday pattern
PeriodOfOperationLT *PeriodOfOperation`json:"periodOfOperationLT,omitempty"`
// PeriodOfOperationUTC The combination of start date, end date and a weekday pattern
PeriodOfOperationUTC *PeriodOfOperation`json:"periodOfOperationUTC,omitempty"`
// Suffix Operational suffix. One character or empty string.
Suffix *Suffix`json:"suffix,omitempty"`
}
// FlightNumber The flight number
type FlightNumber = int
// FlightResponse defines model for FlightResponse.
type FlightResponse = []FlightAggregate
// Leg A flight's leg is a smaller part of an overall journey which involves landing at an intermediate airport
type Leg struct {
// AircraftArrivalTimeDateDiffLT The date difference between the flight LT date and the aircraft arrival time of this leg in days.
AircraftArrivalTimeDateDiffLT *int`json:"aircraftArrivalTimeDateDiffLT,omitempty"`
// AircraftArrivalTimeDateDiffUTC The date difference between the flight UTC date and the aircraftarrival time of this leg in days.
AircraftArrivalTimeDateDiffUTC *int`json:"aircraftArrivalTimeDateDiffUTC,omitempty"`
// AircraftArrivalTimeLT The LT Aircraft Scheduled Time of Arrival for this leg in minutes
AircraftArrivalTimeLT *int`json:"aircraftArrivalTimeLT,omitempty"`
// AircraftArrivalTimeUTC The UTC Aircraft Scheduled Time of Arrival for this leg in minutes
AircraftArrivalTimeUTC *int`json:"aircraftArrivalTimeUTC,omitempty"`
// AircraftArrivalTimeVariation The arrival time difference between the LT and UTC time in minutes.
AircraftArrivalTimeVariation *int`json:"aircraftArrivalTimeVariation,omitempty"`
// AircraftConfigurationVersion The Aircraft Configuration/Version.
AircraftConfigurationVersion *string`json:"aircraftConfigurationVersion,omitempty"`
// AircraftDepartureTimeDateDiffLT The date difference between the flight LT date and the aircraft departure time of this leg in days.
AircraftDepartureTimeDateDiffLT *int`json:"aircraftDepartureTimeDateDiffLT,omitempty"`
// AircraftDepartureTimeDateDiffUTC The date difference between the flight UTC date and the aircraft departure time of this leg in days.
AircraftDepartureTimeDateDiffUTC *int`json:"aircraftDepartureTimeDateDiffUTC,omitempty"`
// AircraftDepartureTimeLT The LT Aircraft Scheduled Time of Departure for this leg in minutes
AircraftDepartureTimeLT *int`json:"aircraftDepartureTimeLT,omitempty"`
// AircraftDepartureTimeUTC The UTC Aircraft Scheduled Time of Departure for this leg in minutes
AircraftDepartureTimeUTC *int`json:"aircraftDepartureTimeUTC,omitempty"`
// AircraftDepartureTimeVariation The departure time difference between the LT and UTC time in minutes.
AircraftDepartureTimeVariation *int`json:"aircraftDepartureTimeVariation,omitempty"`
// AircraftOwner The aircraft owner or administrative carrier (an airline code) of the leg
AircraftOwner *Airline`json:"aircraftOwner,omitempty"`
// AircraftType The fleet type identifier 3 characters, can contain letters and numbers.
AircraftType AircraftType`json:"aircraftType"`
// Destination The arrival airport code
Destination Airport`json:"destination"`
// Op Signals whether this is an operating or a marketing leg
Op *bool`json:"op,omitempty"`
// Origin The departure airport code
Origin Airport`json:"origin"`
// Registration Aircraft Registration Information
Registration *string`json:"registration,omitempty"`
// SequenceNumber The sequence number of this leg in the associated itinerary
SequenceNumber int`json:"sequenceNumber"`
// ServiceType The service type of the leg. An uppercase letter.
ServiceType ServiceType`json:"serviceType"`
}
// Message defines model for Message.
type Message struct {
// Level The level of messages retured by the REST API to the Client
Level *MessageLevel`json:"level,omitempty"`
// Text Message text
Text *string`json:"text,omitempty"`
}
// MessageLevel The level of messages retured by the REST API to the Client
type MessageLevel string
// PeriodOfOperation The combination of start date, end date and a weekday pattern
type PeriodOfOperation struct {
// DaysOfOperation String representation of the days of operation (weekdays) in the format 'fffffff' with whitespace padding
DaysOfOperation DaysOfOperation`json:"daysOfOperation"`
// EndDate The start date of this period in the format 'DDMMMYY'
EndDate SSIMDate`json:"endDate"`
// StartDate The start date of this period in the format 'DDMMMYY'
StartDate SSIMDate`json:"startDate"`
}
// SSIMDate A date represented in the format 'DDMMMYY'
type SSIMDate = string
// ServiceType Service type identifying whether the flight is a passenger or cargo flight (or something else). An uppercase letter.
type ServiceType = string
// Suffix Operational suffix. One character or empty string.
type Suffix = string
// TechnicalMessage defines model for TechnicalMessage.
type TechnicalMessage struct {
// Text Message text
Text *string`json:"text,omitempty"`
}
// TimeMode The intended time mode. Either Universal Time Coordinated (UTC) or Local Time (LT)
type TimeMode string
// AircraftTypes defines model for aircraftTypes.
type AircraftTypes = []AircraftType
// Airlines defines model for airlines.
type Airlines = []Airline
// Destination Airport represented by a 3 letter IATA airport code
type Destination = Airport
// EndDate A date represented in the format 'DDMMMYY'
type EndDate = SSIMDate
// FlightNumberRanges defines model for flightNumberRanges.
type FlightNumberRanges = string
// Origin Airport represented by a 3 letter IATA airport code
type Origin = Airport
// StartDate A date represented in the format 'DDMMMYY'
type StartDate = SSIMDate
// GetFlightschedulesParams defines parameters for GetFlightschedules.
type GetFlightschedulesParams struct {
// Airlines The list of airline codes
Airlines Airlines`form:"airlines" json:"airlines"`
// FlightNumberRanges The flight number range filter string. e.g.: '-100, 200, 100-200, 300-'
FlightNumberRanges *FlightNumberRanges`form:"flightNumberRanges,omitempty" json:"flightNumberRanges,omitempty"`
// StartDate The period start date. SSIM date format DDMMMYY
StartDate StartDate`form:"startDate" json:"startDate"`
// EndDate The period end date. SSIM date format DDMMMYY
EndDate EndDate`form:"endDate" json:"endDate"`
// DaysOfOperation The days of operation, i.e. the days of the week. Whitespace padded to 7 chars. E.g.: ' 34 6 '
DaysOfOperation DaysOfOperation`form:"daysOfOperation" json:"daysOfOperation"`
// TimeMode The time mode of the period of operations
TimeMode TimeMode`form:"timeMode" json:"timeMode"`
// Origin Search for flights departing from this station. 3 letter IATA airport code.
Origin *Origin`form:"origin,omitempty" json:"origin,omitempty"`
// Destination Search for flights arriving at this station. 3 letter IATA airport code.
Destination *Destination`form:"destination,omitempty" json:"destination,omitempty"`
// AircraftTypes The list of aircraft types
AircraftTypes *AircraftTypes`form:"aircraftTypes,omitempty" json:"aircraftTypes,omitempty"`
}
// GetFlightschedulesCargoParams defines parameters for GetFlightschedulesCargo.
type GetFlightschedulesCargoParams struct {
// Airlines The list of airline codes
Airlines Airlines`form:"airlines" json:"airlines"`
// FlightNumberRanges The flight number range filter string. e.g.: '-100, 200, 100-200, 300-'
FlightNumberRanges *FlightNumberRanges`form:"flightNumberRanges,omitempty" json:"flightNumberRanges,omitempty"`
// StartDate The period start date. SSIM date format DDMMMYY
StartDate StartDate`form:"startDate" json:"startDate"`
// EndDate The period end date. SSIM date format DDMMMYY
EndDate EndDate`form:"endDate" json:"endDate"`
// DaysOfOperation The days of operation, i.e. the days of the week. Whitespace padded to 7 chars. E.g.: ' 34 6 '
DaysOfOperation DaysOfOperation`form:"daysOfOperation" json:"daysOfOperation"`
// TimeMode The time mode of the period of operations
TimeMode TimeMode`form:"timeMode" json:"timeMode"`
// Origin Search for flights departing from this station. 3 letter IATA airport code.
Origin *Origin`form:"origin,omitempty" json:"origin,omitempty"`
// Destination Search for flights arriving at this station. 3 letter IATA airport code.
Destination *Destination`form:"destination,omitempty" json:"destination,omitempty"`
// AircraftTypes The list of aircraft types
AircraftTypes *AircraftTypes`form:"aircraftTypes,omitempty" json:"aircraftTypes,omitempty"`
}
// GetFlightschedulesPassengerParams defines parameters for GetFlightschedulesPassenger.
type GetFlightschedulesPassengerParams struct {
// Airlines The list of airline codes
Airlines Airlines`form:"airlines" json:"airlines"`
// FlightNumberRanges The flight number range filter string. e.g.: '-100, 200, 100-200, 300-'
FlightNumberRanges *FlightNumberRanges`form:"flightNumberRanges,omitempty" json:"flightNumberRanges,omitempty"`
// StartDate The period start date. SSIM date format DDMMMYY
StartDate StartDate`form:"startDate" json:"startDate"`
// EndDate The period end date. SSIM date format DDMMMYY
EndDate EndDate`form:"endDate" json:"endDate"`
// DaysOfOperation The days of operation, i.e. the days of the week. Whitespace padded to 7 chars. E.g.: ' 34 6 '
DaysOfOperation DaysOfOperation`form:"daysOfOperation" json:"daysOfOperation"`
// TimeMode The time mode of the period of operations
TimeMode TimeMode`form:"timeMode" json:"timeMode"`
// Origin Search for flights departing from this station. 3 letter IATA airport code.
Origin *Origin`form:"origin,omitempty" json:"origin,omitempty"`
// Destination Search for flights arriving at this station. 3 letter IATA airport code.
Destination *Destination`form:"destination,omitempty" json:"destination,omitempty"`
// AircraftTypes The list of aircraft types
AircraftTypes *AircraftTypes`form:"aircraftTypes,omitempty" json:"aircraftTypes,omitempty"`
}
// RequestEditorFn is the function signature for the RequestEditor callback function
type RequestEditorFn func(ctx context.Context, req *http.Request) error
// Doer performs HTTP requests.
//
// The standard http.Client implements this interface.
type HttpRequestDoer interface {
Do(req *http.Request) (*http.Response, error)
}
// Client which conforms to the OpenAPI3 specification for this service.
type Client struct {
// The endpoint of the server conforming to this interface, with scheme,
// https://api.deepmap.com for example. This can contain a path relative
// to the server, such as https://api.deepmap.com/dev-test, and all the
// paths in the swagger spec will be appended to the server.
Server string
// Doer for performing requests, typically a *http.Client with any
// customized settings, such as certificate chains.
Client HttpRequestDoer
// A list of callbacks for modifying requests which are generated before sending over
// the network.
RequestEditors []RequestEditorFn
}
// ClientOption allows setting custom parameters during construction
type ClientOption func(*Client) error
// Creates a new Client, with reasonable defaults
func NewClient(server string, opts ...ClientOption) (*Client, error) {
// create a client with sane default values
client := Client{
Server: server,
}
// mutate client and add all optional params
for _, o := range opts {
if err := o(&client); err != nil {
return nil, err
}
}
// ensure the server URL always has a trailing slash
if !strings.HasSuffix(client.Server, "/") {
client.Server += "/"
}
// create httpClient, if not already present
if client.Client == nil {
client.Client = &http.Client{}
}
return &client, nil
}
// WithHTTPClient allows overriding the default Doer, which is
// automatically created using http.Client. This is useful for tests.
func WithHTTPClient(doer HttpRequestDoer) ClientOption {
return func(c *Client) error {
c.Client = doer
return nil
}
}
// WithRequestEditorFn allows setting up a callback function, which will be
// called right before sending the request. This can be used to mutate the request.
func WithRequestEditorFn(fn RequestEditorFn) ClientOption {
return func(c *Client) error {
c.RequestEditors = append(c.RequestEditors, fn)
return nil
}
}
// The interface specification for the client above.
type ClientInterface interface {
// GetFlightschedules request
GetFlightschedules(ctx context.Context, params *GetFlightschedulesParams, reqEditors... RequestEditorFn) (*http.Response, error)
// GetFlightschedulesCargo request
GetFlightschedulesCargo(ctx context.Context, params *GetFlightschedulesCargoParams, reqEditors... RequestEditorFn) (*http.Response, error)
// GetFlightschedulesPassenger request
GetFlightschedulesPassenger(ctx context.Context, params *GetFlightschedulesPassengerParams, reqEditors... RequestEditorFn) (*http.Response, error)
}
func (c *Client) GetFlightschedules(ctx context.Context, params *GetFlightschedulesParams, reqEditors... RequestEditorFn) (*http.Response, error) {
req, err := NewGetFlightschedulesRequest(c.Server, params)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
if err := c.applyEditors(ctx, req, reqEditors); err != nil {
return nil, err
}
return c.Client.Do(req)
}
func (c *Client) GetFlightschedulesCargo(ctx context.Context, params *GetFlightschedulesCargoParams, reqEditors... RequestEditorFn) (*http.Response, error) {
req, err := NewGetFlightschedulesCargoRequest(c.Server, params)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
if err := c.applyEditors(ctx, req, reqEditors); err != nil {
return nil, err
}
return c.Client.Do(req)
}
func (c *Client) GetFlightschedulesPassenger(ctx context.Context, params *GetFlightschedulesPassengerParams, reqEditors... RequestEditorFn) (*http.Response, error) {
req, err := NewGetFlightschedulesPassengerRequest(c.Server, params)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
if err := c.applyEditors(ctx, req, reqEditors); err != nil {
return nil, err
}
return c.Client.Do(req)
}
// NewGetFlightschedulesRequest generates requests for GetFlightschedules
func NewGetFlightschedulesRequest(server string, params *GetFlightschedulesParams) (*http.Request, error) {
var err error
serverURL, err := url.Parse(server)
if err != nil {
return nil, err
}
operationPath := fmt.Sprintf("/flightschedules")
if operationPath[0] == '/' {
operationPath = "." + operationPath
}
queryURL, err := serverURL.Parse(operationPath)
if err != nil {
return nil, err
}
if params != nil {
queryValues := queryURL.Query()
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "airlines", runtime.ParamLocationQuery, params.Airlines); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.FlightNumberRanges != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "flightNumberRanges", runtime.ParamLocationQuery, *params.FlightNumberRanges); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "startDate", runtime.ParamLocationQuery, params.StartDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "endDate", runtime.ParamLocationQuery, params.EndDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "daysOfOperation", runtime.ParamLocationQuery, params.DaysOfOperation); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "timeMode", runtime.ParamLocationQuery, params.TimeMode); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.Origin != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "origin", runtime.ParamLocationQuery, *params.Origin); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.Destination != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "destination", runtime.ParamLocationQuery, *params.Destination); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.AircraftTypes != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "aircraftTypes", runtime.ParamLocationQuery, *params.AircraftTypes); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
queryURL.RawQuery = queryValues.Encode()
}
req, err := http.NewRequest("GET", queryURL.String(), nil)
if err != nil {
return nil, err
}
return req, nil
}
// NewGetFlightschedulesCargoRequest generates requests for GetFlightschedulesCargo
func NewGetFlightschedulesCargoRequest(server string, params *GetFlightschedulesCargoParams) (*http.Request, error) {
var err error
serverURL, err := url.Parse(server)
if err != nil {
return nil, err
}
operationPath := fmt.Sprintf("/flightschedules/cargo")
if operationPath[0] == '/' {
operationPath = "." + operationPath
}
queryURL, err := serverURL.Parse(operationPath)
if err != nil {
return nil, err
}
if params != nil {
queryValues := queryURL.Query()
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "airlines", runtime.ParamLocationQuery, params.Airlines); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.FlightNumberRanges != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "flightNumberRanges", runtime.ParamLocationQuery, *params.FlightNumberRanges); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "startDate", runtime.ParamLocationQuery, params.StartDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "endDate", runtime.ParamLocationQuery, params.EndDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "daysOfOperation", runtime.ParamLocationQuery, params.DaysOfOperation); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "timeMode", runtime.ParamLocationQuery, params.TimeMode); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.Origin != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "origin", runtime.ParamLocationQuery, *params.Origin); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.Destination != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "destination", runtime.ParamLocationQuery, *params.Destination); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.AircraftTypes != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "aircraftTypes", runtime.ParamLocationQuery, *params.AircraftTypes); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
queryURL.RawQuery = queryValues.Encode()
}
req, err := http.NewRequest("GET", queryURL.String(), nil)
if err != nil {
return nil, err
}
return req, nil
}
// NewGetFlightschedulesPassengerRequest generates requests for GetFlightschedulesPassenger
func NewGetFlightschedulesPassengerRequest(server string, params *GetFlightschedulesPassengerParams) (*http.Request, error) {
var err error
serverURL, err := url.Parse(server)
if err != nil {
return nil, err
}
operationPath := fmt.Sprintf("/flightschedules/passenger")
if operationPath[0] == '/' {
operationPath = "." + operationPath
}
queryURL, err := serverURL.Parse(operationPath)
if err != nil {
return nil, err
}
if params != nil {
queryValues := queryURL.Query()
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "airlines", runtime.ParamLocationQuery, params.Airlines); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.FlightNumberRanges != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "flightNumberRanges", runtime.ParamLocationQuery, *params.FlightNumberRanges); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "startDate", runtime.ParamLocationQuery, params.StartDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "endDate", runtime.ParamLocationQuery, params.EndDate); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "daysOfOperation", runtime.ParamLocationQuery, params.DaysOfOperation); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "timeMode", runtime.ParamLocationQuery, params.TimeMode); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
if params.Origin != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "origin", runtime.ParamLocationQuery, *params.Origin); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.Destination != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "destination", runtime.ParamLocationQuery, *params.Destination); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
if params.AircraftTypes != nil {
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "aircraftTypes", runtime.ParamLocationQuery, *params.AircraftTypes); err != nil {
return nil, err
} else if parsed, err := url.ParseQuery(queryFrag); err != nil {
return nil, err
} else {
for k, v := range parsed {
for _, v2 := range v {
queryValues.Add(k, v2)
}
}
}
}
queryURL.RawQuery = queryValues.Encode()
}
req, err := http.NewRequest("GET", queryURL.String(), nil)
if err != nil {
return nil, err
}
return req, nil
}
func (c *Client) applyEditors(ctx context.Context, req *http.Request, additionalEditors []RequestEditorFn) error {
for _, r := range c.RequestEditors {
if err := r(ctx, req); err != nil {
return err
}
}
for _, r := range additionalEditors {
if err := r(ctx, req); err != nil {
return err
}
}
return nil
}
// ClientWithResponses builds on ClientInterface to offer response payloads
type ClientWithResponses struct {
ClientInterface
}
// NewClientWithResponses creates a new ClientWithResponses, which wraps
// Client with return type handling
func NewClientWithResponses(server string, opts ...ClientOption) (*ClientWithResponses, error) {
client, err := NewClient(server, opts...)
if err != nil {
return nil, err
}
return &ClientWithResponses{client}, nil
}
// WithBaseURL overrides the baseURL.
func WithBaseURL(baseURL string) ClientOption {
return func(c *Client) error {
newBaseURL, err := url.Parse(baseURL)
if err != nil {
return err
}
c.Server = newBaseURL.String()
return nil
}
}
// ClientWithResponsesInterface is the interface specification for the client with responses above.
type ClientWithResponsesInterface interface {
// GetFlightschedulesWithResponse request
GetFlightschedulesWithResponse(ctx context.Context, params *GetFlightschedulesParams, reqEditors... RequestEditorFn) (*GetFlightschedulesResponse, error)
// GetFlightschedulesCargoWithResponse request
GetFlightschedulesCargoWithResponse(ctx context.Context, params *GetFlightschedulesCargoParams, reqEditors... RequestEditorFn) (*GetFlightschedulesCargoResponse, error)
// GetFlightschedulesPassengerWithResponse request
GetFlightschedulesPassengerWithResponse(ctx context.Context, params *GetFlightschedulesPassengerParams, reqEditors... RequestEditorFn) (*GetFlightschedulesPassengerResponse, error)
}
type GetFlightschedulesResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *FlightResponse
JSON206 *FlightResponse
JSON400 *ErrorResponse
JSON401 *ErrorResponse
JSON404 *ErrorResponse
JSON500 *ErrorResponse
}
// Status returns HTTPResponse.Status
func (r GetFlightschedulesResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r GetFlightschedulesResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
type GetFlightschedulesCargoResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *FlightResponse
JSON206 *FlightResponse
JSON400 *ErrorResponse
JSON401 *ErrorResponse
JSON404 *ErrorResponse
JSON500 *ErrorResponse
}
// Status returns HTTPResponse.Status
func (r GetFlightschedulesCargoResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r GetFlightschedulesCargoResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
type GetFlightschedulesPassengerResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *FlightResponse
JSON206 *FlightResponse
JSON400 *ErrorResponse
JSON401 *ErrorResponse
JSON404 *ErrorResponse
JSON500 *ErrorResponse
}
// Status returns HTTPResponse.Status
func (r GetFlightschedulesPassengerResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r GetFlightschedulesPassengerResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
// GetFlightschedulesWithResponse request returning *GetFlightschedulesResponse
func (c *ClientWithResponses) GetFlightschedulesWithResponse(ctx context.Context, params *GetFlightschedulesParams, reqEditors... RequestEditorFn) (*GetFlightschedulesResponse, error){
rsp, err := c.GetFlightschedules(ctx, params, reqEditors...)
if err != nil {
return nil, err
}
return ParseGetFlightschedulesResponse(rsp)
}
// GetFlightschedulesCargoWithResponse request returning *GetFlightschedulesCargoResponse
func (c *ClientWithResponses) GetFlightschedulesCargoWithResponse(ctx context.Context, params *GetFlightschedulesCargoParams, reqEditors... RequestEditorFn) (*GetFlightschedulesCargoResponse, error){
rsp, err := c.GetFlightschedulesCargo(ctx, params, reqEditors...)
if err != nil {
return nil, err
}
return ParseGetFlightschedulesCargoResponse(rsp)
}
// GetFlightschedulesPassengerWithResponse request returning *GetFlightschedulesPassengerResponse
func (c *ClientWithResponses) GetFlightschedulesPassengerWithResponse(ctx context.Context, params *GetFlightschedulesPassengerParams, reqEditors... RequestEditorFn) (*GetFlightschedulesPassengerResponse, error){
rsp, err := c.GetFlightschedulesPassenger(ctx, params, reqEditors...)
if err != nil {
return nil, err
}
return ParseGetFlightschedulesPassengerResponse(rsp)
}
// ParseGetFlightschedulesResponse parses an HTTP response from a GetFlightschedulesWithResponse call
func ParseGetFlightschedulesResponse(rsp *http.Response) (*GetFlightschedulesResponse, error) {
bodyBytes, err := io.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &GetFlightschedulesResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON200 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 206:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON206 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON400 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON401 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON404 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON500 = &dest
}
return response, nil
}
// ParseGetFlightschedulesCargoResponse parses an HTTP response from a GetFlightschedulesCargoWithResponse call
func ParseGetFlightschedulesCargoResponse(rsp *http.Response) (*GetFlightschedulesCargoResponse, error) {
bodyBytes, err := io.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &GetFlightschedulesCargoResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON200 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 206:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON206 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON400 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON401 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON404 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON500 = &dest
}
return response, nil
}
// ParseGetFlightschedulesPassengerResponse parses an HTTP response from a GetFlightschedulesPassengerWithResponse call
func ParseGetFlightschedulesPassengerResponse(rsp *http.Response) (*GetFlightschedulesPassengerResponse, error) {
bodyBytes, err := io.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &GetFlightschedulesPassengerResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON200 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 206:
var dest FlightResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON206 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON400 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON401 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON404 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500:
var dest ErrorResponse
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON500 = &dest
}
return response, nil
}
// ServerInterface represents all server handlers.
type ServerInterface interface {
// Search all flights
// (GET /flightschedules)
GetFlightschedules(ctx echo.Context, params GetFlightschedulesParams) error
// Returns cargo flights
// (GET /flightschedules/cargo)
GetFlightschedulesCargo(ctx echo.Context, params GetFlightschedulesCargoParams) error
// Returns passenger flights
// (GET /flightschedules/passenger)
GetFlightschedulesPassenger(ctx echo.Context, params GetFlightschedulesPassengerParams) error
}
// ServerInterfaceWrapper converts echo contexts to parameters.
type ServerInterfaceWrapper struct {
Handler ServerInterface
}
// GetFlightschedules converts echo context to params.
func (w *ServerInterfaceWrapper) GetFlightschedules (ctx echo.Context) error {
var err error
ctx.Set(BearerScopes, []string{})
// Parameter object where we will unmarshal all parameters from the context
var params GetFlightschedulesParams
// ------------- Required query parameter "airlines" -------------
err = runtime.BindQueryParameter("form", true, true, "airlines", ctx.QueryParams(), &params.Airlines)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter airlines: %s", err))
}
// ------------- Optional query parameter "flightNumberRanges" -------------
err = runtime.BindQueryParameter("form", true, false, "flightNumberRanges", ctx.QueryParams(), &params.FlightNumberRanges)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter flightNumberRanges: %s", err))
}
// ------------- Required query parameter "startDate" -------------
err = runtime.BindQueryParameter("form", true, true, "startDate", ctx.QueryParams(), &params.StartDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter startDate: %s", err))
}
// ------------- Required query parameter "endDate" -------------
err = runtime.BindQueryParameter("form", true, true, "endDate", ctx.QueryParams(), &params.EndDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter endDate: %s", err))
}
// ------------- Required query parameter "daysOfOperation" -------------
err = runtime.BindQueryParameter("form", true, true, "daysOfOperation", ctx.QueryParams(), &params.DaysOfOperation)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter daysOfOperation: %s", err))
}
// ------------- Required query parameter "timeMode" -------------
err = runtime.BindQueryParameter("form", true, true, "timeMode", ctx.QueryParams(), &params.TimeMode)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter timeMode: %s", err))
}
// ------------- Optional query parameter "origin" -------------
err = runtime.BindQueryParameter("form", true, false, "origin", ctx.QueryParams(), &params.Origin)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter origin: %s", err))
}
// ------------- Optional query parameter "destination" -------------
err = runtime.BindQueryParameter("form", true, false, "destination", ctx.QueryParams(), &params.Destination)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter destination: %s", err))
}
// ------------- Optional query parameter "aircraftTypes" -------------
err = runtime.BindQueryParameter("form", true, false, "aircraftTypes", ctx.QueryParams(), &params.AircraftTypes)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter aircraftTypes: %s", err))
}
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.GetFlightschedules(ctx, params)
return err
}
// GetFlightschedulesCargo converts echo context to params.
func (w *ServerInterfaceWrapper) GetFlightschedulesCargo (ctx echo.Context) error {
var err error
ctx.Set(BearerScopes, []string{})
// Parameter object where we will unmarshal all parameters from the context
var params GetFlightschedulesCargoParams
// ------------- Required query parameter "airlines" -------------
err = runtime.BindQueryParameter("form", true, true, "airlines", ctx.QueryParams(), &params.Airlines)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter airlines: %s", err))
}
// ------------- Optional query parameter "flightNumberRanges" -------------
err = runtime.BindQueryParameter("form", true, false, "flightNumberRanges", ctx.QueryParams(), &params.FlightNumberRanges)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter flightNumberRanges: %s", err))
}
// ------------- Required query parameter "startDate" -------------
err = runtime.BindQueryParameter("form", true, true, "startDate", ctx.QueryParams(), &params.StartDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter startDate: %s", err))
}
// ------------- Required query parameter "endDate" -------------
err = runtime.BindQueryParameter("form", true, true, "endDate", ctx.QueryParams(), &params.EndDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter endDate: %s", err))
}
// ------------- Required query parameter "daysOfOperation" -------------
err = runtime.BindQueryParameter("form", true, true, "daysOfOperation", ctx.QueryParams(), &params.DaysOfOperation)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter daysOfOperation: %s", err))
}
// ------------- Required query parameter "timeMode" -------------
err = runtime.BindQueryParameter("form", true, true, "timeMode", ctx.QueryParams(), &params.TimeMode)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter timeMode: %s", err))
}
// ------------- Optional query parameter "origin" -------------
err = runtime.BindQueryParameter("form", true, false, "origin", ctx.QueryParams(), &params.Origin)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter origin: %s", err))
}
// ------------- Optional query parameter "destination" -------------
err = runtime.BindQueryParameter("form", true, false, "destination", ctx.QueryParams(), &params.Destination)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter destination: %s", err))
}
// ------------- Optional query parameter "aircraftTypes" -------------
err = runtime.BindQueryParameter("form", true, false, "aircraftTypes", ctx.QueryParams(), &params.AircraftTypes)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter aircraftTypes: %s", err))
}
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.GetFlightschedulesCargo(ctx, params)
return err
}
// GetFlightschedulesPassenger converts echo context to params.
func (w *ServerInterfaceWrapper) GetFlightschedulesPassenger (ctx echo.Context) error {
var err error
ctx.Set(BearerScopes, []string{})
// Parameter object where we will unmarshal all parameters from the context
var params GetFlightschedulesPassengerParams
// ------------- Required query parameter "airlines" -------------
err = runtime.BindQueryParameter("form", true, true, "airlines", ctx.QueryParams(), &params.Airlines)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter airlines: %s", err))
}
// ------------- Optional query parameter "flightNumberRanges" -------------
err = runtime.BindQueryParameter("form", true, false, "flightNumberRanges", ctx.QueryParams(), &params.FlightNumberRanges)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter flightNumberRanges: %s", err))
}
// ------------- Required query parameter "startDate" -------------
err = runtime.BindQueryParameter("form", true, true, "startDate", ctx.QueryParams(), &params.StartDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter startDate: %s", err))
}
// ------------- Required query parameter "endDate" -------------
err = runtime.BindQueryParameter("form", true, true, "endDate", ctx.QueryParams(), &params.EndDate)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter endDate: %s", err))
}
// ------------- Required query parameter "daysOfOperation" -------------
err = runtime.BindQueryParameter("form", true, true, "daysOfOperation", ctx.QueryParams(), &params.DaysOfOperation)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter daysOfOperation: %s", err))
}
// ------------- Required query parameter "timeMode" -------------
err = runtime.BindQueryParameter("form", true, true, "timeMode", ctx.QueryParams(), &params.TimeMode)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter timeMode: %s", err))
}
// ------------- Optional query parameter "origin" -------------
err = runtime.BindQueryParameter("form", true, false, "origin", ctx.QueryParams(), &params.Origin)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter origin: %s", err))
}
// ------------- Optional query parameter "destination" -------------
err = runtime.BindQueryParameter("form", true, false, "destination", ctx.QueryParams(), &params.Destination)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter destination: %s", err))
}
// ------------- Optional query parameter "aircraftTypes" -------------
err = runtime.BindQueryParameter("form", true, false, "aircraftTypes", ctx.QueryParams(), &params.AircraftTypes)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter aircraftTypes: %s", err))
}
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.GetFlightschedulesPassenger(ctx, params)
return err
}
// This is a simple interface which specifies echo.Route addition functions which
// are present on both echo.Echo and echo.Group, since we want to allow using
// either of them for path registration
type EchoRouter interface {
CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
}
// RegisterHandlers adds each server route to the EchoRouter.
func RegisterHandlers(router EchoRouter, si ServerInterface) {
RegisterHandlersWithBaseURL(router, si, "")
}
// Registers handlers, and prepends BaseURL to the paths, so that the paths
// can be served under a prefix.
func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
wrapper := ServerInterfaceWrapper{
Handler: si,
}
router.GET(baseURL + "/flightschedules", wrapper.GetFlightschedules)
router.GET(baseURL + "/flightschedules/cargo", wrapper.GetFlightschedulesCargo)
router.GET(baseURL + "/flightschedules/passenger", wrapper.GetFlightschedulesPassenger)
}
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"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",
}
// GetSwagger returns the content of the embedded swagger specification file
// or error if failed to decode
func decodeSpec() ([]byte, error) {
zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
if err != nil {
return nil, fmt.Errorf("error base64 decoding spec: %w", err)
}
zr, err := gzip.NewReader(bytes.NewReader(zipped))
if err != nil {
return nil, fmt.Errorf("error decompressing spec: %w", err)
}
var buf bytes.Buffer
_, err = buf.ReadFrom(zr)
if err != nil {
return nil, fmt.Errorf("error decompressing spec: %w", err)
}
return buf.Bytes(), nil
}
var rawSpec = decodeSpecCached()
// a naive cached of a decoded swagger spec
func decodeSpecCached() func() ([]byte, error) {
data, err := decodeSpec()
return func() ([]byte, error) {
return data, err
}
}
// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
res := make(map[string]func() ([]byte, error))
if len(pathToFile) > 0 {
res[pathToFile] = rawSpec
}
return res
}
// GetSwagger returns the Swagger specification corresponding to the generated code
// in this file. The external references of Swagger specification are resolved.
// The logic of resolving external references is tightly connected to "import-mapping" feature.
// Externally referenced files must be embedded in the corresponding golang packages.
// Urls can be supported but this task was out of the scope.
func GetSwagger() (swagger *openapi3.T, err error) {
resolvePath := PathToRawSpec("")
loader := openapi3.NewLoader()
loader.IsExternalRefsAllowed = true
loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
pathToFile := url.String()
pathToFile = path.Clean(pathToFile)
getSpec, ok := resolvePath[pathToFile]
if !ok {
err1 := fmt.Errorf("path not found: %s", pathToFile)
return nil, err1
}
return getSpec()
}
var specData []byte
specData, err = rawSpec()
if err != nil {
return
}
swagger, err = loader.LoadFromData(specData)
if err != nil {
return
}
return
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment