Documentation
¶
Index ¶
- func OpenDatabase(filename string, recreate bool) (*sql.DB, error)
- type AirportDataLoaderService
- func (service *AirportDataLoaderService) LoadAirports(filename string, countries map[string]string, regions map[string]string) (map[string]domain.Airport, error)
- func (service *AirportDataLoaderService) LoadCountries(filename string) (map[string]string, error)
- func (service *AirportDataLoaderService) LoadRegions(filename string) (map[string]string, error)
- type ArgumentsLoaderService
- type FlightRepository
- type LogWrapper
- func (l *LogWrapper) Debug(args ...interface{})
- func (l *LogWrapper) Debugf(format string, args ...interface{})
- func (l *LogWrapper) Error(args ...interface{})
- func (l *LogWrapper) Errorf(format string, args ...interface{})
- func (l *LogWrapper) Fatal(args ...interface{})
- func (l *LogWrapper) Fatalf(format string, args ...interface{})
- func (l *LogWrapper) Info(args ...interface{})
- func (l *LogWrapper) Infof(format string, args ...interface{})
- func (l *LogWrapper) Warn(args ...interface{})
- func (l *LogWrapper) Warnf(format string, args ...interface{})
- type SkyScannerAgent
- type SkyScannerBookingDetailsLink
- type SkyScannerCarrier
- type SkyScannerCurrency
- type SkyScannerFlightNumber
- type SkyScannerItinerary
- type SkyScannerLeg
- type SkyScannerPlace
- type SkyScannerPricingOption
- type SkyScannerQuery
- type SkyScannerResponse
- type SkyScannerSegment
- type SkyScannerService
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AirportDataLoaderService ¶
type AirportDataLoaderService struct {
// contains filtered or unexported fields
}
AirportDataLoaderService handles loading airport data from static CSV files.
func NewAirportDataLoader ¶
func NewAirportDataLoader(logger domain.Logger) *AirportDataLoaderService
NewAirportDataLoader creates a new instance.
func (*AirportDataLoaderService) LoadAirports ¶
func (service *AirportDataLoaderService) LoadAirports(filename string, countries map[string]string, regions map[string]string) (map[string]domain.Airport, error)
LoadAirports returns a slice of Airports, with country and region names populated. The data is read from the specified CSV file.
func (*AirportDataLoaderService) LoadCountries ¶
func (service *AirportDataLoaderService) LoadCountries(filename string) (map[string]string, error)
LoadCountries returns a map of countries, keyed by country code. The data is read from the specified CSV file.
func (*AirportDataLoaderService) LoadRegions ¶
func (service *AirportDataLoaderService) LoadRegions(filename string) (map[string]string, error)
LoadRegions returns a map of regions, keyed by region code. The data is read from the specified CSV file.
type ArgumentsLoaderService ¶
type ArgumentsLoaderService struct {
// contains filtered or unexported fields
}
ArgumentsLoaderService handles loading arguments from a JSON file.
func NewArgumentsLoader ¶
func NewArgumentsLoader(logger domain.Logger) *ArgumentsLoaderService
NewArgumentsLoader creates a new instance.
type FlightRepository ¶
type FlightRepository struct {
// contains filtered or unexported fields
}
FlightRepository handles CRUD operations on flight data.
func NewFlightRepository ¶
func NewFlightRepository(logger domain.Logger, db *sql.DB) *FlightRepository
NewFlightRepository creates a new instance.
func (*FlightRepository) CreateAirports ¶
func (repo *FlightRepository) CreateAirports(airports []domain.Airport) error
CreateAirports inserts all specified airports into the repository.
func (*FlightRepository) InitialiseSchema ¶
func (repo *FlightRepository) InitialiseSchema() error
InitialiseSchema populates a blank repository with the schema - ie empty tables.
func (*FlightRepository) ReadAllAirports ¶
func (repo *FlightRepository) ReadAllAirports() ([]domain.Airport, error)
ReadAllAirports reads all airports from the repository.
type LogWrapper ¶
type LogWrapper struct {
// contains filtered or unexported fields
}
LogWrapper wraps the logrus logger in methods compatible with domain.Logger.
func NewLogWrapper ¶
func NewLogWrapper(name string, debug bool) *LogWrapper
NewLogWrapper creates a logger with the specified name.
func (*LogWrapper) Debug ¶
func (l *LogWrapper) Debug(args ...interface{})
Debug writes a static message at debug level.
func (*LogWrapper) Debugf ¶
func (l *LogWrapper) Debugf(format string, args ...interface{})
Debugf writes a formatted message at debug level.
func (*LogWrapper) Error ¶
func (l *LogWrapper) Error(args ...interface{})
Error writes a static message at error level.
func (*LogWrapper) Errorf ¶
func (l *LogWrapper) Errorf(format string, args ...interface{})
Errorf writes a formatted message at error level.
func (*LogWrapper) Fatal ¶
func (l *LogWrapper) Fatal(args ...interface{})
Fatal writes a static message at fatal level, then quits.
func (*LogWrapper) Fatalf ¶
func (l *LogWrapper) Fatalf(format string, args ...interface{})
Fatalf writes a formatted message at fatal level, then quits.
func (*LogWrapper) Info ¶
func (l *LogWrapper) Info(args ...interface{})
Info writes a static message at info level.
func (*LogWrapper) Infof ¶
func (l *LogWrapper) Infof(format string, args ...interface{})
Infof writes a formatted message at debug level.
func (*LogWrapper) Warn ¶
func (l *LogWrapper) Warn(args ...interface{})
Warn writes a static message at warn level.
func (*LogWrapper) Warnf ¶
func (l *LogWrapper) Warnf(format string, args ...interface{})
Warnf writes a formatted message at warn level.
type SkyScannerAgent ¶
type SkyScannerAgent struct { ID int `json:"Id"` Name string ImageURL string `json:"ImageUrl"` Status string // e.g. "UpdatesPending", "UpdatesComplete" OptimisedForMobile bool Type string // e.g. "Airline", "TravelAgent" }
SkyScannerAgent details who has quoted
type SkyScannerBookingDetailsLink ¶
type SkyScannerBookingDetailsLink struct { URI string `json:"Uri"` // relative REST query to get the booking Body string // query params to add Method string // e.g. "PUT" }
SkyScannerBookingDetailsLink contains links to get booking details
type SkyScannerCarrier ¶
type SkyScannerCarrier struct { ID int `json:"Id"` Code string `json:"Code,omitempty"` Name string ImageURL string `json:"ImageUrl"` DisplayCode string }
SkyScannerCarrier details an Airline
type SkyScannerCurrency ¶
type SkyScannerCurrency struct { Code string // e.g. "GBP", Symbol string // e.g. "£" ThousandsSeparator string // e.g. "," DecimalSeparator string // e.g. "." SymbolOnLeft bool SpaceBetweenAmountAndSymbol bool RoundingCoefficient int // e.g. 0 DecimalDigits int // e.g. 2 }
SkyScannerCurrency details how to format monetary values
type SkyScannerFlightNumber ¶
type SkyScannerFlightNumber struct { FlightNumber string // e.g. "433" CarrierID int `json:"CarrierId"` }
SkyScannerFlightNumber can be several for same carrier
type SkyScannerItinerary ¶
type SkyScannerItinerary struct { OutboundLegID string `json:"OutboundLegId"` InboundLegID string `json:"InboundLegId"` PricingOptions []SkyScannerPricingOption BookingDetailsLink SkyScannerBookingDetailsLink }
SkyScannerItinerary contains a combination of Legs
type SkyScannerLeg ¶
type SkyScannerLeg struct { ID string `json:"Id"` SegmentIds []int OriginStation int DestinationStation int Departure string // e.g. "2019-10-14T12:30:00" Arrival string // e.g. "2019-10-15T12:20:00" Duration int // minutes JourneyMode string // e.g. "Flight" Stops []int Carriers []int OperatingCarriers []int Directionality string // e.g. "Outbound", "Inbound" FlightNumbers []SkyScannerFlightNumber }
SkyScannerLeg contains details of part of an itinery, e.g. the outbound flight
type SkyScannerPlace ¶
type SkyScannerPlace struct { ID int `json:"Id"` ParentID *int `json:"ParentId,omitempty"` Code string // e.g. Airport IATA code "LHR", ISO country code "GB" Type string // e.g. "Airport", "Country", "City" Name string // e.g. "London Heathrow" }
SkyScannerPlace details somewhere involved in the quote
type SkyScannerPricingOption ¶
type SkyScannerPricingOption struct { Agents []int // Agent ID QuoteAgeInMinutes int Price float64 // e.g. 758.42 DeeplinkURL string `json:"DeeplinkUrl"` }
SkyScannerPricingOption contains a quote from Agent(s)
type SkyScannerQuery ¶
type SkyScannerQuery struct { Country string Currency string Locale string Adults int Children int Infants int OriginPlace string // actually a Place ID DestinationPlace string // actually a Place ID OutboundDate string // YYYY-MM-DD InboundDate string // YYYY-MM-DD LocationSchema string // e,g, "Default" CabinClass string GroupPricing bool }
SkyScannerQuery contains the original input parameters
type SkyScannerResponse ¶
type SkyScannerResponse struct { SessionKey string Query SkyScannerQuery Status string // "UpdatesPending", "UpdatesComplete" Itineraries []SkyScannerItinerary Legs []SkyScannerLeg Segments []SkyScannerSegment Carriers []SkyScannerCarrier Agents []SkyScannerAgent Places []SkyScannerPlace Currencies []SkyScannerCurrency }
SkyScannerResponse is the top-level result
type SkyScannerSegment ¶
type SkyScannerSegment struct { ID int `json:"Id"` OriginStation int DestinationStation int DepartureDateTime string // e.g. "2019-10-14T12:30:00" ArrivalDateTime string // e.g. "2019-10-14T14:06:00" Carrier int OperatingCarrier int Duration int FlightNumber string JourneyMode string // e.g. "Flight" Directionality string // e.g. "Outbound", "Inbound" }
SkyScannerSegment details part of a Leg
type SkyScannerService ¶
type SkyScannerService struct {
// contains filtered or unexported fields
}
SkyScannerService handles calling the sky scanner API.
func NewSkyScannerService ¶
func NewSkyScannerService(logger domain.Logger) *SkyScannerService
NewSkyScannerService creates a new instance.
func (*SkyScannerService) PollForQuotes ¶
func (service *SkyScannerService) PollForQuotes(sessionKey string, apiHost string, apiKey string, airports map[string]domain.Airport) (*domain.Quote, error)
PollForQuotes calls the skyscanner "Poll session results" operation, to look for quotes
func (*SkyScannerService) StartSearch ¶
func (service *SkyScannerService) StartSearch(arguments *domain.Arguments) (string, error)
StartSearch calls the skyscanner "Create session" operation, which returns a session key.