4239 lines
139 KiB
Go
4239 lines
139 KiB
Go
// Package motis provides primitives to interact with the openapi HTTP API.
|
|
//
|
|
// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.4.1 DO NOT EDIT.
|
|
package motis
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"net/url"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/oapi-codegen/runtime"
|
|
)
|
|
|
|
// Defines values for AlertCause.
|
|
const (
|
|
ACCIDENT AlertCause = "ACCIDENT"
|
|
CONSTRUCTION AlertCause = "CONSTRUCTION"
|
|
DEMONSTRATION AlertCause = "DEMONSTRATION"
|
|
HOLIDAY AlertCause = "HOLIDAY"
|
|
MAINTENANCE AlertCause = "MAINTENANCE"
|
|
MEDICALEMERGENCY AlertCause = "MEDICAL_EMERGENCY"
|
|
OTHERCAUSE AlertCause = "OTHER_CAUSE"
|
|
POLICEACTIVITY AlertCause = "POLICE_ACTIVITY"
|
|
STRIKE AlertCause = "STRIKE"
|
|
TECHNICALPROBLEM AlertCause = "TECHNICAL_PROBLEM"
|
|
UNKNOWNCAUSE AlertCause = "UNKNOWN_CAUSE"
|
|
WEATHER AlertCause = "WEATHER"
|
|
)
|
|
|
|
// Defines values for AlertEffect.
|
|
const (
|
|
ACCESSIBILITYISSUE AlertEffect = "ACCESSIBILITY_ISSUE"
|
|
ADDITIONALSERVICE AlertEffect = "ADDITIONAL_SERVICE"
|
|
DETOUR AlertEffect = "DETOUR"
|
|
MODIFIEDSERVICE AlertEffect = "MODIFIED_SERVICE"
|
|
NOEFFECT AlertEffect = "NO_EFFECT"
|
|
NOSERVICE AlertEffect = "NO_SERVICE"
|
|
OTHEREFFECT AlertEffect = "OTHER_EFFECT"
|
|
REDUCEDSERVICE AlertEffect = "REDUCED_SERVICE"
|
|
SIGNIFICANTDELAYS AlertEffect = "SIGNIFICANT_DELAYS"
|
|
STOPMOVED AlertEffect = "STOP_MOVED"
|
|
UNKNOWNEFFECT AlertEffect = "UNKNOWN_EFFECT"
|
|
)
|
|
|
|
// Defines values for AlertSeverityLevel.
|
|
const (
|
|
INFO AlertSeverityLevel = "INFO"
|
|
SEVERE AlertSeverityLevel = "SEVERE"
|
|
UNKNOWNSEVERITY AlertSeverityLevel = "UNKNOWN_SEVERITY"
|
|
WARNING AlertSeverityLevel = "WARNING"
|
|
)
|
|
|
|
// Defines values for Direction.
|
|
const (
|
|
CIRCLECLOCKWISE Direction = "CIRCLE_CLOCKWISE"
|
|
CIRCLECOUNTERCLOCKWISE Direction = "CIRCLE_COUNTERCLOCKWISE"
|
|
CONTINUE Direction = "CONTINUE"
|
|
DEPART Direction = "DEPART"
|
|
ELEVATOR Direction = "ELEVATOR"
|
|
HARDLEFT Direction = "HARD_LEFT"
|
|
HARDRIGHT Direction = "HARD_RIGHT"
|
|
LEFT Direction = "LEFT"
|
|
RIGHT Direction = "RIGHT"
|
|
SLIGHTLYLEFT Direction = "SLIGHTLY_LEFT"
|
|
SLIGHTLYRIGHT Direction = "SLIGHTLY_RIGHT"
|
|
STAIRS Direction = "STAIRS"
|
|
UTURNLEFT Direction = "UTURN_LEFT"
|
|
UTURNRIGHT Direction = "UTURN_RIGHT"
|
|
)
|
|
|
|
// Defines values for ElevationCosts.
|
|
const (
|
|
ElevationCostsHIGH ElevationCosts = "HIGH"
|
|
ElevationCostsLOW ElevationCosts = "LOW"
|
|
ElevationCostsNONE ElevationCosts = "NONE"
|
|
)
|
|
|
|
// Defines values for FareMediaType.
|
|
const (
|
|
FareMediaTypeCONTACTLESSEMV FareMediaType = "CONTACTLESS_EMV"
|
|
FareMediaTypeMOBILEAPP FareMediaType = "MOBILE_APP"
|
|
FareMediaTypeNONE FareMediaType = "NONE"
|
|
FareMediaTypePAPERTICKET FareMediaType = "PAPER_TICKET"
|
|
FareMediaTypeTRANSITCARD FareMediaType = "TRANSIT_CARD"
|
|
)
|
|
|
|
// Defines values for FareTransferRule.
|
|
const (
|
|
AAB FareTransferRule = "A_AB"
|
|
AABB FareTransferRule = "A_AB_B"
|
|
AB FareTransferRule = "AB"
|
|
)
|
|
|
|
// Defines values for LocationType.
|
|
const (
|
|
ADDRESS LocationType = "ADDRESS"
|
|
PLACE LocationType = "PLACE"
|
|
STOP LocationType = "STOP"
|
|
)
|
|
|
|
// Defines values for Mode.
|
|
const (
|
|
ModeAIRPLANE Mode = "AIRPLANE"
|
|
ModeBIKE Mode = "BIKE"
|
|
ModeBUS Mode = "BUS"
|
|
ModeCAR Mode = "CAR"
|
|
ModeCARPARKING Mode = "CAR_PARKING"
|
|
ModeCOACH Mode = "COACH"
|
|
ModeFERRY Mode = "FERRY"
|
|
ModeHIGHSPEEDRAIL Mode = "HIGHSPEED_RAIL"
|
|
ModeLONGDISTANCE Mode = "LONG_DISTANCE"
|
|
ModeMETRO Mode = "METRO"
|
|
ModeNIGHTRAIL Mode = "NIGHT_RAIL"
|
|
ModeODM Mode = "ODM"
|
|
ModeOTHER Mode = "OTHER"
|
|
ModeRAIL Mode = "RAIL"
|
|
ModeREGIONALFASTRAIL Mode = "REGIONAL_FAST_RAIL"
|
|
ModeREGIONALRAIL Mode = "REGIONAL_RAIL"
|
|
ModeRENTAL Mode = "RENTAL"
|
|
ModeSUBWAY Mode = "SUBWAY"
|
|
ModeTRAM Mode = "TRAM"
|
|
ModeTRANSIT Mode = "TRANSIT"
|
|
ModeWALK Mode = "WALK"
|
|
)
|
|
|
|
// Defines values for PedestrianProfile.
|
|
const (
|
|
FOOT PedestrianProfile = "FOOT"
|
|
WHEELCHAIR PedestrianProfile = "WHEELCHAIR"
|
|
)
|
|
|
|
// Defines values for PickupDropoffType.
|
|
const (
|
|
PickupDropoffTypeNORMAL PickupDropoffType = "NORMAL"
|
|
PickupDropoffTypeNOTALLOWED PickupDropoffType = "NOT_ALLOWED"
|
|
)
|
|
|
|
// Defines values for RentalFormFactor.
|
|
const (
|
|
RentalFormFactorBICYCLE RentalFormFactor = "BICYCLE"
|
|
RentalFormFactorCAR RentalFormFactor = "CAR"
|
|
RentalFormFactorCARGOBICYCLE RentalFormFactor = "CARGO_BICYCLE"
|
|
RentalFormFactorMOPED RentalFormFactor = "MOPED"
|
|
RentalFormFactorOTHER RentalFormFactor = "OTHER"
|
|
RentalFormFactorSCOOTERSEATED RentalFormFactor = "SCOOTER_SEATED"
|
|
RentalFormFactorSCOOTERSTANDING RentalFormFactor = "SCOOTER_STANDING"
|
|
)
|
|
|
|
// Defines values for RentalPropulsionType.
|
|
const (
|
|
COMBUSTION RentalPropulsionType = "COMBUSTION"
|
|
COMBUSTIONDIESEL RentalPropulsionType = "COMBUSTION_DIESEL"
|
|
ELECTRIC RentalPropulsionType = "ELECTRIC"
|
|
ELECTRICASSIST RentalPropulsionType = "ELECTRIC_ASSIST"
|
|
HUMAN RentalPropulsionType = "HUMAN"
|
|
HYBRID RentalPropulsionType = "HYBRID"
|
|
HYDROGENFUELCELL RentalPropulsionType = "HYDROGEN_FUEL_CELL"
|
|
PLUGINHYBRID RentalPropulsionType = "PLUG_IN_HYBRID"
|
|
)
|
|
|
|
// Defines values for RentalReturnConstraint.
|
|
const (
|
|
ANYSTATION RentalReturnConstraint = "ANY_STATION"
|
|
NONE RentalReturnConstraint = "NONE"
|
|
ROUNDTRIPSTATION RentalReturnConstraint = "ROUNDTRIP_STATION"
|
|
)
|
|
|
|
// Defines values for VertexType.
|
|
const (
|
|
VertexTypeBIKESHARE VertexType = "BIKESHARE"
|
|
VertexTypeNORMAL VertexType = "NORMAL"
|
|
VertexTypeTRANSIT VertexType = "TRANSIT"
|
|
)
|
|
|
|
// Defines values for StoptimesParamsDirection.
|
|
const (
|
|
EARLIER StoptimesParamsDirection = "EARLIER"
|
|
LATER StoptimesParamsDirection = "LATER"
|
|
)
|
|
|
|
// Alert An alert, indicating some sort of incident in the public transit network.
|
|
type Alert struct {
|
|
// Cause Cause of this alert.
|
|
Cause *AlertCause `json:"cause,omitempty"`
|
|
|
|
// CauseDetail Description of the cause of the alert that allows for agency-specific language;
|
|
// more specific than the Cause.
|
|
CauseDetail *string `json:"causeDetail,omitempty"`
|
|
|
|
// CommunicationPeriod Time when the alert should be shown to the user.
|
|
// If missing, the alert will be shown as long as it appears in the feed.
|
|
// If multiple ranges are given, the alert will be shown during all of them.
|
|
CommunicationPeriod *[]TimeRange `json:"communicationPeriod,omitempty"`
|
|
|
|
// DescriptionText Description for the alert.
|
|
// This plain-text string will be formatted as the body of the alert (or shown on an explicit "expand" request by the user).
|
|
// The information in the description should add to the information of the header.
|
|
DescriptionText string `json:"descriptionText"`
|
|
|
|
// Effect The effect of this problem on the affected entity.
|
|
Effect *AlertEffect `json:"effect,omitempty"`
|
|
|
|
// EffectDetail Description of the effect of the alert that allows for agency-specific language;
|
|
// more specific than the Effect.
|
|
EffectDetail *string `json:"effectDetail,omitempty"`
|
|
|
|
// HeaderText Header for the alert. This plain-text string will be highlighted, for example in boldface.
|
|
HeaderText string `json:"headerText"`
|
|
|
|
// ImageAlternativeText Text describing the appearance of the linked image in the image field
|
|
// (e.g., in case the image can't be displayed or the user can't see the image for accessibility reasons).
|
|
// See the HTML spec for alt image text.
|
|
ImageAlternativeText *string `json:"imageAlternativeText,omitempty"`
|
|
|
|
// ImageMediaType IANA media type as to specify the type of image to be displayed. The type must start with "image/"
|
|
ImageMediaType *string `json:"imageMediaType,omitempty"`
|
|
|
|
// ImageUrl String containing an URL linking to an image.
|
|
ImageUrl *string `json:"imageUrl,omitempty"`
|
|
|
|
// ImpactPeriod Time when the services are affected by the disruption mentioned in the alert.
|
|
ImpactPeriod *[]TimeRange `json:"impactPeriod,omitempty"`
|
|
|
|
// SeverityLevel The severity of the alert.
|
|
SeverityLevel *AlertSeverityLevel `json:"severityLevel,omitempty"`
|
|
|
|
// TtsDescriptionText Text containing a description for the alert to be used for text-to-speech implementations.
|
|
// This field is the text-to-speech version of description_text.
|
|
// It should contain the same information as description_text but formatted such that it can be read as text-to-speech
|
|
// (for example, abbreviations removed, numbers spelled out, etc.)
|
|
TtsDescriptionText *string `json:"ttsDescriptionText,omitempty"`
|
|
|
|
// TtsHeaderText Text containing the alert's header to be used for text-to-speech implementations.
|
|
// This field is the text-to-speech version of header_text.
|
|
// It should contain the same information as headerText but formatted such that it can read as text-to-speech
|
|
// (for example, abbreviations removed, numbers spelled out, etc.)
|
|
TtsHeaderText *string `json:"ttsHeaderText,omitempty"`
|
|
|
|
// Url The URL which provides additional information about the alert.
|
|
Url *string `json:"url,omitempty"`
|
|
}
|
|
|
|
// AlertCause Cause of this alert.
|
|
type AlertCause string
|
|
|
|
// AlertEffect The effect of this problem on the affected entity.
|
|
type AlertEffect string
|
|
|
|
// AlertSeverityLevel The severity of the alert.
|
|
type AlertSeverityLevel string
|
|
|
|
// Area Administrative area
|
|
type Area struct {
|
|
// AdminLevel [OpenStreetMap `admin_level`](https://wiki.openstreetmap.org/wiki/Key:admin_level)
|
|
// of the area
|
|
AdminLevel float32 `json:"adminLevel"`
|
|
|
|
// Default Whether this area should be displayed as default area (area with admin level closest 7)
|
|
Default *bool `json:"default,omitempty"`
|
|
|
|
// Matched Whether this area was matched by the input text
|
|
Matched bool `json:"matched"`
|
|
|
|
// Name Name of the area
|
|
Name string `json:"name"`
|
|
|
|
// Unique Set for the first area after the `default` area that distinguishes areas
|
|
// if the match is ambiguous regarding (`default` area + place name / street [+ house number]).
|
|
Unique *bool `json:"unique,omitempty"`
|
|
}
|
|
|
|
// Direction defines model for Direction.
|
|
type Direction string
|
|
|
|
// Duration Object containing duration if a path was found or none if no path was found
|
|
type Duration struct {
|
|
// Duration duration in seconds if a path was found, otherwise missing
|
|
Duration *float32 `json:"duration,omitempty"`
|
|
}
|
|
|
|
// ElevationCosts Different elevation cost profiles for street routing.
|
|
// Using a elevation cost profile will prefer routes with a smaller incline and smaller difference in elevation, even if the routed way is longer.
|
|
//
|
|
// - `NONE`: Ignore elevation data for routing. This is the default behavior
|
|
// - `LOW`: Add a low penalty for inclines. This will favor longer paths, if the elevation increase and incline are smaller.
|
|
// - `HIGH`: Add a high penalty for inclines. This will favor even longer paths, if the elevation increase and incline are smaller.
|
|
type ElevationCosts string
|
|
|
|
// EncodedPolyline defines model for EncodedPolyline.
|
|
type EncodedPolyline struct {
|
|
// Length The number of points in the string
|
|
Length int `json:"length"`
|
|
|
|
// Points The encoded points of the polyline using the Google polyline encoding.
|
|
Points string `json:"points"`
|
|
|
|
// Precision The precision of the returned polyline (7 for /v1, 6 for /v2)
|
|
// Be aware that with precision 7, coordinates with |longitude| > 107.37 are undefined/will overflow.
|
|
Precision int `json:"precision"`
|
|
}
|
|
|
|
// FareMedia defines model for FareMedia.
|
|
type FareMedia struct {
|
|
// FareMediaName Name of the fare media. Required for transit cards and mobile apps.
|
|
FareMediaName *string `json:"fareMediaName,omitempty"`
|
|
FareMediaType FareMediaType `json:"fareMediaType"`
|
|
}
|
|
|
|
// FareMediaType defines model for FareMediaType.
|
|
type FareMediaType string
|
|
|
|
// FareProduct defines model for FareProduct.
|
|
type FareProduct struct {
|
|
// Amount The cost of the fare product. May be negative to represent transfer discounts. May be zero to represent a fare product that is free.
|
|
Amount float32 `json:"amount"`
|
|
|
|
// Currency ISO 4217 currency code. The currency of the cost of the fare product.
|
|
Currency string `json:"currency"`
|
|
Media *FareMedia `json:"media,omitempty"`
|
|
|
|
// Name The name of the fare product as displayed to riders.
|
|
Name string `json:"name"`
|
|
RiderCategory *RiderCategory `json:"riderCategory,omitempty"`
|
|
}
|
|
|
|
// FareTransfer The concept is derived from: https://gtfs.org/documentation/schedule/reference/#fare_transfer_rulestxt
|
|
//
|
|
// Terminology:
|
|
// - **Leg**: An itinerary leg as described by the `Leg` type of this API description.
|
|
// - **Effective Fare Leg**: Itinerary legs can be joined together to form one *effective fare leg*.
|
|
// - **Fare Transfer**: A fare transfer groups two or more effective fare legs.
|
|
// - **A** is the first *effective fare leg* of potentially multiple consecutive legs contained in a fare transfer
|
|
// - **B** is any *effective fare leg* following the first *effective fare leg* in this transfer
|
|
// - **AB** are all changes between *effective fare legs* contained in this transfer
|
|
//
|
|
// The fare transfer rule is used to derive the final set of products of the itinerary legs contained in this transfer:
|
|
// - A_AB means that any product from the first effective fare leg combined with the product attached to the transfer itself (AB) which can be empty (= free). Note that all subsequent effective fare leg products need to be ignored in this case.
|
|
// - A_AB_B mean that a product for each effective fare leg needs to be purchased in a addition to the product attached to the transfer itself (AB) which can be empty (= free)
|
|
// - AB only the transfer product itself has to be purchased. Note that all fare products attached to the contained effective fare legs need to be ignored in this case.
|
|
//
|
|
// An itinerary `Leg` references the index of the fare transfer and the index of the effective fare leg in this transfer it belongs to.
|
|
type FareTransfer struct {
|
|
// EffectiveFareLegProducts Lists all valid fare products for the effective fare legs.
|
|
// This is an `array<array<FareProduct>>` where the inner array
|
|
// lists all possible fare products that would cover this effective fare leg.
|
|
// Each "effective fare leg" can have multiple options for adult/child/weekly/monthly/day/one-way tickets etc.
|
|
// You can see the outer array as AND (you need one ticket for each effective fare leg (`A_AB_B`), the first effective fare leg (`A_AB`) or no fare leg at all but only the transfer product (`AB`)
|
|
// and the inner array as OR (you can choose which ticket to buy)
|
|
EffectiveFareLegProducts [][]FareProduct `json:"effectiveFareLegProducts"`
|
|
Rule *FareTransferRule `json:"rule,omitempty"`
|
|
TransferProduct *FareProduct `json:"transferProduct,omitempty"`
|
|
}
|
|
|
|
// FareTransferRule defines model for FareTransferRule.
|
|
type FareTransferRule string
|
|
|
|
// Footpath footpath from one location to another
|
|
type Footpath struct {
|
|
// Default optional; missing if the GTFS did not contain a footpath
|
|
// footpath duration in minutes according to GTFS (+heuristics)
|
|
Default *float32 `json:"default,omitempty"`
|
|
|
|
// Foot optional; missing if no path was found (timetable / osr)
|
|
// footpath duration in minutes for the foot profile
|
|
Foot *float32 `json:"foot,omitempty"`
|
|
|
|
// FootRouted optional; missing if no path was found with foot routing
|
|
// footpath duration in minutes for the foot profile
|
|
FootRouted *float32 `json:"footRouted,omitempty"`
|
|
To Place `json:"to"`
|
|
|
|
// Wheelchair optional; missing if no path was found with the wheelchair profile
|
|
// footpath duration in minutes for the wheelchair profile
|
|
Wheelchair *float32 `json:"wheelchair,omitempty"`
|
|
|
|
// WheelchairRouted optional; missing if no path was found with the wheelchair profile
|
|
// footpath duration in minutes for the wheelchair profile
|
|
WheelchairRouted *float32 `json:"wheelchairRouted,omitempty"`
|
|
|
|
// WheelchairUsesElevator optional; missing if no path was found with the wheelchair profile
|
|
// true if the wheelchair path uses an elevator
|
|
WheelchairUsesElevator *bool `json:"wheelchairUsesElevator,omitempty"`
|
|
}
|
|
|
|
// Itinerary defines model for Itinerary.
|
|
type Itinerary struct {
|
|
// Duration journey duration in seconds
|
|
Duration int `json:"duration"`
|
|
|
|
// EndTime journey arrival time
|
|
EndTime time.Time `json:"endTime"`
|
|
|
|
// FareTransfers Fare information
|
|
FareTransfers *[]FareTransfer `json:"fareTransfers,omitempty"`
|
|
|
|
// Legs Journey legs
|
|
Legs []Leg `json:"legs"`
|
|
|
|
// StartTime journey departure time
|
|
StartTime time.Time `json:"startTime"`
|
|
|
|
// Transfers The number of transfers this trip has.
|
|
Transfers int `json:"transfers"`
|
|
}
|
|
|
|
// Leg defines model for Leg.
|
|
type Leg struct {
|
|
AgencyId *string `json:"agencyId,omitempty"`
|
|
AgencyName *string `json:"agencyName,omitempty"`
|
|
AgencyUrl *string `json:"agencyUrl,omitempty"`
|
|
|
|
// Alerts Alerts for this stop.
|
|
Alerts *[]Alert `json:"alerts,omitempty"`
|
|
|
|
// Cancelled Whether this trip is cancelled
|
|
Cancelled *bool `json:"cancelled,omitempty"`
|
|
|
|
// Distance For non-transit legs the distance traveled while traversing this leg in meters.
|
|
Distance *float32 `json:"distance,omitempty"`
|
|
|
|
// Duration Leg duration in seconds
|
|
//
|
|
// If leg is footpath:
|
|
// The footpath duration is derived from the default footpath
|
|
// duration using the query parameters `transferTimeFactor` and
|
|
// `additionalTransferTime` as follows:
|
|
// `leg.duration = defaultDuration * transferTimeFactor + additionalTransferTime.`
|
|
// In case the defaultDuration is needed, it can be calculated by
|
|
// `defaultDuration = (leg.duration - additionalTransferTime) / transferTimeFactor`.
|
|
// Note that the default values are `transferTimeFactor = 1` and
|
|
// `additionalTransferTime = 0` in case they are not explicitly
|
|
// provided in the query.
|
|
Duration int `json:"duration"`
|
|
|
|
// EffectiveFareLegIndex Index into the `Itinerary.fareTransfers[fareTransferIndex].effectiveFareLegProducts` array
|
|
// to identify which effective fare leg this itinerary leg belongs to
|
|
EffectiveFareLegIndex *int `json:"effectiveFareLegIndex,omitempty"`
|
|
|
|
// EndTime leg arrival time
|
|
EndTime time.Time `json:"endTime"`
|
|
|
|
// FareTransferIndex Index into `Itinerary.fareTransfers` array
|
|
// to identify which fare transfer this leg belongs to
|
|
FareTransferIndex *int `json:"fareTransferIndex,omitempty"`
|
|
From Place `json:"from"`
|
|
|
|
// Headsign For transit legs, the headsign of the bus or train being used.
|
|
// For non-transit legs, null
|
|
Headsign *string `json:"headsign,omitempty"`
|
|
|
|
// InterlineWithPreviousLeg For transit legs, if the rider should stay on the vehicle as it changes route names.
|
|
InterlineWithPreviousLeg *bool `json:"interlineWithPreviousLeg,omitempty"`
|
|
|
|
// IntermediateStops For transit legs, intermediate stops between the Place where the leg originates
|
|
// and the Place where the leg ends. For non-transit legs, null.
|
|
IntermediateStops *[]Place `json:"intermediateStops,omitempty"`
|
|
LegGeometry EncodedPolyline `json:"legGeometry"`
|
|
|
|
// Mode # Street modes
|
|
//
|
|
// - `WALK`
|
|
// - `BIKE`
|
|
// - `RENTAL` Experimental. Expect unannounced breaking changes (without version bumps).
|
|
// - `CAR`
|
|
// - `CAR_PARKING`
|
|
// - `ODM`
|
|
//
|
|
// # Transit modes
|
|
//
|
|
// - `TRANSIT`: translates to `RAIL,SUBWAY,TRAM,BUS,FERRY,AIRPLANE,COACH`
|
|
// - `TRAM`: trams
|
|
// - `SUBWAY`: subway trains
|
|
// - `FERRY`: ferries
|
|
// - `AIRPLANE`: airline flights
|
|
// - `BUS`: short distance buses (does not include `COACH`)
|
|
// - `COACH`: long distance buses (does not include `BUS`)
|
|
// - `RAIL`: translates to `HIGHSPEED_RAIL,LONG_DISTANCE_RAIL,NIGHT_RAIL,REGIONAL_RAIL,REGIONAL_FAST_RAIL`
|
|
// - `METRO`: metro trains
|
|
// - `HIGHSPEED_RAIL`: long distance high speed trains (e.g. TGV)
|
|
// - `LONG_DISTANCE`: long distance inter city trains
|
|
// - `NIGHT_RAIL`: long distance night trains
|
|
// - `REGIONAL_FAST_RAIL`: regional express routes that skip low traffic stops to be faster
|
|
// - `REGIONAL_RAIL`: regional train
|
|
Mode Mode `json:"mode"`
|
|
|
|
// RealTime Whether there is real-time data about this leg
|
|
RealTime bool `json:"realTime"`
|
|
|
|
// Rental Vehicle rental
|
|
Rental *Rental `json:"rental,omitempty"`
|
|
RouteColor *string `json:"routeColor,omitempty"`
|
|
RouteShortName *string `json:"routeShortName,omitempty"`
|
|
RouteTextColor *string `json:"routeTextColor,omitempty"`
|
|
RouteType *string `json:"routeType,omitempty"`
|
|
|
|
// Scheduled Whether this leg was originally scheduled to run or is an additional service.
|
|
// Scheduled times will equal realtime times in this case.
|
|
Scheduled bool `json:"scheduled"`
|
|
|
|
// ScheduledEndTime scheduled leg arrival time
|
|
ScheduledEndTime time.Time `json:"scheduledEndTime"`
|
|
|
|
// ScheduledStartTime scheduled leg departure time
|
|
ScheduledStartTime time.Time `json:"scheduledStartTime"`
|
|
|
|
// Source Filename and line number where this trip is from
|
|
Source *string `json:"source,omitempty"`
|
|
|
|
// StartTime leg departure time
|
|
StartTime time.Time `json:"startTime"`
|
|
|
|
// Steps A series of turn by turn instructions
|
|
// used for walking, biking and driving.
|
|
Steps *[]StepInstruction `json:"steps,omitempty"`
|
|
To Place `json:"to"`
|
|
TripId *string `json:"tripId,omitempty"`
|
|
}
|
|
|
|
// LocationType location type
|
|
type LocationType string
|
|
|
|
// Match GeoCoding match
|
|
type Match struct {
|
|
// Areas list of areas
|
|
Areas []Area `json:"areas"`
|
|
|
|
// HouseNumber house number
|
|
HouseNumber *string `json:"houseNumber,omitempty"`
|
|
|
|
// Id unique ID of the location
|
|
Id string `json:"id"`
|
|
|
|
// Lat latitude
|
|
Lat float32 `json:"lat"`
|
|
|
|
// Level level according to OpenStreetMap
|
|
// (at the moment only for public transport)
|
|
Level *float32 `json:"level,omitempty"`
|
|
|
|
// Lon longitude
|
|
Lon float32 `json:"lon"`
|
|
|
|
// Name name of the location (transit stop / PoI / address)
|
|
Name string `json:"name"`
|
|
|
|
// Score score according to the internal scoring system (the scoring algorithm might change in the future)
|
|
Score float32 `json:"score"`
|
|
|
|
// Street street name
|
|
Street *string `json:"street,omitempty"`
|
|
|
|
// Tokens list of non-overlapping tokens that were matched
|
|
Tokens []Token `json:"tokens"`
|
|
|
|
// Type location type
|
|
Type LocationType `json:"type"`
|
|
|
|
// Zip zip code
|
|
Zip *string `json:"zip,omitempty"`
|
|
}
|
|
|
|
// Mode # Street modes
|
|
//
|
|
// - `WALK`
|
|
// - `BIKE`
|
|
// - `RENTAL` Experimental. Expect unannounced breaking changes (without version bumps).
|
|
// - `CAR`
|
|
// - `CAR_PARKING`
|
|
// - `ODM`
|
|
//
|
|
// # Transit modes
|
|
//
|
|
// - `TRANSIT`: translates to `RAIL,SUBWAY,TRAM,BUS,FERRY,AIRPLANE,COACH`
|
|
// - `TRAM`: trams
|
|
// - `SUBWAY`: subway trains
|
|
// - `FERRY`: ferries
|
|
// - `AIRPLANE`: airline flights
|
|
// - `BUS`: short distance buses (does not include `COACH`)
|
|
// - `COACH`: long distance buses (does not include `BUS`)
|
|
// - `RAIL`: translates to `HIGHSPEED_RAIL,LONG_DISTANCE_RAIL,NIGHT_RAIL,REGIONAL_RAIL,REGIONAL_FAST_RAIL`
|
|
// - `METRO`: metro trains
|
|
// - `HIGHSPEED_RAIL`: long distance high speed trains (e.g. TGV)
|
|
// - `LONG_DISTANCE`: long distance inter city trains
|
|
// - `NIGHT_RAIL`: long distance night trains
|
|
// - `REGIONAL_FAST_RAIL`: regional express routes that skip low traffic stops to be faster
|
|
// - `REGIONAL_RAIL`: regional train
|
|
type Mode string
|
|
|
|
// PedestrianProfile Different accessibility profiles for pedestrians.
|
|
type PedestrianProfile string
|
|
|
|
// PickupDropoffType - `NORMAL` - entry/exit is possible normally
|
|
// - `NOT_ALLOWED` - entry/exit is not allowed
|
|
type PickupDropoffType string
|
|
|
|
// Place defines model for Place.
|
|
type Place struct {
|
|
// Alerts Alerts for this stop.
|
|
Alerts *[]Alert `json:"alerts,omitempty"`
|
|
|
|
// Arrival arrival time
|
|
Arrival *time.Time `json:"arrival,omitempty"`
|
|
|
|
// Cancelled Whether this stop is cancelled due to the realtime situation.
|
|
Cancelled *bool `json:"cancelled,omitempty"`
|
|
|
|
// Departure departure time
|
|
Departure *time.Time `json:"departure,omitempty"`
|
|
|
|
// DropoffType - `NORMAL` - entry/exit is possible normally
|
|
// - `NOT_ALLOWED` - entry/exit is not allowed
|
|
DropoffType *PickupDropoffType `json:"dropoffType,omitempty"`
|
|
|
|
// Lat latitude
|
|
Lat float32 `json:"lat"`
|
|
|
|
// Level level according to OpenStreetMap
|
|
Level float32 `json:"level"`
|
|
|
|
// Lon longitude
|
|
Lon float32 `json:"lon"`
|
|
|
|
// Name name of the transit stop / PoI / address
|
|
Name string `json:"name"`
|
|
|
|
// PickupType - `NORMAL` - entry/exit is possible normally
|
|
// - `NOT_ALLOWED` - entry/exit is not allowed
|
|
PickupType *PickupDropoffType `json:"pickupType,omitempty"`
|
|
|
|
// ScheduledArrival scheduled arrival time
|
|
ScheduledArrival *time.Time `json:"scheduledArrival,omitempty"`
|
|
|
|
// ScheduledDeparture scheduled departure time
|
|
ScheduledDeparture *time.Time `json:"scheduledDeparture,omitempty"`
|
|
|
|
// ScheduledTrack scheduled track from the static schedule timetable dataset
|
|
ScheduledTrack *string `json:"scheduledTrack,omitempty"`
|
|
|
|
// StopId The ID of the stop. This is often something that users don't care about.
|
|
StopId *string `json:"stopId,omitempty"`
|
|
|
|
// Track The current track/platform information, updated with real-time updates if available.
|
|
// Can be missing if neither real-time updates nor the schedule timetable contains track information.
|
|
Track *string `json:"track,omitempty"`
|
|
|
|
// VertexType - `NORMAL` - latitude / longitude coordinate or address
|
|
// - `BIKESHARE` - bike sharing station
|
|
// - `TRANSIT` - transit stop
|
|
VertexType *VertexType `json:"vertexType,omitempty"`
|
|
}
|
|
|
|
// Reachable Object containing all reachable places by One-to-All search
|
|
type Reachable struct {
|
|
// All List of locations reachable by One-to-All
|
|
All *[]ReachablePlace `json:"all,omitempty"`
|
|
One *Place `json:"one,omitempty"`
|
|
}
|
|
|
|
// ReachablePlace Place reachable by One-to-All
|
|
type ReachablePlace struct {
|
|
// Duration Total travel duration
|
|
Duration *int `json:"duration,omitempty"`
|
|
|
|
// K k is the smallest number, for which a journey with the shortest duration and at most k-1 transfers exist.
|
|
// You can think of k as the number of connections used.
|
|
//
|
|
// In more detail:
|
|
//
|
|
// k=0: No connection, e.g. for the one location
|
|
// k=1: Direct connection
|
|
// k=2: Connection with 1 transfer
|
|
K *int `json:"k,omitempty"`
|
|
Place *Place `json:"place,omitempty"`
|
|
}
|
|
|
|
// Rental Vehicle rental
|
|
type Rental struct {
|
|
FormFactor *RentalFormFactor `json:"formFactor,omitempty"`
|
|
|
|
// FromStationName Name of the station where the vehicle is picked up (empty for free floating vehicles)
|
|
FromStationName *string `json:"fromStationName,omitempty"`
|
|
PropulsionType *RentalPropulsionType `json:"propulsionType,omitempty"`
|
|
|
|
// RentalUriAndroid Rental URI for Android (deep link to the specific station or vehicle)
|
|
RentalUriAndroid *string `json:"rentalUriAndroid,omitempty"`
|
|
|
|
// RentalUriIOS Rental URI for iOS (deep link to the specific station or vehicle)
|
|
RentalUriIOS *string `json:"rentalUriIOS,omitempty"`
|
|
|
|
// RentalUriWeb Rental URI for web (deep link to the specific station or vehicle)
|
|
RentalUriWeb *string `json:"rentalUriWeb,omitempty"`
|
|
ReturnConstraint *RentalReturnConstraint `json:"returnConstraint,omitempty"`
|
|
|
|
// StationName Name of the station
|
|
StationName *string `json:"stationName,omitempty"`
|
|
|
|
// SystemId Vehicle share system ID
|
|
SystemId string `json:"systemId"`
|
|
|
|
// SystemName Vehicle share system name
|
|
SystemName *string `json:"systemName,omitempty"`
|
|
|
|
// ToStationName Name of the station where the vehicle is returned (empty for free floating vehicles)
|
|
ToStationName *string `json:"toStationName,omitempty"`
|
|
|
|
// Url URL of the vehicle share system
|
|
Url *string `json:"url,omitempty"`
|
|
}
|
|
|
|
// RentalFormFactor defines model for RentalFormFactor.
|
|
type RentalFormFactor string
|
|
|
|
// RentalPropulsionType defines model for RentalPropulsionType.
|
|
type RentalPropulsionType string
|
|
|
|
// RentalReturnConstraint defines model for RentalReturnConstraint.
|
|
type RentalReturnConstraint string
|
|
|
|
// RiderCategory defines model for RiderCategory.
|
|
type RiderCategory struct {
|
|
// EligibilityUrl URL to a web page providing detailed information about the rider category and/or its eligibility criteria.
|
|
EligibilityUrl *string `json:"eligibilityUrl,omitempty"`
|
|
|
|
// IsDefaultFareCategory Specifies if this category should be considered the default (i.e. the main category displayed to riders).
|
|
IsDefaultFareCategory bool `json:"isDefaultFareCategory"`
|
|
|
|
// RiderCategoryName Rider category name as displayed to the rider.
|
|
RiderCategoryName string `json:"riderCategoryName"`
|
|
}
|
|
|
|
// StepInstruction defines model for StepInstruction.
|
|
type StepInstruction struct {
|
|
// Area Not implemented!
|
|
// This step is on an open area, such as a plaza or train platform,
|
|
// and thus the directions should say something like "cross"
|
|
Area bool `json:"area"`
|
|
|
|
// Distance The distance in meters that this step takes.
|
|
Distance float32 `json:"distance"`
|
|
|
|
// Exit Not implemented!
|
|
// When exiting a highway or traffic circle, the exit name/number.
|
|
Exit string `json:"exit"`
|
|
|
|
// FromLevel level where this segment starts, based on OpenStreetMap data
|
|
FromLevel float32 `json:"fromLevel"`
|
|
|
|
// OsmWay OpenStreetMap way index
|
|
OsmWay *int `json:"osmWay,omitempty"`
|
|
Polyline EncodedPolyline `json:"polyline"`
|
|
RelativeDirection Direction `json:"relativeDirection"`
|
|
|
|
// StayOn Not implemented!
|
|
// Indicates whether or not a street changes direction at an intersection.
|
|
StayOn bool `json:"stayOn"`
|
|
|
|
// StreetName The name of the street.
|
|
StreetName string `json:"streetName"`
|
|
|
|
// ToLevel level where this segment starts, based on OpenStreetMap data
|
|
ToLevel float32 `json:"toLevel"`
|
|
}
|
|
|
|
// StopTime departure or arrival event at a stop
|
|
type StopTime struct {
|
|
AgencyId string `json:"agencyId"`
|
|
AgencyName string `json:"agencyName"`
|
|
AgencyUrl string `json:"agencyUrl"`
|
|
|
|
// Cancelled Whether the departure/arrival is cancelled due to the realtime situation.
|
|
Cancelled bool `json:"cancelled"`
|
|
|
|
// Headsign For transit legs, the headsign of the bus or train being used.
|
|
// For non-transit legs, null
|
|
Headsign string `json:"headsign"`
|
|
|
|
// Mode # Street modes
|
|
//
|
|
// - `WALK`
|
|
// - `BIKE`
|
|
// - `RENTAL` Experimental. Expect unannounced breaking changes (without version bumps).
|
|
// - `CAR`
|
|
// - `CAR_PARKING`
|
|
// - `ODM`
|
|
//
|
|
// # Transit modes
|
|
//
|
|
// - `TRANSIT`: translates to `RAIL,SUBWAY,TRAM,BUS,FERRY,AIRPLANE,COACH`
|
|
// - `TRAM`: trams
|
|
// - `SUBWAY`: subway trains
|
|
// - `FERRY`: ferries
|
|
// - `AIRPLANE`: airline flights
|
|
// - `BUS`: short distance buses (does not include `COACH`)
|
|
// - `COACH`: long distance buses (does not include `BUS`)
|
|
// - `RAIL`: translates to `HIGHSPEED_RAIL,LONG_DISTANCE_RAIL,NIGHT_RAIL,REGIONAL_RAIL,REGIONAL_FAST_RAIL`
|
|
// - `METRO`: metro trains
|
|
// - `HIGHSPEED_RAIL`: long distance high speed trains (e.g. TGV)
|
|
// - `LONG_DISTANCE`: long distance inter city trains
|
|
// - `NIGHT_RAIL`: long distance night trains
|
|
// - `REGIONAL_FAST_RAIL`: regional express routes that skip low traffic stops to be faster
|
|
// - `REGIONAL_RAIL`: regional train
|
|
Mode Mode `json:"mode"`
|
|
|
|
// PickupDropoffType - `NORMAL` - entry/exit is possible normally
|
|
// - `NOT_ALLOWED` - entry/exit is not allowed
|
|
PickupDropoffType PickupDropoffType `json:"pickupDropoffType"`
|
|
Place Place `json:"place"`
|
|
|
|
// RealTime Whether there is real-time data about this leg
|
|
RealTime bool `json:"realTime"`
|
|
RouteColor *string `json:"routeColor,omitempty"`
|
|
RouteShortName string `json:"routeShortName"`
|
|
RouteTextColor *string `json:"routeTextColor,omitempty"`
|
|
|
|
// Source Filename and line number where this trip is from
|
|
Source string `json:"source"`
|
|
TripId string `json:"tripId"`
|
|
}
|
|
|
|
// TimeRange A time interval.
|
|
// The interval is considered active at time t if t is greater than or equal to the start time and less than the end time.
|
|
type TimeRange struct {
|
|
// End If missing, the interval ends at plus infinity.
|
|
// If a TimeRange is provided, either start or end must be provided - both fields cannot be empty.
|
|
End *time.Time `json:"end,omitempty"`
|
|
|
|
// Start If missing, the interval starts at minus infinity.
|
|
// If a TimeRange is provided, either start or end must be provided - both fields cannot be empty.
|
|
Start *time.Time `json:"start,omitempty"`
|
|
}
|
|
|
|
// Token Matched token range (from index, length)
|
|
type Token = []float32
|
|
|
|
// TripInfo trip id and name
|
|
type TripInfo struct {
|
|
// RouteShortName trip display name
|
|
RouteShortName string `json:"routeShortName"`
|
|
|
|
// TripId trip ID (dataset trip id prefixed with the dataset tag)
|
|
TripId string `json:"tripId"`
|
|
}
|
|
|
|
// TripSegment trip segment between two stops to show a trip on a map
|
|
type TripSegment struct {
|
|
// Arrival arrival time
|
|
Arrival time.Time `json:"arrival"`
|
|
|
|
// Departure departure time
|
|
Departure time.Time `json:"departure"`
|
|
|
|
// Distance distance in meters
|
|
Distance float32 `json:"distance"`
|
|
From Place `json:"from"`
|
|
|
|
// Mode # Street modes
|
|
//
|
|
// - `WALK`
|
|
// - `BIKE`
|
|
// - `RENTAL` Experimental. Expect unannounced breaking changes (without version bumps).
|
|
// - `CAR`
|
|
// - `CAR_PARKING`
|
|
// - `ODM`
|
|
//
|
|
// # Transit modes
|
|
//
|
|
// - `TRANSIT`: translates to `RAIL,SUBWAY,TRAM,BUS,FERRY,AIRPLANE,COACH`
|
|
// - `TRAM`: trams
|
|
// - `SUBWAY`: subway trains
|
|
// - `FERRY`: ferries
|
|
// - `AIRPLANE`: airline flights
|
|
// - `BUS`: short distance buses (does not include `COACH`)
|
|
// - `COACH`: long distance buses (does not include `BUS`)
|
|
// - `RAIL`: translates to `HIGHSPEED_RAIL,LONG_DISTANCE_RAIL,NIGHT_RAIL,REGIONAL_RAIL,REGIONAL_FAST_RAIL`
|
|
// - `METRO`: metro trains
|
|
// - `HIGHSPEED_RAIL`: long distance high speed trains (e.g. TGV)
|
|
// - `LONG_DISTANCE`: long distance inter city trains
|
|
// - `NIGHT_RAIL`: long distance night trains
|
|
// - `REGIONAL_FAST_RAIL`: regional express routes that skip low traffic stops to be faster
|
|
// - `REGIONAL_RAIL`: regional train
|
|
Mode Mode `json:"mode"`
|
|
|
|
// Polyline Google polyline encoded coordinate sequence (with precision 5) where the trip travels on this segment.
|
|
Polyline string `json:"polyline"`
|
|
|
|
// RealTime Whether there is real-time data about this leg
|
|
RealTime bool `json:"realTime"`
|
|
RouteColor *string `json:"routeColor,omitempty"`
|
|
|
|
// ScheduledArrival scheduled arrival time
|
|
ScheduledArrival time.Time `json:"scheduledArrival"`
|
|
|
|
// ScheduledDeparture scheduled departure time
|
|
ScheduledDeparture time.Time `json:"scheduledDeparture"`
|
|
To Place `json:"to"`
|
|
Trips []TripInfo `json:"trips"`
|
|
}
|
|
|
|
// VertexType - `NORMAL` - latitude / longitude coordinate or address
|
|
// - `BIKESHARE` - bike sharing station
|
|
// - `TRANSIT` - transit stop
|
|
type VertexType string
|
|
|
|
// FootpathsParams defines parameters for Footpaths.
|
|
type FootpathsParams struct {
|
|
// Id location id
|
|
Id string `form:"id" json:"id"`
|
|
}
|
|
|
|
// OneToAllParams defines parameters for OneToAll.
|
|
type OneToAllParams struct {
|
|
// One \`latitude,longitude[,level]\` tuple with
|
|
// - latitude and longitude in degrees
|
|
// - (optional) level: the OSM level (default: 0)
|
|
//
|
|
// OR
|
|
//
|
|
// stop id
|
|
One string `form:"one" json:"one"`
|
|
|
|
// Time Optional. Defaults to the current time.
|
|
//
|
|
// Departure time ($arriveBy=false) / arrival date ($arriveBy=true),
|
|
Time *time.Time `form:"time,omitempty" json:"time,omitempty"`
|
|
|
|
// MaxTravelTime maximum travel time in minutes
|
|
MaxTravelTime int `form:"maxTravelTime" json:"maxTravelTime"`
|
|
|
|
// ArriveBy true = all to one,
|
|
// false = one to all
|
|
ArriveBy *bool `form:"arriveBy,omitempty" json:"arriveBy,omitempty"`
|
|
|
|
// MaxTransfers The maximum number of allowed transfers.
|
|
// If not provided, the routing uses the server-side default value
|
|
// which is hardcoded and very high to cover all use cases.
|
|
//
|
|
// *Warning*: Use with care. Setting this too low can lead to
|
|
// optimal (e.g. the fastest) journeys not being found.
|
|
// If this value is too low to reach the destination at all,
|
|
// it can lead to slow routing performance.
|
|
MaxTransfers *int `form:"maxTransfers,omitempty" json:"maxTransfers,omitempty"`
|
|
|
|
// MinTransferTime Optional. Default is 0 minutes.
|
|
//
|
|
// Minimum transfer time for each transfer in minutes.
|
|
MinTransferTime *int `form:"minTransferTime,omitempty" json:"minTransferTime,omitempty"`
|
|
|
|
// AdditionalTransferTime Optional. Default is 0 minutes.
|
|
//
|
|
// Additional transfer time reserved for each transfer in minutes.
|
|
AdditionalTransferTime *int `form:"additionalTransferTime,omitempty" json:"additionalTransferTime,omitempty"`
|
|
|
|
// TransferTimeFactor Optional. Default is 1.0
|
|
//
|
|
// Factor to multiply minimum required transfer times with.
|
|
// Values smaller than 1.0 are not supported.
|
|
TransferTimeFactor *float32 `form:"transferTimeFactor,omitempty" json:"transferTimeFactor,omitempty"`
|
|
|
|
// MaxMatchingDistance Optional. Default is 25 meters.
|
|
//
|
|
// Maximum matching distance in meters to match geo coordinates to the street network.
|
|
MaxMatchingDistance *float32 `form:"maxMatchingDistance,omitempty" json:"maxMatchingDistance,omitempty"`
|
|
|
|
// UseRoutedTransfers Optional. Default is `false`.
|
|
//
|
|
// Whether to use transfers routed on OpenStreetMap data.
|
|
UseRoutedTransfers *bool `form:"useRoutedTransfers,omitempty" json:"useRoutedTransfers,omitempty"`
|
|
|
|
// PedestrianProfile Optional. Default is `FOOT`.
|
|
//
|
|
// Accessibility profile to use for pedestrian routing in transfers
|
|
// between transit connections and the first and last mile respectively.
|
|
PedestrianProfile *PedestrianProfile `form:"pedestrianProfile,omitempty" json:"pedestrianProfile,omitempty"`
|
|
|
|
// ElevationCosts Optional. Default is `NONE`.
|
|
//
|
|
// Set an elevation cost profile, to penalize routes with incline.
|
|
// - `NONE`: No additional costs for elevations. This is the default behavior
|
|
// - `LOW`: Add a low cost for increase in elevation and incline along the way. This will prefer routes with less ascent, if small detours are required.
|
|
// - `HIGH`: Add a high cost for increase in elevation and incline along the way. This will prefer routes with less ascent, if larger detours are required.
|
|
//
|
|
// As using an elevation costs profile will increase the travel duration,
|
|
// routing through steep terrain may exceed the maximal allowed duration,
|
|
// causing a location to appear unreachable.
|
|
// Increasing the maximum travel time for these segments may resolve this issue.
|
|
//
|
|
// The profile is used for routing on both the first and last mile.
|
|
//
|
|
// Elevation cost profiles are currently used by following street modes:
|
|
// - `BIKE`
|
|
ElevationCosts *ElevationCosts `form:"elevationCosts,omitempty" json:"elevationCosts,omitempty"`
|
|
|
|
// TransitModes Optional. Default is `TRANSIT` which allows all transit modes (no restriction).
|
|
// Allowed modes for the transit part. If empty, no transit connections will be computed.
|
|
// For example, this can be used to allow only `METRO,SUBWAY,TRAM`.
|
|
TransitModes *[]Mode `form:"transitModes,omitempty" json:"transitModes,omitempty"`
|
|
|
|
// PreTransitModes Optional. Default is `WALK`. The behavior depends on whether `arriveBy` is set:
|
|
// - `arriveBy=true`: Currently not used
|
|
// - `arriveBy=false`: Only applies if the `one` place is a coordinate (not a transit stop).
|
|
//
|
|
// A list of modes that are allowed to be used from the last transit stop to the `to` coordinate. Example: `WALK,BIKE_SHARING`.
|
|
PreTransitModes *[]Mode `form:"preTransitModes,omitempty" json:"preTransitModes,omitempty"`
|
|
|
|
// PostTransitModes Optional. Default is `WALK`. The behavior depends on whether `arriveBy` is set:
|
|
// - `arriveBy=true`: Only applies if the `one` place is a coordinate (not a transit stop).
|
|
// - `arriveBy=false`: Currently not used
|
|
//
|
|
// A list of modes that are allowed to be used from the last transit stop to the `to` coordinate. Example: `WALK,BIKE_SHARING`.
|
|
PostTransitModes *[]Mode `form:"postTransitModes,omitempty" json:"postTransitModes,omitempty"`
|
|
|
|
// RequireBikeTransport Optional. Default is `false`.
|
|
//
|
|
// If set to `true`, all used transit trips are required to allow bike carriage.
|
|
RequireBikeTransport *bool `form:"requireBikeTransport,omitempty" json:"requireBikeTransport,omitempty"`
|
|
|
|
// MaxPreTransitTime Optional. Default is 15min which is `900`.
|
|
// - `arriveBy=true`: Currently not used
|
|
// - `arriveBy=false`: Maximum time in seconds for the street leg at `one` location.
|
|
MaxPreTransitTime *int `form:"maxPreTransitTime,omitempty" json:"maxPreTransitTime,omitempty"`
|
|
|
|
// MaxPostTransitTime Optional. Default is 15min which is `900`.
|
|
// - `arriveBy=true`: Maximum time in seconds for the street leg at `one` location.
|
|
// - `arriveBy=false`: Currently not used
|
|
MaxPostTransitTime *int `form:"maxPostTransitTime,omitempty" json:"maxPostTransitTime,omitempty"`
|
|
}
|
|
|
|
// GeocodeParams defines parameters for Geocode.
|
|
type GeocodeParams struct {
|
|
// Text the (potentially partially typed) address to resolve
|
|
Text string `form:"text" json:"text"`
|
|
|
|
// Language language tags as used in OpenStreetMap
|
|
// (usually ISO 639-1, or ISO 639-2 if there's no ISO 639-1)
|
|
Language *string `form:"language,omitempty" json:"language,omitempty"`
|
|
|
|
// Type Optional. Default is all types.
|
|
//
|
|
// Only return results of the given types.
|
|
// For example, this can be used to allow only `ADDRESS` and `STOP` results.
|
|
Type *LocationType `form:"type,omitempty" json:"type,omitempty"`
|
|
|
|
// Place Optional. Used for biasing results towards the coordinate.
|
|
//
|
|
// Format: latitude,longitude in degrees
|
|
Place *string `form:"place,omitempty" json:"place,omitempty"`
|
|
|
|
// PlaceBias Optional. Used for biasing results towards the coordinate. Higher number = higher bias.
|
|
PlaceBias *float32 `form:"placeBias,omitempty" json:"placeBias,omitempty"`
|
|
}
|
|
|
|
// LevelsParams defines parameters for Levels.
|
|
type LevelsParams struct {
|
|
// Min latitude,longitude pair of the lower right coordinate
|
|
Min string `form:"min" json:"min"`
|
|
|
|
// Max latitude,longitude pair of the upper left coordinate
|
|
Max string `form:"max" json:"max"`
|
|
}
|
|
|
|
// StopsParams defines parameters for Stops.
|
|
type StopsParams struct {
|
|
// Min latitude,longitude pair of the lower right coordinate
|
|
Min string `form:"min" json:"min"`
|
|
|
|
// Max latitude,longitude pair of the upper left coordinate
|
|
Max string `form:"max" json:"max"`
|
|
}
|
|
|
|
// TripsParams defines parameters for Trips.
|
|
type TripsParams struct {
|
|
// Zoom current zoom level
|
|
Zoom float32 `form:"zoom" json:"zoom"`
|
|
|
|
// Min latitude,longitude pair of the lower right coordinate
|
|
Min string `form:"min" json:"min"`
|
|
|
|
// Max latitude,longitude pair of the upper left coordinate
|
|
Max string `form:"max" json:"max"`
|
|
|
|
// StartTime start of the time window
|
|
StartTime time.Time `form:"startTime" json:"startTime"`
|
|
|
|
// EndTime end if the time window
|
|
EndTime time.Time `form:"endTime" json:"endTime"`
|
|
}
|
|
|
|
// OneToManyParams defines parameters for OneToMany.
|
|
type OneToManyParams struct {
|
|
// One geo location as latitude;longitude
|
|
One string `form:"one" json:"one"`
|
|
|
|
// Many geo locations as latitude;longitude,latitude;longitude,...
|
|
Many []string `form:"many" json:"many"`
|
|
|
|
// Mode routing profile to use (currently supported: \`WALK\`, \`BIKE\`, \`CAR\`)
|
|
Mode Mode `form:"mode" json:"mode"`
|
|
|
|
// Max maximum travel time in seconds
|
|
Max float32 `form:"max" json:"max"`
|
|
|
|
// MaxMatchingDistance maximum matching distance in meters to match geo coordinates to the street network
|
|
MaxMatchingDistance float32 `form:"maxMatchingDistance" json:"maxMatchingDistance"`
|
|
|
|
// ElevationCosts Optional. Default is `NONE`.
|
|
//
|
|
// Set an elevation cost profile, to penalize routes with incline.
|
|
// - `NONE`: No additional costs for elevations. This is the default behavior
|
|
// - `LOW`: Add a low cost for increase in elevation and incline along the way. This will prefer routes with less ascent, if small detours are required.
|
|
// - `HIGH`: Add a high cost for increase in elevation and incline along the way. This will prefer routes with less ascent, if larger detours are required.
|
|
//
|
|
// As using an elevation costs profile will increase the travel duration,
|
|
// routing through steep terrain may exceed the maximal allowed duration,
|
|
// causing a location to appear unreachable.
|
|
// Increasing the maximum travel time for these segments may resolve this issue.
|
|
//
|
|
// Elevation cost profiles are currently used by following street modes:
|
|
// - `BIKE`
|
|
ElevationCosts *ElevationCosts `form:"elevationCosts,omitempty" json:"elevationCosts,omitempty"`
|
|
|
|
// ArriveBy true = many to one
|
|
// false = one to many
|
|
ArriveBy bool `form:"arriveBy" json:"arriveBy"`
|
|
}
|
|
|
|
// ReverseGeocodeParams defines parameters for ReverseGeocode.
|
|
type ReverseGeocodeParams struct {
|
|
// Place latitude, longitude in degrees
|
|
Place string `form:"place" json:"place"`
|
|
|
|
// Type Optional. Default is all types.
|
|
//
|
|
// Only return results of the given type.
|
|
// For example, this can be used to allow only `ADDRESS` and `STOP` results.
|
|
Type *LocationType `form:"type,omitempty" json:"type,omitempty"`
|
|
}
|
|
|
|
// StoptimesParams defines parameters for Stoptimes.
|
|
type StoptimesParams struct {
|
|
// StopId stop id of the stop to retrieve departures/arrivals for
|
|
StopId string `form:"stopId" json:"stopId"`
|
|
|
|
// Time Optional. Defaults to the current time.
|
|
Time *time.Time `form:"time,omitempty" json:"time,omitempty"`
|
|
|
|
// ArriveBy Optional. Default is `false`.
|
|
//
|
|
// - `arriveBy=true`: the parameters `date` and `time` refer to the arrival time
|
|
// - `arriveBy=false`: the parameters `date` and `time` refer to the departure time
|
|
ArriveBy *bool `form:"arriveBy,omitempty" json:"arriveBy,omitempty"`
|
|
|
|
// Direction This parameter will be ignored in case `pageCursor` is set.
|
|
//
|
|
// Optional. Default is
|
|
// - `LATER` for `arriveBy=false`
|
|
// - `EARLIER` for `arriveBy=true`
|
|
//
|
|
// The response will contain the next `n` arrivals / departures
|
|
// in case `EARLIER` is selected and the previous `n`
|
|
// arrivals / departures if `LATER` is selected.
|
|
Direction *StoptimesParamsDirection `form:"direction,omitempty" json:"direction,omitempty"`
|
|
|
|
// Mode Optional. Default is all transit modes.
|
|
//
|
|
// Only return arrivals/departures of the given modes.
|
|
Mode *[]Mode `form:"mode,omitempty" json:"mode,omitempty"`
|
|
|
|
// N the number of events
|
|
N int `form:"n" json:"n"`
|
|
|
|
// Radius Optional. Radius in meters.
|
|
//
|
|
// Default is that only stop times of the parent of the stop itself
|
|
// and all stops with the same name (+ their child stops) are returned.
|
|
//
|
|
// If set, all stops at parent stations and their child stops in the specified radius
|
|
// are returned.
|
|
Radius *int `form:"radius,omitempty" json:"radius,omitempty"`
|
|
|
|
// PageCursor Use the cursor to go to the next "page" of stop times.
|
|
// Copy the cursor from the last response and keep the original request as is.
|
|
// This will enable you to search for stop times in the next or previous time-window.
|
|
PageCursor *string `form:"pageCursor,omitempty" json:"pageCursor,omitempty"`
|
|
}
|
|
|
|
// StoptimesParamsDirection defines parameters for Stoptimes.
|
|
type StoptimesParamsDirection string
|
|
|
|
// PlanParams defines parameters for Plan.
|
|
type PlanParams struct {
|
|
// FromPlace \`latitude,longitude[,level]\` tuple with
|
|
// - latitude and longitude in degrees
|
|
// - (optional) level: the OSM level (default: 0)
|
|
//
|
|
// OR
|
|
//
|
|
// stop id
|
|
FromPlace string `form:"fromPlace" json:"fromPlace"`
|
|
|
|
// ToPlace \`latitude,longitude[,level]\` tuple with
|
|
// - latitude and longitude in degrees
|
|
// - (optional) level: the OSM level (default: 0)
|
|
//
|
|
// OR
|
|
//
|
|
// stop id
|
|
ToPlace string `form:"toPlace" json:"toPlace"`
|
|
|
|
// Via List of via stops to visit (only stop IDs, no coordinates allowed for now).
|
|
// Also see the optional parameter `viaMinimumStay` to set a set a minimum stay duration for each via stop.
|
|
Via *[]string `form:"via,omitempty" json:"via,omitempty"`
|
|
|
|
// ViaMinimumStay Optional. If not set, the default is `0,0` - no stay required.
|
|
//
|
|
// For each `via` stop a minimum stay duration in minutes.
|
|
//
|
|
// The value `0` signals that it's allowed to stay in the same trip.
|
|
// This enables via stays without counting a transfer and can lead
|
|
// to better connections with less transfers. Transfer connections can
|
|
// still be found with `viaMinimumStay=0`.
|
|
ViaMinimumStay *[]int `form:"viaMinimumStay,omitempty" json:"viaMinimumStay,omitempty"`
|
|
|
|
// Time Optional. Defaults to the current time.
|
|
//
|
|
// Departure time ($arriveBy=false) / arrival date ($arriveBy=true),
|
|
Time *time.Time `form:"time,omitempty" json:"time,omitempty"`
|
|
|
|
// MaxTransfers The maximum number of allowed transfers.
|
|
// If not provided, the routing uses the server-side default value
|
|
// which is hardcoded and very high to cover all use cases.
|
|
//
|
|
// *Warning*: Use with care. Setting this too low can lead to
|
|
// optimal (e.g. the fastest) journeys not being found.
|
|
// If this value is too low to reach the destination at all,
|
|
// it can lead to slow routing performance.
|
|
MaxTransfers *int `form:"maxTransfers,omitempty" json:"maxTransfers,omitempty"`
|
|
|
|
// MaxTravelTime The maximum travel time in minutes.
|
|
// If not provided, the routing to uses the value
|
|
// hardcoded in the server which is usually quite high.
|
|
//
|
|
// *Warning*: Use with care. Setting this too low can lead to
|
|
// optimal (e.g. the least transfers) journeys not being found.
|
|
// If this value is too low to reach the destination at all,
|
|
// it can lead to slow routing performance.
|
|
MaxTravelTime *int `form:"maxTravelTime,omitempty" json:"maxTravelTime,omitempty"`
|
|
|
|
// MinTransferTime Optional. Default is 0 minutes.
|
|
//
|
|
// Minimum transfer time for each transfer in minutes.
|
|
MinTransferTime *int `form:"minTransferTime,omitempty" json:"minTransferTime,omitempty"`
|
|
|
|
// AdditionalTransferTime Optional. Default is 0 minutes.
|
|
//
|
|
// Additional transfer time reserved for each transfer in minutes.
|
|
AdditionalTransferTime *int `form:"additionalTransferTime,omitempty" json:"additionalTransferTime,omitempty"`
|
|
|
|
// TransferTimeFactor Optional. Default is 1.0
|
|
//
|
|
// Factor to multiply minimum required transfer times with.
|
|
// Values smaller than 1.0 are not supported.
|
|
TransferTimeFactor *float32 `form:"transferTimeFactor,omitempty" json:"transferTimeFactor,omitempty"`
|
|
|
|
// MaxMatchingDistance Optional. Default is 25 meters.
|
|
//
|
|
// Maximum matching distance in meters to match geo coordinates to the street network.
|
|
MaxMatchingDistance *float32 `form:"maxMatchingDistance,omitempty" json:"maxMatchingDistance,omitempty"`
|
|
|
|
// PedestrianProfile Optional. Default is `FOOT`.
|
|
//
|
|
// Accessibility profile to use for pedestrian routing in transfers
|
|
// between transit connections, on the first mile, and last mile.
|
|
PedestrianProfile *PedestrianProfile `form:"pedestrianProfile,omitempty" json:"pedestrianProfile,omitempty"`
|
|
|
|
// ElevationCosts Optional. Default is `NONE`.
|
|
//
|
|
// Set an elevation cost profile, to penalize routes with incline.
|
|
// - `NONE`: No additional costs for elevations. This is the default behavior
|
|
// - `LOW`: Add a low cost for increase in elevation and incline along the way. This will prefer routes with less ascent, if small detours are required.
|
|
// - `HIGH`: Add a high cost for increase in elevation and incline along the way. This will prefer routes with less ascent, if larger detours are required.
|
|
//
|
|
// As using an elevation costs profile will increase the travel duration,
|
|
// routing through steep terrain may exceed the maximal allowed duration,
|
|
// causing a location to appear unreachable.
|
|
// Increasing the maximum travel time for these segments may resolve this issue.
|
|
//
|
|
// The profile is used for direct routing, on the first mile, and last mile.
|
|
//
|
|
// Elevation cost profiles are currently used by following street modes:
|
|
// - `BIKE`
|
|
ElevationCosts *ElevationCosts `form:"elevationCosts,omitempty" json:"elevationCosts,omitempty"`
|
|
|
|
// UseRoutedTransfers Optional. Default is `false`.
|
|
//
|
|
// Whether to use transfers routed on OpenStreetMap data.
|
|
UseRoutedTransfers *bool `form:"useRoutedTransfers,omitempty" json:"useRoutedTransfers,omitempty"`
|
|
|
|
// DetailedTransfers - true: Compute transfer polylines and step instructions.
|
|
// - false: Only return basic information (start time, end time, duration) for transfers.
|
|
DetailedTransfers bool `form:"detailedTransfers" json:"detailedTransfers"`
|
|
|
|
// TransitModes Optional. Default is `TRANSIT` which allows all transit modes (no restriction).
|
|
// Allowed modes for the transit part. If empty, no transit connections will be computed.
|
|
// For example, this can be used to allow only `METRO,SUBWAY,TRAM`.
|
|
TransitModes *[]Mode `form:"transitModes,omitempty" json:"transitModes,omitempty"`
|
|
|
|
// DirectModes Optional. Default is `WALK` which will compute walking routes as direct connections.
|
|
//
|
|
// Modes used for direction connections from start to destination without using transit.
|
|
// Results will be returned on the `direct` key.
|
|
//
|
|
// Note: Direct connections will only be returned on the first call. For paging calls, they can be omitted.
|
|
//
|
|
// Note: Transit connections that are slower than the fastest direct connection will not show up.
|
|
// This is being used as a cut-off during transit routing to speed up the search.
|
|
// To prevent this, it's possible to send two separate requests (one with only `transitModes` and one with only `directModes`).
|
|
//
|
|
// Only non-transit modes such as `WALK`, `BIKE`, `CAR`, `BIKE_SHARING`, etc. can be used.
|
|
DirectModes *[]Mode `form:"directModes,omitempty" json:"directModes,omitempty"`
|
|
|
|
// PreTransitModes Optional. Default is `WALK`. Only applies if the `from` place is a coordinate (not a transit stop). Does not apply to direct connections (see `directModes`).
|
|
//
|
|
// A list of modes that are allowed to be used from the `from` coordinate to the first transit stop. Example: `WALK,BIKE_SHARING`.
|
|
PreTransitModes *[]Mode `form:"preTransitModes,omitempty" json:"preTransitModes,omitempty"`
|
|
|
|
// PostTransitModes Optional. Default is `WALK`. Only applies if the `to` place is a coordinate (not a transit stop). Does not apply to direct connections (see `directModes`).
|
|
//
|
|
// A list of modes that are allowed to be used from the last transit stop to the `to` coordinate. Example: `WALK,BIKE_SHARING`.
|
|
PostTransitModes *[]Mode `form:"postTransitModes,omitempty" json:"postTransitModes,omitempty"`
|
|
|
|
// DirectRentalFormFactors Experimental. Expect unannounced breaking changes (without version bumps).
|
|
//
|
|
// Optional. Only applies to direct connections.
|
|
//
|
|
// A list of vehicle type form factors that are allowed to be used for direct connections.
|
|
// If empty (the default), all form factors are allowed.
|
|
// Example: `BICYCLE,SCOOTER_STANDING`.
|
|
DirectRentalFormFactors *[]RentalFormFactor `form:"directRentalFormFactors,omitempty" json:"directRentalFormFactors,omitempty"`
|
|
|
|
// PreTransitRentalFormFactors Experimental. Expect unannounced breaking changes (without version bumps).
|
|
//
|
|
// Optional. Only applies if the `from` place is a coordinate (not a transit stop). Does not apply to direct connections (see `directRentalFormFactors`).
|
|
//
|
|
// A list of vehicle type form factors that are allowed to be used from the `from` coordinate to the first transit stop.
|
|
// If empty (the default), all form factors are allowed.
|
|
// Example: `BICYCLE,SCOOTER_STANDING`.
|
|
PreTransitRentalFormFactors *[]RentalFormFactor `form:"preTransitRentalFormFactors,omitempty" json:"preTransitRentalFormFactors,omitempty"`
|
|
|
|
// PostTransitRentalFormFactors Experimental. Expect unannounced breaking changes (without version bumps).
|
|
//
|
|
// Optional. Only applies if the `to` place is a coordinate (not a transit stop). Does not apply to direct connections (see `directRentalFormFactors`).
|
|
//
|
|
// A list of vehicle type form factors that are allowed to be used from the last transit stop to the `to` coordinate.
|
|
// If empty (the default), all form factors are allowed.
|
|
// Example: `BICYCLE,SCOOTER_STANDING`.
|
|
PostTransitRentalFormFactors *[]RentalFormFactor `form:"postTransitRentalFormFactors,omitempty" json:"postTransitRentalFormFactors,omitempty"`
|
|
|
|
// DirectRentalPropulsionTypes Experimental. Expect unannounced breaking changes (without version bumps).
|
|
//
|
|
// Optional. Only applies to direct connections.
|
|
//
|
|
// A list of vehicle type form factors that are allowed to be used for direct connections.
|
|
// If empty (the default), all propulsion types are allowed.
|
|
// Example: `HUMAN,ELECTRIC,ELECTRIC_ASSIST`.
|
|
DirectRentalPropulsionTypes *[]RentalPropulsionType `form:"directRentalPropulsionTypes,omitempty" json:"directRentalPropulsionTypes,omitempty"`
|
|
|
|
// PreTransitRentalPropulsionTypes Experimental. Expect unannounced breaking changes (without version bumps).
|
|
//
|
|
// Optional. Only applies if the `from` place is a coordinate (not a transit stop). Does not apply to direct connections (see `directRentalPropulsionTypes`).
|
|
//
|
|
// A list of vehicle propulsion types that are allowed to be used from the `from` coordinate to the first transit stop.
|
|
// If empty (the default), all propulsion types are allowed.
|
|
// Example: `HUMAN,ELECTRIC,ELECTRIC_ASSIST`.
|
|
PreTransitRentalPropulsionTypes *[]RentalPropulsionType `form:"preTransitRentalPropulsionTypes,omitempty" json:"preTransitRentalPropulsionTypes,omitempty"`
|
|
|
|
// PostTransitRentalPropulsionTypes Experimental. Expect unannounced breaking changes (without version bumps).
|
|
//
|
|
// Optional. Only applies if the `to` place is a coordinate (not a transit stop). Does not apply to direct connections (see `directRentalPropulsionTypes`).
|
|
//
|
|
// A list of vehicle propulsion types that are allowed to be used from the last transit stop to the `to` coordinate.
|
|
// If empty (the default), all propulsion types are allowed.
|
|
// Example: `HUMAN,ELECTRIC,ELECTRIC_ASSIST`.
|
|
PostTransitRentalPropulsionTypes *[]RentalPropulsionType `form:"postTransitRentalPropulsionTypes,omitempty" json:"postTransitRentalPropulsionTypes,omitempty"`
|
|
|
|
// DirectRentalProviders Experimental. Expect unannounced breaking changes (without version bumps).
|
|
//
|
|
// Optional. Only applies to direct connections.
|
|
//
|
|
// A list of rental providers that are allowed to be used for direct connections.
|
|
// If empty (the default), all providers are allowed.
|
|
DirectRentalProviders *[]string `form:"directRentalProviders,omitempty" json:"directRentalProviders,omitempty"`
|
|
|
|
// PreTransitRentalProviders Experimental. Expect unannounced breaking changes (without version bumps).
|
|
//
|
|
// Optional. Only applies if the `from` place is a coordinate (not a transit stop). Does not apply to direct connections (see `directRentalProviders`).
|
|
//
|
|
// A list of rental providers that are allowed to be used from the `from` coordinate to the first transit stop.
|
|
// If empty (the default), all providers are allowed.
|
|
PreTransitRentalProviders *[]string `form:"preTransitRentalProviders,omitempty" json:"preTransitRentalProviders,omitempty"`
|
|
|
|
// PostTransitRentalProviders Experimental. Expect unannounced breaking changes (without version bumps).
|
|
//
|
|
// Optional. Only applies if the `to` place is a coordinate (not a transit stop). Does not apply to direct connections (see `directRentalProviders`).
|
|
//
|
|
// A list of rental providers that are allowed to be used from the last transit stop to the `to` coordinate.
|
|
// If empty (the default), all providers are allowed.
|
|
PostTransitRentalProviders *[]string `form:"postTransitRentalProviders,omitempty" json:"postTransitRentalProviders,omitempty"`
|
|
|
|
// NumItineraries The minimum number of itineraries to compute.
|
|
// This is only relevant if `timetableView=true`.
|
|
// The default value is 5.
|
|
NumItineraries *int `form:"numItineraries,omitempty" json:"numItineraries,omitempty"`
|
|
|
|
// PageCursor Use the cursor to go to the next "page" of itineraries.
|
|
// Copy the cursor from the last response and keep the original request as is.
|
|
// This will enable you to search for itineraries in the next or previous time-window.
|
|
PageCursor *string `form:"pageCursor,omitempty" json:"pageCursor,omitempty"`
|
|
|
|
// TimetableView Optional. Default is `true`.
|
|
//
|
|
// Search for the best trip options within a time window.
|
|
// If true two itineraries are considered optimal
|
|
// if one is better on arrival time (earliest wins)
|
|
// and the other is better on departure time (latest wins).
|
|
// In combination with arriveBy this parameter cover the following use cases:
|
|
//
|
|
// `timetable=false` = waiting for the first transit departure/arrival is considered travel time:
|
|
// - `arriveBy=true`: event (e.g. a meeting) starts at 10:00 am,
|
|
// compute the best journeys that arrive by that time (maximizes departure time)
|
|
// - `arriveBy=false`: event (e.g. a meeting) ends at 11:00 am,
|
|
// compute the best journeys that depart after that time
|
|
//
|
|
// `timetable=true` = optimize "later departure" + "earlier arrival" and give all options over a time window:
|
|
// - `arriveBy=true`: the time window around `date` and `time` refers to the arrival time window
|
|
// - `arriveBy=false`: the time window around `date` and `time` refers to the departure time window
|
|
TimetableView *bool `form:"timetableView,omitempty" json:"timetableView,omitempty"`
|
|
|
|
// ArriveBy Optional. Default is `false`.
|
|
//
|
|
// - `arriveBy=true`: the parameters `date` and `time` refer to the arrival time
|
|
// - `arriveBy=false`: the parameters `date` and `time` refer to the departure time
|
|
ArriveBy *bool `form:"arriveBy,omitempty" json:"arriveBy,omitempty"`
|
|
|
|
// SearchWindow Optional. Default is 2 hours which is `7200`.
|
|
//
|
|
// The length of the search-window in seconds. Default value two hours.
|
|
//
|
|
// - `arriveBy=true`: number of seconds between the earliest departure time and latest departure time
|
|
// - `arriveBy=false`: number of seconds between the earliest arrival time and the latest arrival time
|
|
SearchWindow *int `form:"searchWindow,omitempty" json:"searchWindow,omitempty"`
|
|
|
|
// RequireBikeTransport Optional. Default is `false`.
|
|
//
|
|
// If set to `true`, all used transit trips are required to allow bike carriage.
|
|
RequireBikeTransport *bool `form:"requireBikeTransport,omitempty" json:"requireBikeTransport,omitempty"`
|
|
|
|
// MaxPreTransitTime Optional. Default is 15min which is `900`.
|
|
// Maximum time in seconds for the first street leg.
|
|
MaxPreTransitTime *int `form:"maxPreTransitTime,omitempty" json:"maxPreTransitTime,omitempty"`
|
|
|
|
// MaxPostTransitTime Optional. Default is 15min which is `900`.
|
|
// Maximum time in seconds for the last street leg.
|
|
MaxPostTransitTime *int `form:"maxPostTransitTime,omitempty" json:"maxPostTransitTime,omitempty"`
|
|
|
|
// MaxDirectTime Optional. Default is 30min which is `1800`.
|
|
// Maximum time in seconds for direct connections.
|
|
MaxDirectTime *int `form:"maxDirectTime,omitempty" json:"maxDirectTime,omitempty"`
|
|
|
|
// FastestDirectFactor Optional. Experimental. Default is `1.0`.
|
|
// Factor with which the duration of the fastest direct connection is multiplied.
|
|
// Values > 1.0 allow connections that are slower than the fastest direct connection to be found.
|
|
FastestDirectFactor *float32 `form:"fastestDirectFactor,omitempty" json:"fastestDirectFactor,omitempty"`
|
|
|
|
// Timeout Optional. Query timeout in seconds.
|
|
Timeout *int `form:"timeout,omitempty" json:"timeout,omitempty"`
|
|
|
|
// Passengers Optional. Experimental. Number of passengers (e.g. for ODM or price calculation)
|
|
Passengers *int `form:"passengers,omitempty" json:"passengers,omitempty"`
|
|
|
|
// Luggage Optional. Experimental. Number of luggage pieces; base unit: airline cabin luggage (e.g. for ODM or price calculation)
|
|
Luggage *int `form:"luggage,omitempty" json:"luggage,omitempty"`
|
|
|
|
// WithFares Optional. Experimental. If set to true, the response will contain fare information.
|
|
WithFares *bool `form:"withFares,omitempty" json:"withFares,omitempty"`
|
|
}
|
|
|
|
// TripParams defines parameters for Trip.
|
|
type TripParams struct {
|
|
// TripId trip identifier (e.g. from an itinerary leg or stop event)
|
|
TripId string `form:"tripId" json:"tripId"`
|
|
}
|
|
|
|
// 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 {
|
|
// Footpaths request
|
|
Footpaths(ctx context.Context, params *FootpathsParams, reqEditors ...RequestEditorFn) (*http.Response, error)
|
|
|
|
// OneToAll request
|
|
OneToAll(ctx context.Context, params *OneToAllParams, reqEditors ...RequestEditorFn) (*http.Response, error)
|
|
|
|
// Geocode request
|
|
Geocode(ctx context.Context, params *GeocodeParams, reqEditors ...RequestEditorFn) (*http.Response, error)
|
|
|
|
// Initial request
|
|
Initial(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error)
|
|
|
|
// Levels request
|
|
Levels(ctx context.Context, params *LevelsParams, reqEditors ...RequestEditorFn) (*http.Response, error)
|
|
|
|
// Stops request
|
|
Stops(ctx context.Context, params *StopsParams, reqEditors ...RequestEditorFn) (*http.Response, error)
|
|
|
|
// Trips request
|
|
Trips(ctx context.Context, params *TripsParams, reqEditors ...RequestEditorFn) (*http.Response, error)
|
|
|
|
// OneToMany request
|
|
OneToMany(ctx context.Context, params *OneToManyParams, reqEditors ...RequestEditorFn) (*http.Response, error)
|
|
|
|
// ReverseGeocode request
|
|
ReverseGeocode(ctx context.Context, params *ReverseGeocodeParams, reqEditors ...RequestEditorFn) (*http.Response, error)
|
|
|
|
// Stoptimes request
|
|
Stoptimes(ctx context.Context, params *StoptimesParams, reqEditors ...RequestEditorFn) (*http.Response, error)
|
|
|
|
// Plan request
|
|
Plan(ctx context.Context, params *PlanParams, reqEditors ...RequestEditorFn) (*http.Response, error)
|
|
|
|
// Trip request
|
|
Trip(ctx context.Context, params *TripParams, reqEditors ...RequestEditorFn) (*http.Response, error)
|
|
}
|
|
|
|
func (c *Client) Footpaths(ctx context.Context, params *FootpathsParams, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
|
req, err := NewFootpathsRequest(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) OneToAll(ctx context.Context, params *OneToAllParams, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
|
req, err := NewOneToAllRequest(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) Geocode(ctx context.Context, params *GeocodeParams, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
|
req, err := NewGeocodeRequest(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) Initial(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
|
req, err := NewInitialRequest(c.Server)
|
|
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) Levels(ctx context.Context, params *LevelsParams, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
|
req, err := NewLevelsRequest(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) Stops(ctx context.Context, params *StopsParams, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
|
req, err := NewStopsRequest(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) Trips(ctx context.Context, params *TripsParams, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
|
req, err := NewTripsRequest(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) OneToMany(ctx context.Context, params *OneToManyParams, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
|
req, err := NewOneToManyRequest(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) ReverseGeocode(ctx context.Context, params *ReverseGeocodeParams, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
|
req, err := NewReverseGeocodeRequest(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) Stoptimes(ctx context.Context, params *StoptimesParams, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
|
req, err := NewStoptimesRequest(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) Plan(ctx context.Context, params *PlanParams, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
|
req, err := NewPlanRequest(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) Trip(ctx context.Context, params *TripParams, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
|
req, err := NewTripRequest(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)
|
|
}
|
|
|
|
// NewFootpathsRequest generates requests for Footpaths
|
|
func NewFootpathsRequest(server string, params *FootpathsParams) (*http.Request, error) {
|
|
var err error
|
|
|
|
serverURL, err := url.Parse(server)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
operationPath := fmt.Sprintf("/api/debug/footpaths")
|
|
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, "id", runtime.ParamLocationQuery, params.Id); 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
|
|
}
|
|
|
|
// NewOneToAllRequest generates requests for OneToAll
|
|
func NewOneToAllRequest(server string, params *OneToAllParams) (*http.Request, error) {
|
|
var err error
|
|
|
|
serverURL, err := url.Parse(server)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
operationPath := fmt.Sprintf("/api/experimental/one-to-all")
|
|
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, "one", runtime.ParamLocationQuery, params.One); 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.Time != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "time", runtime.ParamLocationQuery, *params.Time); 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, "maxTravelTime", runtime.ParamLocationQuery, params.MaxTravelTime); 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.ArriveBy != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "arriveBy", runtime.ParamLocationQuery, *params.ArriveBy); 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.MaxTransfers != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "maxTransfers", runtime.ParamLocationQuery, *params.MaxTransfers); 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.MinTransferTime != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "minTransferTime", runtime.ParamLocationQuery, *params.MinTransferTime); 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.AdditionalTransferTime != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "additionalTransferTime", runtime.ParamLocationQuery, *params.AdditionalTransferTime); 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.TransferTimeFactor != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "transferTimeFactor", runtime.ParamLocationQuery, *params.TransferTimeFactor); 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.MaxMatchingDistance != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "maxMatchingDistance", runtime.ParamLocationQuery, *params.MaxMatchingDistance); 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.UseRoutedTransfers != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "useRoutedTransfers", runtime.ParamLocationQuery, *params.UseRoutedTransfers); 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.PedestrianProfile != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "pedestrianProfile", runtime.ParamLocationQuery, *params.PedestrianProfile); 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.ElevationCosts != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "elevationCosts", runtime.ParamLocationQuery, *params.ElevationCosts); 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.TransitModes != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "transitModes", runtime.ParamLocationQuery, *params.TransitModes); 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.PreTransitModes != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "preTransitModes", runtime.ParamLocationQuery, *params.PreTransitModes); 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.PostTransitModes != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "postTransitModes", runtime.ParamLocationQuery, *params.PostTransitModes); 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.RequireBikeTransport != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "requireBikeTransport", runtime.ParamLocationQuery, *params.RequireBikeTransport); 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.MaxPreTransitTime != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "maxPreTransitTime", runtime.ParamLocationQuery, *params.MaxPreTransitTime); 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.MaxPostTransitTime != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "maxPostTransitTime", runtime.ParamLocationQuery, *params.MaxPostTransitTime); 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
|
|
}
|
|
|
|
// NewGeocodeRequest generates requests for Geocode
|
|
func NewGeocodeRequest(server string, params *GeocodeParams) (*http.Request, error) {
|
|
var err error
|
|
|
|
serverURL, err := url.Parse(server)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
operationPath := fmt.Sprintf("/api/v1/geocode")
|
|
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, "text", runtime.ParamLocationQuery, params.Text); 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.Language != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "language", runtime.ParamLocationQuery, *params.Language); 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.Type != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "type", runtime.ParamLocationQuery, *params.Type); 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.Place != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "place", runtime.ParamLocationQuery, *params.Place); 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.PlaceBias != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "placeBias", runtime.ParamLocationQuery, *params.PlaceBias); 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
|
|
}
|
|
|
|
// NewInitialRequest generates requests for Initial
|
|
func NewInitialRequest(server string) (*http.Request, error) {
|
|
var err error
|
|
|
|
serverURL, err := url.Parse(server)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
operationPath := fmt.Sprintf("/api/v1/map/initial")
|
|
if operationPath[0] == '/' {
|
|
operationPath = "." + operationPath
|
|
}
|
|
|
|
queryURL, err := serverURL.Parse(operationPath)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
req, err := http.NewRequest("GET", queryURL.String(), nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return req, nil
|
|
}
|
|
|
|
// NewLevelsRequest generates requests for Levels
|
|
func NewLevelsRequest(server string, params *LevelsParams) (*http.Request, error) {
|
|
var err error
|
|
|
|
serverURL, err := url.Parse(server)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
operationPath := fmt.Sprintf("/api/v1/map/levels")
|
|
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, "min", runtime.ParamLocationQuery, params.Min); 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, "max", runtime.ParamLocationQuery, params.Max); 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
|
|
}
|
|
|
|
// NewStopsRequest generates requests for Stops
|
|
func NewStopsRequest(server string, params *StopsParams) (*http.Request, error) {
|
|
var err error
|
|
|
|
serverURL, err := url.Parse(server)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
operationPath := fmt.Sprintf("/api/v1/map/stops")
|
|
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, "min", runtime.ParamLocationQuery, params.Min); 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, "max", runtime.ParamLocationQuery, params.Max); 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
|
|
}
|
|
|
|
// NewTripsRequest generates requests for Trips
|
|
func NewTripsRequest(server string, params *TripsParams) (*http.Request, error) {
|
|
var err error
|
|
|
|
serverURL, err := url.Parse(server)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
operationPath := fmt.Sprintf("/api/v1/map/trips")
|
|
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, "zoom", runtime.ParamLocationQuery, params.Zoom); 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, "min", runtime.ParamLocationQuery, params.Min); 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, "max", runtime.ParamLocationQuery, params.Max); 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, "startTime", runtime.ParamLocationQuery, params.StartTime); 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, "endTime", runtime.ParamLocationQuery, params.EndTime); 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
|
|
}
|
|
|
|
// NewOneToManyRequest generates requests for OneToMany
|
|
func NewOneToManyRequest(server string, params *OneToManyParams) (*http.Request, error) {
|
|
var err error
|
|
|
|
serverURL, err := url.Parse(server)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
operationPath := fmt.Sprintf("/api/v1/one-to-many")
|
|
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, "one", runtime.ParamLocationQuery, params.One); 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, "many", runtime.ParamLocationQuery, params.Many); 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, "mode", runtime.ParamLocationQuery, params.Mode); 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, "max", runtime.ParamLocationQuery, params.Max); 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, "maxMatchingDistance", runtime.ParamLocationQuery, params.MaxMatchingDistance); 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.ElevationCosts != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "elevationCosts", runtime.ParamLocationQuery, *params.ElevationCosts); 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, "arriveBy", runtime.ParamLocationQuery, params.ArriveBy); 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
|
|
}
|
|
|
|
// NewReverseGeocodeRequest generates requests for ReverseGeocode
|
|
func NewReverseGeocodeRequest(server string, params *ReverseGeocodeParams) (*http.Request, error) {
|
|
var err error
|
|
|
|
serverURL, err := url.Parse(server)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
operationPath := fmt.Sprintf("/api/v1/reverse-geocode")
|
|
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, "place", runtime.ParamLocationQuery, params.Place); 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.Type != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "type", runtime.ParamLocationQuery, *params.Type); 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
|
|
}
|
|
|
|
// NewStoptimesRequest generates requests for Stoptimes
|
|
func NewStoptimesRequest(server string, params *StoptimesParams) (*http.Request, error) {
|
|
var err error
|
|
|
|
serverURL, err := url.Parse(server)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
operationPath := fmt.Sprintf("/api/v1/stoptimes")
|
|
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, "stopId", runtime.ParamLocationQuery, params.StopId); 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.Time != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "time", runtime.ParamLocationQuery, *params.Time); 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.ArriveBy != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "arriveBy", runtime.ParamLocationQuery, *params.ArriveBy); 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.Direction != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "direction", runtime.ParamLocationQuery, *params.Direction); 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.Mode != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "mode", runtime.ParamLocationQuery, *params.Mode); 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, "n", runtime.ParamLocationQuery, params.N); 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.Radius != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "radius", runtime.ParamLocationQuery, *params.Radius); 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.PageCursor != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "pageCursor", runtime.ParamLocationQuery, *params.PageCursor); 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
|
|
}
|
|
|
|
// NewPlanRequest generates requests for Plan
|
|
func NewPlanRequest(server string, params *PlanParams) (*http.Request, error) {
|
|
var err error
|
|
|
|
serverURL, err := url.Parse(server)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
operationPath := fmt.Sprintf("/api/v1/plan")
|
|
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, "fromPlace", runtime.ParamLocationQuery, params.FromPlace); 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, "toPlace", runtime.ParamLocationQuery, params.ToPlace); 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.Via != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "via", runtime.ParamLocationQuery, *params.Via); 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.ViaMinimumStay != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "viaMinimumStay", runtime.ParamLocationQuery, *params.ViaMinimumStay); 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.Time != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "time", runtime.ParamLocationQuery, *params.Time); 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.MaxTransfers != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "maxTransfers", runtime.ParamLocationQuery, *params.MaxTransfers); 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.MaxTravelTime != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "maxTravelTime", runtime.ParamLocationQuery, *params.MaxTravelTime); 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.MinTransferTime != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "minTransferTime", runtime.ParamLocationQuery, *params.MinTransferTime); 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.AdditionalTransferTime != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "additionalTransferTime", runtime.ParamLocationQuery, *params.AdditionalTransferTime); 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.TransferTimeFactor != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "transferTimeFactor", runtime.ParamLocationQuery, *params.TransferTimeFactor); 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.MaxMatchingDistance != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "maxMatchingDistance", runtime.ParamLocationQuery, *params.MaxMatchingDistance); 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.PedestrianProfile != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "pedestrianProfile", runtime.ParamLocationQuery, *params.PedestrianProfile); 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.ElevationCosts != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "elevationCosts", runtime.ParamLocationQuery, *params.ElevationCosts); 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.UseRoutedTransfers != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "useRoutedTransfers", runtime.ParamLocationQuery, *params.UseRoutedTransfers); 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, "detailedTransfers", runtime.ParamLocationQuery, params.DetailedTransfers); 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.TransitModes != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "transitModes", runtime.ParamLocationQuery, *params.TransitModes); 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.DirectModes != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "directModes", runtime.ParamLocationQuery, *params.DirectModes); 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.PreTransitModes != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "preTransitModes", runtime.ParamLocationQuery, *params.PreTransitModes); 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.PostTransitModes != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "postTransitModes", runtime.ParamLocationQuery, *params.PostTransitModes); 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.DirectRentalFormFactors != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "directRentalFormFactors", runtime.ParamLocationQuery, *params.DirectRentalFormFactors); 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.PreTransitRentalFormFactors != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "preTransitRentalFormFactors", runtime.ParamLocationQuery, *params.PreTransitRentalFormFactors); 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.PostTransitRentalFormFactors != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "postTransitRentalFormFactors", runtime.ParamLocationQuery, *params.PostTransitRentalFormFactors); 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.DirectRentalPropulsionTypes != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "directRentalPropulsionTypes", runtime.ParamLocationQuery, *params.DirectRentalPropulsionTypes); 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.PreTransitRentalPropulsionTypes != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "preTransitRentalPropulsionTypes", runtime.ParamLocationQuery, *params.PreTransitRentalPropulsionTypes); 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.PostTransitRentalPropulsionTypes != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", false, "postTransitRentalPropulsionTypes", runtime.ParamLocationQuery, *params.PostTransitRentalPropulsionTypes); 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.DirectRentalProviders != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "directRentalProviders", runtime.ParamLocationQuery, *params.DirectRentalProviders); 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.PreTransitRentalProviders != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "preTransitRentalProviders", runtime.ParamLocationQuery, *params.PreTransitRentalProviders); 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.PostTransitRentalProviders != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "postTransitRentalProviders", runtime.ParamLocationQuery, *params.PostTransitRentalProviders); 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.NumItineraries != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "numItineraries", runtime.ParamLocationQuery, *params.NumItineraries); 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.PageCursor != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "pageCursor", runtime.ParamLocationQuery, *params.PageCursor); 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.TimetableView != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "timetableView", runtime.ParamLocationQuery, *params.TimetableView); 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.ArriveBy != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "arriveBy", runtime.ParamLocationQuery, *params.ArriveBy); 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.SearchWindow != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "searchWindow", runtime.ParamLocationQuery, *params.SearchWindow); 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.RequireBikeTransport != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "requireBikeTransport", runtime.ParamLocationQuery, *params.RequireBikeTransport); 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.MaxPreTransitTime != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "maxPreTransitTime", runtime.ParamLocationQuery, *params.MaxPreTransitTime); 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.MaxPostTransitTime != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "maxPostTransitTime", runtime.ParamLocationQuery, *params.MaxPostTransitTime); 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.MaxDirectTime != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "maxDirectTime", runtime.ParamLocationQuery, *params.MaxDirectTime); 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.FastestDirectFactor != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "fastestDirectFactor", runtime.ParamLocationQuery, *params.FastestDirectFactor); 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.Timeout != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "timeout", runtime.ParamLocationQuery, *params.Timeout); 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.Passengers != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "passengers", runtime.ParamLocationQuery, *params.Passengers); 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.Luggage != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "luggage", runtime.ParamLocationQuery, *params.Luggage); 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.WithFares != nil {
|
|
if queryFrag, err := runtime.StyleParamWithLocation("form", true, "withFares", runtime.ParamLocationQuery, *params.WithFares); 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
|
|
}
|
|
|
|
// NewTripRequest generates requests for Trip
|
|
func NewTripRequest(server string, params *TripParams) (*http.Request, error) {
|
|
var err error
|
|
|
|
serverURL, err := url.Parse(server)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
operationPath := fmt.Sprintf("/api/v1/trip")
|
|
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, "tripId", runtime.ParamLocationQuery, params.TripId); 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 {
|
|
// FootpathsWithResponse request
|
|
FootpathsWithResponse(ctx context.Context, params *FootpathsParams, reqEditors ...RequestEditorFn) (*FootpathsResponse, error)
|
|
|
|
// OneToAllWithResponse request
|
|
OneToAllWithResponse(ctx context.Context, params *OneToAllParams, reqEditors ...RequestEditorFn) (*OneToAllResponse, error)
|
|
|
|
// GeocodeWithResponse request
|
|
GeocodeWithResponse(ctx context.Context, params *GeocodeParams, reqEditors ...RequestEditorFn) (*GeocodeResponse, error)
|
|
|
|
// InitialWithResponse request
|
|
InitialWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*InitialResponse, error)
|
|
|
|
// LevelsWithResponse request
|
|
LevelsWithResponse(ctx context.Context, params *LevelsParams, reqEditors ...RequestEditorFn) (*LevelsResponse, error)
|
|
|
|
// StopsWithResponse request
|
|
StopsWithResponse(ctx context.Context, params *StopsParams, reqEditors ...RequestEditorFn) (*StopsResponse, error)
|
|
|
|
// TripsWithResponse request
|
|
TripsWithResponse(ctx context.Context, params *TripsParams, reqEditors ...RequestEditorFn) (*TripsResponse, error)
|
|
|
|
// OneToManyWithResponse request
|
|
OneToManyWithResponse(ctx context.Context, params *OneToManyParams, reqEditors ...RequestEditorFn) (*OneToManyResponse, error)
|
|
|
|
// ReverseGeocodeWithResponse request
|
|
ReverseGeocodeWithResponse(ctx context.Context, params *ReverseGeocodeParams, reqEditors ...RequestEditorFn) (*ReverseGeocodeResponse, error)
|
|
|
|
// StoptimesWithResponse request
|
|
StoptimesWithResponse(ctx context.Context, params *StoptimesParams, reqEditors ...RequestEditorFn) (*StoptimesResponse, error)
|
|
|
|
// PlanWithResponse request
|
|
PlanWithResponse(ctx context.Context, params *PlanParams, reqEditors ...RequestEditorFn) (*PlanResponse, error)
|
|
|
|
// TripWithResponse request
|
|
TripWithResponse(ctx context.Context, params *TripParams, reqEditors ...RequestEditorFn) (*TripResponse, error)
|
|
}
|
|
|
|
type FootpathsResponse struct {
|
|
Body []byte
|
|
HTTPResponse *http.Response
|
|
JSON200 *struct {
|
|
// Footpaths all outgoing footpaths of this location
|
|
Footpaths []Footpath `json:"footpaths"`
|
|
Place Place `json:"place"`
|
|
}
|
|
}
|
|
|
|
// Status returns HTTPResponse.Status
|
|
func (r FootpathsResponse) Status() string {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.Status
|
|
}
|
|
return http.StatusText(0)
|
|
}
|
|
|
|
// StatusCode returns HTTPResponse.StatusCode
|
|
func (r FootpathsResponse) StatusCode() int {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.StatusCode
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type OneToAllResponse struct {
|
|
Body []byte
|
|
HTTPResponse *http.Response
|
|
JSON200 *Reachable
|
|
}
|
|
|
|
// Status returns HTTPResponse.Status
|
|
func (r OneToAllResponse) Status() string {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.Status
|
|
}
|
|
return http.StatusText(0)
|
|
}
|
|
|
|
// StatusCode returns HTTPResponse.StatusCode
|
|
func (r OneToAllResponse) StatusCode() int {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.StatusCode
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type GeocodeResponse struct {
|
|
Body []byte
|
|
HTTPResponse *http.Response
|
|
JSON200 *[]Match
|
|
}
|
|
|
|
// Status returns HTTPResponse.Status
|
|
func (r GeocodeResponse) Status() string {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.Status
|
|
}
|
|
return http.StatusText(0)
|
|
}
|
|
|
|
// StatusCode returns HTTPResponse.StatusCode
|
|
func (r GeocodeResponse) StatusCode() int {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.StatusCode
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type InitialResponse struct {
|
|
Body []byte
|
|
HTTPResponse *http.Response
|
|
JSON200 *struct {
|
|
// Lat latitude
|
|
Lat float32 `json:"lat"`
|
|
|
|
// Lon longitude
|
|
Lon float32 `json:"lon"`
|
|
|
|
// Zoom zoom level
|
|
Zoom float32 `json:"zoom"`
|
|
}
|
|
}
|
|
|
|
// Status returns HTTPResponse.Status
|
|
func (r InitialResponse) Status() string {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.Status
|
|
}
|
|
return http.StatusText(0)
|
|
}
|
|
|
|
// StatusCode returns HTTPResponse.StatusCode
|
|
func (r InitialResponse) StatusCode() int {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.StatusCode
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type LevelsResponse struct {
|
|
Body []byte
|
|
HTTPResponse *http.Response
|
|
JSON200 *[]float32
|
|
}
|
|
|
|
// Status returns HTTPResponse.Status
|
|
func (r LevelsResponse) Status() string {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.Status
|
|
}
|
|
return http.StatusText(0)
|
|
}
|
|
|
|
// StatusCode returns HTTPResponse.StatusCode
|
|
func (r LevelsResponse) StatusCode() int {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.StatusCode
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type StopsResponse struct {
|
|
Body []byte
|
|
HTTPResponse *http.Response
|
|
JSON200 *[]Place
|
|
}
|
|
|
|
// Status returns HTTPResponse.Status
|
|
func (r StopsResponse) Status() string {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.Status
|
|
}
|
|
return http.StatusText(0)
|
|
}
|
|
|
|
// StatusCode returns HTTPResponse.StatusCode
|
|
func (r StopsResponse) StatusCode() int {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.StatusCode
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type TripsResponse struct {
|
|
Body []byte
|
|
HTTPResponse *http.Response
|
|
JSON200 *[]TripSegment
|
|
}
|
|
|
|
// Status returns HTTPResponse.Status
|
|
func (r TripsResponse) Status() string {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.Status
|
|
}
|
|
return http.StatusText(0)
|
|
}
|
|
|
|
// StatusCode returns HTTPResponse.StatusCode
|
|
func (r TripsResponse) StatusCode() int {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.StatusCode
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type OneToManyResponse struct {
|
|
Body []byte
|
|
HTTPResponse *http.Response
|
|
JSON200 *[]Duration
|
|
}
|
|
|
|
// Status returns HTTPResponse.Status
|
|
func (r OneToManyResponse) Status() string {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.Status
|
|
}
|
|
return http.StatusText(0)
|
|
}
|
|
|
|
// StatusCode returns HTTPResponse.StatusCode
|
|
func (r OneToManyResponse) StatusCode() int {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.StatusCode
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type ReverseGeocodeResponse struct {
|
|
Body []byte
|
|
HTTPResponse *http.Response
|
|
JSON200 *[]Match
|
|
}
|
|
|
|
// Status returns HTTPResponse.Status
|
|
func (r ReverseGeocodeResponse) Status() string {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.Status
|
|
}
|
|
return http.StatusText(0)
|
|
}
|
|
|
|
// StatusCode returns HTTPResponse.StatusCode
|
|
func (r ReverseGeocodeResponse) StatusCode() int {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.StatusCode
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type StoptimesResponse struct {
|
|
Body []byte
|
|
HTTPResponse *http.Response
|
|
JSON200 *struct {
|
|
// NextPageCursor Use the cursor to get the next page of results. Insert the cursor into the request and post it to get the next page.
|
|
// The next page is a set of stop times AFTER the last stop time in this result.
|
|
NextPageCursor string `json:"nextPageCursor"`
|
|
|
|
// PreviousPageCursor Use the cursor to get the previous page of results. Insert the cursor into the request and post it to get the previous page.
|
|
// The previous page is a set of stop times BEFORE the first stop time in the result.
|
|
PreviousPageCursor string `json:"previousPageCursor"`
|
|
|
|
// StopTimes list of stop times
|
|
StopTimes []StopTime `json:"stopTimes"`
|
|
}
|
|
}
|
|
|
|
// Status returns HTTPResponse.Status
|
|
func (r StoptimesResponse) Status() string {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.Status
|
|
}
|
|
return http.StatusText(0)
|
|
}
|
|
|
|
// StatusCode returns HTTPResponse.StatusCode
|
|
func (r StoptimesResponse) StatusCode() int {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.StatusCode
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type PlanResponse struct {
|
|
Body []byte
|
|
HTTPResponse *http.Response
|
|
JSON200 *struct {
|
|
// DebugOutput debug statistics
|
|
DebugOutput map[string]int `json:"debugOutput"`
|
|
|
|
// Direct Direct trips by `WALK`, `BIKE`, `CAR`, etc. without time-dependency.
|
|
// The starting time (`arriveBy=false`) / arrival time (`arriveBy=true`) is always the queried `time` parameter (set to \"now\" if not set).
|
|
// But all `direct` connections are meant to be independent of absolute times.
|
|
Direct []Itinerary `json:"direct"`
|
|
From Place `json:"from"`
|
|
|
|
// Itineraries list of itineraries
|
|
Itineraries []Itinerary `json:"itineraries"`
|
|
|
|
// NextPageCursor Use the cursor to get the next page of results. Insert the cursor into the request and post it to get the next page.
|
|
// The next page is a set of itineraries departing AFTER the last itinerary in this result.
|
|
NextPageCursor string `json:"nextPageCursor"`
|
|
|
|
// PreviousPageCursor Use the cursor to get the previous page of results. Insert the cursor into the request and post it to get the previous page.
|
|
// The previous page is a set of itineraries departing BEFORE the first itinerary in the result for a depart after search. When using the default sort order the previous set of itineraries is inserted before the current result.
|
|
PreviousPageCursor string `json:"previousPageCursor"`
|
|
|
|
// RequestParameters the routing query
|
|
RequestParameters map[string]string `json:"requestParameters"`
|
|
To Place `json:"to"`
|
|
}
|
|
}
|
|
|
|
// Status returns HTTPResponse.Status
|
|
func (r PlanResponse) Status() string {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.Status
|
|
}
|
|
return http.StatusText(0)
|
|
}
|
|
|
|
// StatusCode returns HTTPResponse.StatusCode
|
|
func (r PlanResponse) StatusCode() int {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.StatusCode
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type TripResponse struct {
|
|
Body []byte
|
|
HTTPResponse *http.Response
|
|
JSON200 *Itinerary
|
|
}
|
|
|
|
// Status returns HTTPResponse.Status
|
|
func (r TripResponse) Status() string {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.Status
|
|
}
|
|
return http.StatusText(0)
|
|
}
|
|
|
|
// StatusCode returns HTTPResponse.StatusCode
|
|
func (r TripResponse) StatusCode() int {
|
|
if r.HTTPResponse != nil {
|
|
return r.HTTPResponse.StatusCode
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// FootpathsWithResponse request returning *FootpathsResponse
|
|
func (c *ClientWithResponses) FootpathsWithResponse(ctx context.Context, params *FootpathsParams, reqEditors ...RequestEditorFn) (*FootpathsResponse, error) {
|
|
rsp, err := c.Footpaths(ctx, params, reqEditors...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return ParseFootpathsResponse(rsp)
|
|
}
|
|
|
|
// OneToAllWithResponse request returning *OneToAllResponse
|
|
func (c *ClientWithResponses) OneToAllWithResponse(ctx context.Context, params *OneToAllParams, reqEditors ...RequestEditorFn) (*OneToAllResponse, error) {
|
|
rsp, err := c.OneToAll(ctx, params, reqEditors...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return ParseOneToAllResponse(rsp)
|
|
}
|
|
|
|
// GeocodeWithResponse request returning *GeocodeResponse
|
|
func (c *ClientWithResponses) GeocodeWithResponse(ctx context.Context, params *GeocodeParams, reqEditors ...RequestEditorFn) (*GeocodeResponse, error) {
|
|
rsp, err := c.Geocode(ctx, params, reqEditors...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return ParseGeocodeResponse(rsp)
|
|
}
|
|
|
|
// InitialWithResponse request returning *InitialResponse
|
|
func (c *ClientWithResponses) InitialWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*InitialResponse, error) {
|
|
rsp, err := c.Initial(ctx, reqEditors...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return ParseInitialResponse(rsp)
|
|
}
|
|
|
|
// LevelsWithResponse request returning *LevelsResponse
|
|
func (c *ClientWithResponses) LevelsWithResponse(ctx context.Context, params *LevelsParams, reqEditors ...RequestEditorFn) (*LevelsResponse, error) {
|
|
rsp, err := c.Levels(ctx, params, reqEditors...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return ParseLevelsResponse(rsp)
|
|
}
|
|
|
|
// StopsWithResponse request returning *StopsResponse
|
|
func (c *ClientWithResponses) StopsWithResponse(ctx context.Context, params *StopsParams, reqEditors ...RequestEditorFn) (*StopsResponse, error) {
|
|
rsp, err := c.Stops(ctx, params, reqEditors...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return ParseStopsResponse(rsp)
|
|
}
|
|
|
|
// TripsWithResponse request returning *TripsResponse
|
|
func (c *ClientWithResponses) TripsWithResponse(ctx context.Context, params *TripsParams, reqEditors ...RequestEditorFn) (*TripsResponse, error) {
|
|
rsp, err := c.Trips(ctx, params, reqEditors...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return ParseTripsResponse(rsp)
|
|
}
|
|
|
|
// OneToManyWithResponse request returning *OneToManyResponse
|
|
func (c *ClientWithResponses) OneToManyWithResponse(ctx context.Context, params *OneToManyParams, reqEditors ...RequestEditorFn) (*OneToManyResponse, error) {
|
|
rsp, err := c.OneToMany(ctx, params, reqEditors...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return ParseOneToManyResponse(rsp)
|
|
}
|
|
|
|
// ReverseGeocodeWithResponse request returning *ReverseGeocodeResponse
|
|
func (c *ClientWithResponses) ReverseGeocodeWithResponse(ctx context.Context, params *ReverseGeocodeParams, reqEditors ...RequestEditorFn) (*ReverseGeocodeResponse, error) {
|
|
rsp, err := c.ReverseGeocode(ctx, params, reqEditors...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return ParseReverseGeocodeResponse(rsp)
|
|
}
|
|
|
|
// StoptimesWithResponse request returning *StoptimesResponse
|
|
func (c *ClientWithResponses) StoptimesWithResponse(ctx context.Context, params *StoptimesParams, reqEditors ...RequestEditorFn) (*StoptimesResponse, error) {
|
|
rsp, err := c.Stoptimes(ctx, params, reqEditors...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return ParseStoptimesResponse(rsp)
|
|
}
|
|
|
|
// PlanWithResponse request returning *PlanResponse
|
|
func (c *ClientWithResponses) PlanWithResponse(ctx context.Context, params *PlanParams, reqEditors ...RequestEditorFn) (*PlanResponse, error) {
|
|
rsp, err := c.Plan(ctx, params, reqEditors...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return ParsePlanResponse(rsp)
|
|
}
|
|
|
|
// TripWithResponse request returning *TripResponse
|
|
func (c *ClientWithResponses) TripWithResponse(ctx context.Context, params *TripParams, reqEditors ...RequestEditorFn) (*TripResponse, error) {
|
|
rsp, err := c.Trip(ctx, params, reqEditors...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return ParseTripResponse(rsp)
|
|
}
|
|
|
|
// ParseFootpathsResponse parses an HTTP response from a FootpathsWithResponse call
|
|
func ParseFootpathsResponse(rsp *http.Response) (*FootpathsResponse, error) {
|
|
bodyBytes, err := io.ReadAll(rsp.Body)
|
|
defer func() { _ = rsp.Body.Close() }()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
response := &FootpathsResponse{
|
|
Body: bodyBytes,
|
|
HTTPResponse: rsp,
|
|
}
|
|
|
|
switch {
|
|
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
|
|
var dest struct {
|
|
// Footpaths all outgoing footpaths of this location
|
|
Footpaths []Footpath `json:"footpaths"`
|
|
Place Place `json:"place"`
|
|
}
|
|
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
|
|
return nil, err
|
|
}
|
|
response.JSON200 = &dest
|
|
}
|
|
|
|
return response, nil
|
|
}
|
|
|
|
// ParseOneToAllResponse parses an HTTP response from a OneToAllWithResponse call
|
|
func ParseOneToAllResponse(rsp *http.Response) (*OneToAllResponse, error) {
|
|
bodyBytes, err := io.ReadAll(rsp.Body)
|
|
defer func() { _ = rsp.Body.Close() }()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
response := &OneToAllResponse{
|
|
Body: bodyBytes,
|
|
HTTPResponse: rsp,
|
|
}
|
|
|
|
switch {
|
|
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
|
|
var dest Reachable
|
|
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
|
|
return nil, err
|
|
}
|
|
response.JSON200 = &dest
|
|
}
|
|
|
|
return response, nil
|
|
}
|
|
|
|
// ParseGeocodeResponse parses an HTTP response from a GeocodeWithResponse call
|
|
func ParseGeocodeResponse(rsp *http.Response) (*GeocodeResponse, error) {
|
|
bodyBytes, err := io.ReadAll(rsp.Body)
|
|
defer func() { _ = rsp.Body.Close() }()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
response := &GeocodeResponse{
|
|
Body: bodyBytes,
|
|
HTTPResponse: rsp,
|
|
}
|
|
|
|
switch {
|
|
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
|
|
var dest []Match
|
|
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
|
|
return nil, err
|
|
}
|
|
response.JSON200 = &dest
|
|
}
|
|
|
|
return response, nil
|
|
}
|
|
|
|
// ParseInitialResponse parses an HTTP response from a InitialWithResponse call
|
|
func ParseInitialResponse(rsp *http.Response) (*InitialResponse, error) {
|
|
bodyBytes, err := io.ReadAll(rsp.Body)
|
|
defer func() { _ = rsp.Body.Close() }()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
response := &InitialResponse{
|
|
Body: bodyBytes,
|
|
HTTPResponse: rsp,
|
|
}
|
|
|
|
switch {
|
|
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
|
|
var dest struct {
|
|
// Lat latitude
|
|
Lat float32 `json:"lat"`
|
|
|
|
// Lon longitude
|
|
Lon float32 `json:"lon"`
|
|
|
|
// Zoom zoom level
|
|
Zoom float32 `json:"zoom"`
|
|
}
|
|
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
|
|
return nil, err
|
|
}
|
|
response.JSON200 = &dest
|
|
}
|
|
|
|
return response, nil
|
|
}
|
|
|
|
// ParseLevelsResponse parses an HTTP response from a LevelsWithResponse call
|
|
func ParseLevelsResponse(rsp *http.Response) (*LevelsResponse, error) {
|
|
bodyBytes, err := io.ReadAll(rsp.Body)
|
|
defer func() { _ = rsp.Body.Close() }()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
response := &LevelsResponse{
|
|
Body: bodyBytes,
|
|
HTTPResponse: rsp,
|
|
}
|
|
|
|
switch {
|
|
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
|
|
var dest []float32
|
|
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
|
|
return nil, err
|
|
}
|
|
response.JSON200 = &dest
|
|
}
|
|
|
|
return response, nil
|
|
}
|
|
|
|
// ParseStopsResponse parses an HTTP response from a StopsWithResponse call
|
|
func ParseStopsResponse(rsp *http.Response) (*StopsResponse, error) {
|
|
bodyBytes, err := io.ReadAll(rsp.Body)
|
|
defer func() { _ = rsp.Body.Close() }()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
response := &StopsResponse{
|
|
Body: bodyBytes,
|
|
HTTPResponse: rsp,
|
|
}
|
|
|
|
switch {
|
|
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
|
|
var dest []Place
|
|
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
|
|
return nil, err
|
|
}
|
|
response.JSON200 = &dest
|
|
}
|
|
|
|
return response, nil
|
|
}
|
|
|
|
// ParseTripsResponse parses an HTTP response from a TripsWithResponse call
|
|
func ParseTripsResponse(rsp *http.Response) (*TripsResponse, error) {
|
|
bodyBytes, err := io.ReadAll(rsp.Body)
|
|
defer func() { _ = rsp.Body.Close() }()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
response := &TripsResponse{
|
|
Body: bodyBytes,
|
|
HTTPResponse: rsp,
|
|
}
|
|
|
|
switch {
|
|
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
|
|
var dest []TripSegment
|
|
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
|
|
return nil, err
|
|
}
|
|
response.JSON200 = &dest
|
|
}
|
|
|
|
return response, nil
|
|
}
|
|
|
|
// ParseOneToManyResponse parses an HTTP response from a OneToManyWithResponse call
|
|
func ParseOneToManyResponse(rsp *http.Response) (*OneToManyResponse, error) {
|
|
bodyBytes, err := io.ReadAll(rsp.Body)
|
|
defer func() { _ = rsp.Body.Close() }()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
response := &OneToManyResponse{
|
|
Body: bodyBytes,
|
|
HTTPResponse: rsp,
|
|
}
|
|
|
|
switch {
|
|
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
|
|
var dest []Duration
|
|
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
|
|
return nil, err
|
|
}
|
|
response.JSON200 = &dest
|
|
}
|
|
|
|
return response, nil
|
|
}
|
|
|
|
// ParseReverseGeocodeResponse parses an HTTP response from a ReverseGeocodeWithResponse call
|
|
func ParseReverseGeocodeResponse(rsp *http.Response) (*ReverseGeocodeResponse, error) {
|
|
bodyBytes, err := io.ReadAll(rsp.Body)
|
|
defer func() { _ = rsp.Body.Close() }()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
response := &ReverseGeocodeResponse{
|
|
Body: bodyBytes,
|
|
HTTPResponse: rsp,
|
|
}
|
|
|
|
switch {
|
|
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
|
|
var dest []Match
|
|
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
|
|
return nil, err
|
|
}
|
|
response.JSON200 = &dest
|
|
}
|
|
|
|
return response, nil
|
|
}
|
|
|
|
// ParseStoptimesResponse parses an HTTP response from a StoptimesWithResponse call
|
|
func ParseStoptimesResponse(rsp *http.Response) (*StoptimesResponse, error) {
|
|
bodyBytes, err := io.ReadAll(rsp.Body)
|
|
defer func() { _ = rsp.Body.Close() }()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
response := &StoptimesResponse{
|
|
Body: bodyBytes,
|
|
HTTPResponse: rsp,
|
|
}
|
|
|
|
switch {
|
|
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
|
|
var dest struct {
|
|
// NextPageCursor Use the cursor to get the next page of results. Insert the cursor into the request and post it to get the next page.
|
|
// The next page is a set of stop times AFTER the last stop time in this result.
|
|
NextPageCursor string `json:"nextPageCursor"`
|
|
|
|
// PreviousPageCursor Use the cursor to get the previous page of results. Insert the cursor into the request and post it to get the previous page.
|
|
// The previous page is a set of stop times BEFORE the first stop time in the result.
|
|
PreviousPageCursor string `json:"previousPageCursor"`
|
|
|
|
// StopTimes list of stop times
|
|
StopTimes []StopTime `json:"stopTimes"`
|
|
}
|
|
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
|
|
return nil, err
|
|
}
|
|
response.JSON200 = &dest
|
|
}
|
|
|
|
return response, nil
|
|
}
|
|
|
|
// ParsePlanResponse parses an HTTP response from a PlanWithResponse call
|
|
func ParsePlanResponse(rsp *http.Response) (*PlanResponse, error) {
|
|
bodyBytes, err := io.ReadAll(rsp.Body)
|
|
defer func() { _ = rsp.Body.Close() }()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
response := &PlanResponse{
|
|
Body: bodyBytes,
|
|
HTTPResponse: rsp,
|
|
}
|
|
|
|
switch {
|
|
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
|
|
var dest struct {
|
|
// DebugOutput debug statistics
|
|
DebugOutput map[string]int `json:"debugOutput"`
|
|
|
|
// Direct Direct trips by `WALK`, `BIKE`, `CAR`, etc. without time-dependency.
|
|
// The starting time (`arriveBy=false`) / arrival time (`arriveBy=true`) is always the queried `time` parameter (set to \"now\" if not set).
|
|
// But all `direct` connections are meant to be independent of absolute times.
|
|
Direct []Itinerary `json:"direct"`
|
|
From Place `json:"from"`
|
|
|
|
// Itineraries list of itineraries
|
|
Itineraries []Itinerary `json:"itineraries"`
|
|
|
|
// NextPageCursor Use the cursor to get the next page of results. Insert the cursor into the request and post it to get the next page.
|
|
// The next page is a set of itineraries departing AFTER the last itinerary in this result.
|
|
NextPageCursor string `json:"nextPageCursor"`
|
|
|
|
// PreviousPageCursor Use the cursor to get the previous page of results. Insert the cursor into the request and post it to get the previous page.
|
|
// The previous page is a set of itineraries departing BEFORE the first itinerary in the result for a depart after search. When using the default sort order the previous set of itineraries is inserted before the current result.
|
|
PreviousPageCursor string `json:"previousPageCursor"`
|
|
|
|
// RequestParameters the routing query
|
|
RequestParameters map[string]string `json:"requestParameters"`
|
|
To Place `json:"to"`
|
|
}
|
|
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
|
|
return nil, err
|
|
}
|
|
response.JSON200 = &dest
|
|
}
|
|
|
|
return response, nil
|
|
}
|
|
|
|
// ParseTripResponse parses an HTTP response from a TripWithResponse call
|
|
func ParseTripResponse(rsp *http.Response) (*TripResponse, error) {
|
|
bodyBytes, err := io.ReadAll(rsp.Body)
|
|
defer func() { _ = rsp.Body.Close() }()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
response := &TripResponse{
|
|
Body: bodyBytes,
|
|
HTTPResponse: rsp,
|
|
}
|
|
|
|
switch {
|
|
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
|
|
var dest Itinerary
|
|
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
|
|
return nil, err
|
|
}
|
|
response.JSON200 = &dest
|
|
}
|
|
|
|
return response, nil
|
|
}
|