irdata

package module
v0.1.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 11, 2024 License: MIT Imports: 12 Imported by: 0

README

iracing-data-api

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AllowedLicense added in v0.1.6

type AllowedLicense struct {
	LicenseGroup    int    `json:"license_group"`
	MinLicenseLevel int    `json:"min_license_level"`
	MaxLicenseLevel int    `json:"max_license_level"`
	GroupName       string `json:"group_name"`
}

type AuthRequest

type AuthRequest struct {
	Email    string `json:"email"`
	Password string `json:"password"`
}

type AuthResponse

type AuthResponse struct {
	AuthCode        interface{} `json:"authcode"`
	AutoLoginSeries string      `json:"autoLoginSeries"`
	AutoLoginToken  string      `json:"autoLoginToken"`
	CustId          int         `json:"custId"`
	Email           string      `json:"email"`
	SsoCookieDomain string      `json:"ssoCookieDomain"`
	SsoCookieName   string      `json:"ssoCookieName"`
	SsoCookiePath   string      `json:"ssoCookiePath"`
	SsoCookieValue  string      `json:"ssoCookieValue"`

	Message              string `json:"message"`
	Inactive             bool   `json:"inactive"`
	VerificationRequired bool   `json:"verificationRequired"`
}

type AuthenticationError

type AuthenticationError struct {
	Msg     string
	Trigger error
}

func (*AuthenticationError) Error

func (e *AuthenticationError) Error() string

type Car

type Car struct {
	AiEnabled               bool                    `json:"ai_enabled"`
	AllowNumberColors       bool                    `json:"allow_number_colors"`
	AllowNumberFont         bool                    `json:"allow_number_font"`
	AllowSponsor1           bool                    `json:"allow_sponsor1"`
	AllowSponsor2           bool                    `json:"allow_sponsor2"`
	AllowWheelColor         bool                    `json:"allow_wheel_color"`
	AwardExempt             bool                    `json:"award_exempt"`
	CarDirPath              string                  `json:"car_dirpath"`
	CarID                   int                     `json:"car_id"`
	CarName                 string                  `json:"car_name"`
	CarNameAbbreviated      string                  `json:"car_name_abbreviated"`
	CarTypes                []CarType               `json:"car_types"`
	CarWeight               int                     `json:"car_weight"`
	Categories              []string                `json:"categories"`
	Created                 time.Time               `json:"created"`
	FirstSale               time.Time               `json:"first_sale"`
	ForumURL                string                  `json:"forum_url,omitempty"`
	FreeWithSubscription    bool                    `json:"free_with_subscription"`
	HasHeadlights           bool                    `json:"has_headlights"`
	HasMultipleDryTireTypes bool                    `json:"has_multiple_dry_tire_types"`
	HasRainCapableTireTypes bool                    `json:"has_rain_capable_tire_types"`
	Hp                      int                     `json:"hp"`
	IsPsPurchasable         bool                    `json:"is_ps_purchasable"`
	MaxPowerAdjustPct       int                     `json:"max_power_adjust_pct"`
	MaxWeightPenaltyKg      int                     `json:"max_weight_penalty_kg"`
	MinPowerAdjustPct       int                     `json:"min_power_adjust_pct"`
	PackageID               int                     `json:"package_id"`
	Patterns                int                     `json:"patterns"`
	Price                   float64                 `json:"price"`
	PriceDisplay            string                  `json:"price_display,omitempty"`
	RainEnabled             bool                    `json:"rain_enabled"`
	Retired                 bool                    `json:"retired"`
	SearchFilters           string                  `json:"search_filters"`
	Sku                     int                     `json:"sku"`
	CarMake                 string                  `json:"car_make,omitempty"`
	CarModel                string                  `json:"car_model,omitempty"`
	PaintRules              map[string]CarPaintRule `json:"paint_rules,omitempty"`
	SiteURL                 string                  `json:"site_url,omitempty"`
}

type CarClass

type CarClass struct {
	CarClassID    int          `json:"car_class_id"`
	CarsInClass   []CarInClass `json:"cars_in_class"`
	CustID        int          `json:"cust_id"`
	Name          string       `json:"name"`
	ShortName     string       `json:"short_name"`
	RelativeSpeed int          `json:"relative_speed"`
}

type CarInClass

type CarInClass struct {
	CarDirPath string `json:"car_dirpath"`
	CarID      int    `json:"car_id"`
	Retired    bool   `json:"retired"`
}

type CarPaintRule

type CarPaintRule struct {
	RestrictCustomPaint bool   `json:"RestrictCustomPaint,omitempty"`
	PaintCarAvailable   bool   `json:"PaintCarAvailable"`
	Color1              string `json:"Color1"`
	Color2              string `json:"Color2"`
	Color3              string `json:"Color3"`
	Sponsor1Available   bool   `json:"Sponsor1Available"`
	Sponsor2Available   bool   `json:"Sponsor2Available"`
	Sponsor1            string `json:"Sponsor1"`
	Sponsor2            string `json:"Sponsor2"`
	RulesExplanation    string `json:"RulesExplanation"`
}

func (*CarPaintRule) MarshalJSON

func (r *CarPaintRule) MarshalJSON() ([]byte, error)

func (*CarPaintRule) UnmarshalJSON

func (r *CarPaintRule) UnmarshalJSON(data []byte) error

type CarType

type CarType struct {
	CarType string `json:"car_type"`
}

type CarTypes added in v0.1.7

type CarTypes struct {
	CarType string `json:"car_type"`
}

type Category

type Category struct {
	Label string `json:"label"`
	Value int    `json:"value"`
}

type ConfigurationError

type ConfigurationError struct {
	Msg     string
	Trigger error
}

func (*ConfigurationError) Error

func (e *ConfigurationError) Error() string

type DataCar

type DataCar interface {
	Get() ([]Car, error)
}

type DataCarClass

type DataCarClass interface {
	Get() ([]CarClass, error)
}

type DataConstant

type DataConstant interface {
	GetCategories() ([]Category, error)
	GetDivisions() ([]Division, error)
	GetEventTypes() ([]EventType, error)
}

type DataHosted

type DataHosted interface {
	GetSessions() (HostedSessions, error)
	GetCombinedSessions(opts ...HostedCombinedSessionsOption) (HostedSessions, error)
}

type DataSeason added in v0.1.6

type DataSeason interface {
	List(year int, quarter int) (Seasons, error)
	RaceGuide(opts ...RaceGuideOption) (RaceGuide, error)
	SpectatorSubSessionIDs(opts ...SpectatorSubSessionIDsOption) (SpectatorSubSessionIDs, error)
}

type DataSeries added in v0.1.6

type DataSeries interface {
	Assets(opts ...SeriesAssetsOption) (SeriesAssets, error)
	Get() (Series, error)
	Seasons(opts ...SeriesSeasonsOption) (SeriesSeasons, error)
}

type DataTrack

type DataTrack interface {
	Get() ([]Track, error)
}

type Division

type Division struct {
	Label string `json:"label"`
	Value int    `json:"value"`
}

type DriverHelmet

type DriverHelmet struct {
	Pattern    int    `json:"pattern"`
	Color1     string `json:"color1"`
	Color2     string `json:"color2"`
	Color3     string `json:"color3"`
	FaceType   int    `json:"face_type"`
	HelmetType int    `json:"helmet_type"`
}

type EventType

type EventType struct {
	Label string `json:"label"`
	Value int    `json:"value"`
}

type EventTypes added in v0.1.6

type EventTypes struct {
	EventTypes []int
}

func (*EventTypes) ApplySpectatorSubSessionIDs added in v0.1.6

func (o *EventTypes) ApplySpectatorSubSessionIDs(v *url.Values)

type ForecastOptions added in v0.1.7

type ForecastOptions struct {
	ForecastType  int   `json:"forecast_type"`
	Precipitation int   `json:"precipitation"`
	Skies         int   `json:"skies"`
	StopPrecip    int   `json:"stop_precip"`
	Temperature   int   `json:"temperature"`
	WeatherSeed   int64 `json:"weather_seed"`
	WindDir       int   `json:"wind_dir"`
	WindSpeed     int   `json:"wind_speed"`
}

type FromOption added in v0.1.6

type FromOption struct {
	From time.Time
}

func (*FromOption) ApplyRaceGuide added in v0.1.6

func (o *FromOption) ApplyRaceGuide(v *url.Values)

type HeatSessionInfo added in v0.1.7

type HeatSessionInfo struct {
	ConsolationDeltaMaxFieldSize         int       `json:"consolation_delta_max_field_size"`
	ConsolationDeltaSessionLaps          int       `json:"consolation_delta_session_laps"`
	ConsolationDeltaSessionLengthMinutes int       `json:"consolation_delta_session_length_minutes"`
	ConsolationFirstMaxFieldSize         int       `json:"consolation_first_max_field_size"`
	ConsolationFirstSessionLaps          int       `json:"consolation_first_session_laps"`
	ConsolationFirstSessionLengthMinutes int       `json:"consolation_first_session_length_minutes"`
	ConsolationNumPositionToInvert       int       `json:"consolation_num_position_to_invert"`
	ConsolationNumToConsolation          int       `json:"consolation_num_to_consolation"`
	ConsolationNumToMain                 int       `json:"consolation_num_to_main"`
	ConsolationRunAlways                 bool      `json:"consolation_run_always"`
	ConsolationScoresChampPoints         bool      `json:"consolation_scores_champ_points"`
	Created                              time.Time `json:"created"`
	CustID                               int       `json:"cust_id"`
	Description                          string    `json:"description"`
	HeatCautionType                      int       `json:"heat_caution_type"`
	HeatInfoID                           int       `json:"heat_info_id"`
	HeatInfoName                         string    `json:"heat_info_name"`
	HeatLaps                             int       `json:"heat_laps"`
	HeatLengthMinutes                    int       `json:"heat_length_minutes"`
	HeatMaxFieldSize                     int       `json:"heat_max_field_size"`
	HeatNumFromEachToMain                int       `json:"heat_num_from_each_to_main"`
	HeatNumPositionToInvert              int       `json:"heat_num_position_to_invert"`
	HeatScoresChampPoints                bool      `json:"heat_scores_champ_points"`
	HeatSessionMinutesEstimate           int       `json:"heat_session_minutes_estimate"`
	Hidden                               bool      `json:"hidden"`
	MainLaps                             int       `json:"main_laps"`
	MainLengthMinutes                    int       `json:"main_length_minutes"`
	MainMaxFieldSize                     int       `json:"main_max_field_size"`
	MainNumPositionToInvert              int       `json:"main_num_position_to_invert"`
	MaxEntrants                          int       `json:"max_entrants"`
	OpenPractice                         bool      `json:"open_practice"`
	PreMainPracticeLengthMinutes         int       `json:"pre_main_practice_length_minutes"`
	PreQualNumToMain                     int       `json:"pre_qual_num_to_main"`
	PreQualPracticeLengthMinutes         int       `json:"pre_qual_practice_length_minutes"`
	QualCautionType                      int       `json:"qual_caution_type"`
	QualLaps                             int       `json:"qual_laps"`
	QualLengthMinutes                    int       `json:"qual_length_minutes"`
	QualNumToMain                        int       `json:"qual_num_to_main"`
	QualOpenDelaySeconds                 int       `json:"qual_open_delay_seconds"`
	QualScoresChampPoints                bool      `json:"qual_scores_champ_points"`
	QualScoring                          int       `json:"qual_scoring"`
	QualStyle                            int       `json:"qual_style"`
	RaceStyle                            int       `json:"race_style"`
}

type HostedCombinedSessionsOption

type HostedCombinedSessionsOption interface {
	ApplyHostedCombinedSessions(*url.Values)
}

type HostedSession

type HostedSession struct {
	Session
	Admins []SessionDriver `json:"admins"`
}

type HostedSessions

type HostedSessions struct {
	Subscribed bool            `json:"subscribed"`
	Sessions   []HostedSession `json:"sessions"`
	Success    bool            `json:"success"`
}

type IRData

type IRData interface {
	Email() string
	IsLoggedIn() bool
	GetLoginExpiration() time.Time

	Car() DataCar
	CarClass() DataCarClass
	Constant() DataConstant
	Hosted() DataHosted
	Track() DataTrack
	Season() DataSeason
	Series() DataSeries
}

func Login

func Login(email string, password string, options ...Options) (IRData, error)

type IncludeEndAfterFromOption added in v0.1.6

type IncludeEndAfterFromOption struct {
	Include bool
}

func (*IncludeEndAfterFromOption) ApplyRaceGuide added in v0.1.6

func (o *IncludeEndAfterFromOption) ApplyRaceGuide(v *url.Values)

type LicenseGroupType added in v0.1.7

type LicenseGroupType struct {
	LicenseGroupType int `json:"license_group_type"`
}

type LinkError

type LinkError struct {
	Msg     string
	Trigger error
}

func (*LinkError) Error

func (e *LinkError) Error() string

type Options

type Options interface {
	Apply(data *irdata) error
}

func WithAutoReauthorize

func WithAutoReauthorize(autoReauthorize bool) Options

func WithAutoReauthorizeThreshold

func WithAutoReauthorizeThreshold(reauthorizeThreshold time.Duration) Options

func WithHttpClient

func WithHttpClient(client *http.Client) Options

func WithMembersUrl

func WithMembersUrl(membersUrl string) Options

type OptionsAutoReauthorize

type OptionsAutoReauthorize struct {
	AutoReauthorize bool
}

func (OptionsAutoReauthorize) Apply

func (o OptionsAutoReauthorize) Apply(data *irdata) error

type OptionsAutoReauthorizeThreshold

type OptionsAutoReauthorizeThreshold struct {
	ReauthorizeThreshold time.Duration
}

func (OptionsAutoReauthorizeThreshold) Apply

func (o OptionsAutoReauthorizeThreshold) Apply(data *irdata) error

type OptionsHttpClient

type OptionsHttpClient struct {
	HttpClient *http.Client
}

func (OptionsHttpClient) Apply

func (o OptionsHttpClient) Apply(data *irdata) error

type OptionsMembersUrl

type OptionsMembersUrl struct {
	MembersUrl string
}

func (OptionsMembersUrl) Apply

func (o OptionsMembersUrl) Apply(data *irdata) error

type PackageIDOption

type PackageIDOption struct {
	PackageID int
}

func (*PackageIDOption) ApplyHostedCombinedSessions

func (o *PackageIDOption) ApplyHostedCombinedSessions(v *url.Values)

type RaceGuide added in v0.1.6

type RaceGuide struct {
	Subscribed     bool               `json:"subscribed"`
	Sessions       []RaceGuideSession `json:"sessions"`
	BlockBeginTime time.Time          `json:"block_begin_time"`
	BlockEndTime   time.Time          `json:"block_end_time"`
	Success        bool               `json:"success"`
}

type RaceGuideOption added in v0.1.6

type RaceGuideOption interface {
	ApplyRaceGuide(*url.Values)
}

type RaceGuideSession added in v0.1.6

type RaceGuideSession struct {
	SeasonID     int       `json:"season_id"`
	StartTime    time.Time `json:"start_time"`
	SuperSession bool      `json:"super_session"`
	SeriesID     int       `json:"series_id"`
	RaceWeekNum  int       `json:"race_week_num"`
	EndTime      time.Time `json:"end_time"`
	SessionID    int       `json:"session_id,omitempty"`
	EntryCount   int       `json:"entry_count"`
}

type RaceTimeDescriptor added in v0.1.7

type RaceTimeDescriptor struct {
	Repeating      bool        `json:"repeating"`
	SessionMinutes int         `json:"session_minutes"`
	SessionTimes   []time.Time `json:"session_times"`
	SuperSession   bool        `json:"super_session"`
}

type Season added in v0.1.6

type Season struct {
	SeasonID      int    `json:"season_id"`
	SeriesID      int    `json:"series_id"`
	SeasonName    string `json:"season_name"`
	SeriesName    string `json:"series_name"`
	Official      bool   `json:"official"`
	SeasonYear    int    `json:"season_year"`
	SeasonQuarter int    `json:"season_quarter"`
	LicenseGroup  int    `json:"license_group"`
	FixedSetup    bool   `json:"fixed_setup"`
	DriverChanges bool   `json:"driver_changes"`
	RookieSeason  string `json:"rookie_season,omitempty"`
}

type Seasons added in v0.1.6

type Seasons struct {
	SeasonQuarter int      `json:"season_quarter"`
	Seasons       []Season `json:"seasons"`
	SeasonYear    int      `json:"season_year"`
}

type Series added in v0.1.6

type Series []struct {
	AllowedLicenses []AllowedLicense `json:"allowed_licenses"`
	Category        string           `json:"category"`
	CategoryID      int              `json:"category_id"`
	Eligible        bool             `json:"eligible"`
	ForumURL        string           `json:"forum_url,omitempty"`
	MaxStarters     int              `json:"max_starters"`
	MinStarters     int              `json:"min_starters"`
	OvalCautionType int              `json:"oval_caution_type"`
	RoadCautionType int              `json:"road_caution_type"`
	SeriesID        int              `json:"series_id"`
	SeriesName      string           `json:"series_name"`
	SeriesShortName string           `json:"series_short_name"`
	SearchFilters   string           `json:"search_filters,omitempty"`
}

type SeriesAsset added in v0.1.6

type SeriesAsset struct {
	LargeImage string `json:"large_image"`
	SeriesCopy string `json:"series_copy"`
	SeriesID   int    `json:"series_id"`
	SmallImage string `json:"small_image"`
}

type SeriesAssets added in v0.1.6

type SeriesAssets map[string]SeriesAsset

type SeriesAssetsOption added in v0.1.6

type SeriesAssetsOption func(*seriesAssetsOptions)

func WithImageBaseUrl added in v0.1.6

func WithImageBaseUrl(url string) SeriesAssetsOption

type SeriesSeason added in v0.1.7

type SeriesSeason struct {
	SeasonID                   int                    `json:"season_id"`
	SeasonName                 string                 `json:"season_name"`
	Active                     bool                   `json:"active"`
	AllowedSeasonMembers       any                    `json:"allowed_season_members"`
	CarClassIds                []int                  `json:"car_class_ids"`
	CarSwitching               bool                   `json:"car_switching"`
	CarTypes                   []CarType              `json:"car_types"`
	CautionLapsDoNotCount      bool                   `json:"caution_laps_do_not_count"`
	Complete                   bool                   `json:"complete"`
	CrossLicense               bool                   `json:"cross_license"`
	DriverChangeRule           int                    `json:"driver_change_rule"`
	DriverChanges              bool                   `json:"driver_changes"`
	Drops                      int                    `json:"drops"`
	EnablePitlaneCollisions    bool                   `json:"enable_pitlane_collisions"`
	FixedSetup                 bool                   `json:"fixed_setup"`
	GreenWhiteCheckeredLimit   int                    `json:"green_white_checkered_limit"`
	GridByClass                bool                   `json:"grid_by_class"`
	HardcoreLevel              int                    `json:"hardcore_level"`
	HasSupersessions           bool                   `json:"has_supersessions"`
	IgnoreLicenseForPractice   bool                   `json:"ignore_license_for_practice"`
	IncidentLimit              int                    `json:"incident_limit"`
	IncidentWarnMode           int                    `json:"incident_warn_mode"`
	IncidentWarnParam1         int                    `json:"incident_warn_param1"`
	IncidentWarnParam2         int                    `json:"incident_warn_param2"`
	IsHeatRacing               bool                   `json:"is_heat_racing"`
	LicenseGroup               int                    `json:"license_group"`
	LicenseGroupTypes          []LicenseGroupType     `json:"license_group_types"`
	LuckyDog                   bool                   `json:"lucky_dog"`
	MaxTeamDrivers             int                    `json:"max_team_drivers"`
	MaxWeeks                   int                    `json:"max_weeks"`
	MinTeamDrivers             int                    `json:"min_team_drivers"`
	Multiclass                 bool                   `json:"multiclass"`
	MustUseDiffTireTypesInRace bool                   `json:"must_use_diff_tire_types_in_race"`
	NextRaceSession            any                    `json:"next_race_session"`
	NumOptLaps                 int                    `json:"num_opt_laps"`
	Official                   bool                   `json:"official"`
	OpDuration                 int                    `json:"op_duration"`
	OpenPracticeSessionTypeID  int                    `json:"open_practice_session_type_id"`
	QualifierMustStartRace     bool                   `json:"qualifier_must_start_race"`
	RaceWeek                   int                    `json:"race_week"`
	RaceWeekToMakeDivisions    int                    `json:"race_week_to_make_divisions"`
	RegOpenMinutes             int                    `json:"reg_open_minutes,omitempty"`
	RegUserCount               int                    `json:"reg_user_count"`
	RegionCompetition          bool                   `json:"region_competition"`
	RestrictByMember           bool                   `json:"restrict_by_member"`
	RestrictToCar              bool                   `json:"restrict_to_car"`
	RestrictViewing            bool                   `json:"restrict_viewing"`
	ScheduleDescription        string                 `json:"schedule_description"`
	Schedules                  []SeriesSeasonSchedule `json:"schedules"`
	SeasonQuarter              int                    `json:"season_quarter"`
	SeasonShortName            string                 `json:"season_short_name"`
	SeasonYear                 int                    `json:"season_year"`
	SendToOpenPractice         bool                   `json:"send_to_open_practice"`
	SeriesID                   int                    `json:"series_id"`
	ShortParadeLap             bool                   `json:"short_parade_lap"`
	StartDate                  time.Time              `json:"start_date"`
	StartOnQualTire            bool                   `json:"start_on_qual_tire"`
	StartZone                  bool                   `json:"start_zone"`
	TrackTypes                 []TrackType            `json:"track_types"`
	UnsportConductRuleMode     int                    `json:"unsport_conduct_rule_mode"`
	RacePoints                 int                    `json:"race_points,omitempty"`
	RookieSeason               string                 `json:"rookie_season,omitempty"`
	HeatSesInfo                HeatSessionInfo        `json:"heat_ses_info,omitempty"`
}

type SeriesSeasonSchedule added in v0.1.7

type SeriesSeasonSchedule struct {
	SeasonID                int                  `json:"season_id"`
	RaceWeekNum             int                  `json:"race_week_num"`
	CarRestrictions         []any                `json:"car_restrictions"`
	Category                string               `json:"category"`
	CategoryID              int                  `json:"category_id"`
	EnablePitlaneCollisions bool                 `json:"enable_pitlane_collisions"`
	FullCourseCautions      bool                 `json:"full_course_cautions"`
	QualAttached            bool                 `json:"qual_attached"`
	RaceLapLimit            int                  `json:"race_lap_limit"`
	RaceTimeLimit           int                  `json:"race_time_limit"` // minutes if > 0
	RaceTimeDescriptors     []RaceTimeDescriptor `json:"race_time_descriptors"`
	RaceWeekCars            []any                `json:"race_week_cars"`
	RestartType             string               `json:"restart_type"`
	ScheduleName            string               `json:"schedule_name"`
	SeasonName              string               `json:"season_name"`
	SeriesID                int                  `json:"series_id"`
	SeriesName              string               `json:"series_name"`
	ShortParadeLap          bool                 `json:"short_parade_lap"`
	SimulatedTimeMultiplier int                  `json:"simulated_time_multiplier"`
	SpecialEventType        any                  `json:"special_event_type"`
	StartDate               string               `json:"start_date"`
	StartType               string               `json:"start_type"`
	StartZone               bool                 `json:"start_zone"`
	Track                   Track                `json:"track"`
	TrackState              TrackState           `json:"track_state"`
	Weather                 Weather              `json:"weather"`
}

type SeriesSeasonTrack added in v0.1.7

type SeriesSeasonTrack struct {
	Category   string `json:"category"`
	CategoryID int    `json:"category_id"`
	ConfigName string `json:"config_name"`
	TrackID    int    `json:"track_id"`
	TrackName  string `json:"track_name"`
}

type SeriesSeasons added in v0.1.7

type SeriesSeasons []SeriesSeason

type SeriesSeasonsOption added in v0.1.7

type SeriesSeasonsOption func(*seriesSeasonsOptions)

func WithIncludeSeries added in v0.1.7

func WithIncludeSeries(include bool) SeriesSeasonsOption

type ServiceUnavailableError

type ServiceUnavailableError struct {
	Msg     string
	Trigger error
}

func (*ServiceUnavailableError) Error

func (e *ServiceUnavailableError) Error() string

type Session

type Session struct {
	AiAvoidPlayers             bool                      `json:"ai_avoid_players"`
	AiMaxSkill                 int                       `json:"ai_max_skill,omitempty"`
	AiMinSkill                 int                       `json:"ai_min_skill,omitempty"`
	AiRosterName               string                    `json:"ai_roster_name,omitempty"`
	AllowedClubs               []interface{}             `json:"allowed_clubs"`
	AllowedLeagues             []interface{}             `json:"allowed_leagues"`
	AllowedTeams               []interface{}             `json:"allowed_teams"`
	CarTypes                   []CarType                 `json:"car_types"`
	Cars                       []SessionCar              `json:"cars"`
	CarsLeft                   int                       `json:"cars_left"`
	ConsecCautionsSingleFile   bool                      `json:"consec_cautions_single_file"`
	CountByCarClassID          map[string]int            `json:"count_by_car_class_id"`
	CountByCarID               map[string]int            `json:"count_by_car_id"`
	DamageModel                int                       `json:"damage_model"`
	DisallowVirtualMirror      bool                      `json:"disallow_virtual_mirror"`
	DoNotCountCautionLaps      bool                      `json:"do_not_count_caution_laps"`
	DoNotPaintCars             bool                      `json:"do_not_paint_cars"`
	DriverChangeRule           int                       `json:"driver_change_rule"`
	DriverChanges              bool                      `json:"driver_changes"`
	Eligibility                SessionEligibility        `json:"elig"`
	EnablePitlaneCollisions    bool                      `json:"enable_pitlane_collisions"`
	EntryCount                 int                       `json:"entry_count"`
	EventTypes                 []EventType               `json:"event_types"`
	Farm                       SessionServerFarm         `json:"farm"`
	FixedSetup                 bool                      `json:"fixed_setup"`
	FullCourseCautions         bool                      `json:"full_course_cautions"`
	GreenWhiteCheckeredLimit   int                       `json:"green_white_checkered_limit"`
	HardcoreLevel              int                       `json:"hardcore_level"`
	Host                       SessionDriver             `json:"host"`
	IncidentLimit              int                       `json:"incident_limit"`
	IncidentWarnMode           int                       `json:"incident_warn_mode"`
	IncidentWarnParam1         int                       `json:"incident_warn_param1"`
	IncidentWarnParam2         int                       `json:"incident_warn_param2"`
	LaunchAt                   time.Time                 `json:"launch_at"`
	LeagueID                   int                       `json:"league_id"`
	LeagueSeasonID             int                       `json:"league_season_id"`
	LicenseGroupTypes          []SessionLicenseGroupType `json:"license_group_types"`
	LoneQualify                bool                      `json:"lone_qualify"`
	LuckyDog                   bool                      `json:"lucky_dog"`
	MaxAiDrivers               int                       `json:"max_ai_drivers"`
	MaxDrivers                 int                       `json:"max_drivers"`
	MaxIr                      int                       `json:"max_ir"`
	MaxLicenseLevel            int                       `json:"max_license_level"`
	MaxTeamDrivers             int                       `json:"max_team_drivers"`
	MinIr                      int                       `json:"min_ir"`
	MinLicenseLevel            int                       `json:"min_license_level"`
	MinTeamDrivers             int                       `json:"min_team_drivers"`
	MulticlassType             int                       `json:"multiclass_type"`
	MustUseDiffTireTypesInRace bool                      `json:"must_use_diff_tire_types_in_race"`
	NoLapperWaveArounds        bool                      `json:"no_lapper_wave_arounds"`
	NumFastTows                int                       `json:"num_fast_tows"`
	NumOptLaps                 int                       `json:"num_opt_laps"`
	OpenRegExpires             time.Time                 `json:"open_reg_expires"`
	OrderID                    int                       `json:"order_id"`
	PaceCarClassID             int                       `json:"pace_car_class_id"`
	PaceCarID                  int                       `json:"pace_car_id"`
	PasswordProtected          bool                      `json:"password_protected"`
	PitsInUse                  int                       `json:"pits_in_use"`
	PracticeLength             int                       `json:"practice_length"`
	PrivateSessionID           int                       `json:"private_session_id"`
	QualifierMustStartRace     bool                      `json:"qualifier_must_start_race"`
	QualifyLaps                int                       `json:"qualify_laps"`
	QualifyLength              int                       `json:"qualify_length"`
	RaceLaps                   int                       `json:"race_laps"`
	RaceLength                 int                       `json:"race_length"`
	Restarts                   int                       `json:"restarts"`
	RestrictResults            bool                      `json:"restrict_results"`
	RestrictViewing            bool                      `json:"restrict_viewing"`
	RollingStarts              bool                      `json:"rolling_starts"`
	SessionFull                bool                      `json:"session_full"`
	SessionID                  int                       `json:"session_id"`
	SessionName                string                    `json:"session_name"`
	SessionType                int                       `json:"session_type"`
	SessionTypes               []SessionType             `json:"session_types"`
	ShortParadeLap             bool                      `json:"short_parade_lap"`
	StartOnQualTire            bool                      `json:"start_on_qual_tire"`
	StartZone                  bool                      `json:"start_zone"`
	Status                     int                       `json:"status"`
	SubsessionID               int                       `json:"subsession_id"`
	TeamEntryCount             int                       `json:"team_entry_count"`
	TelemetryForceToDisk       int                       `json:"telemetry_force_to_disk"`
	TelemetryRestriction       int                       `json:"telemetry_restriction"`
	TimeLimit                  int                       `json:"time_limit"`
	Track                      SessionTrack              `json:"track"`
	TrackState                 SessionTrackState         `json:"track_state"`
	TrackTypes                 []TrackType               `json:"track_types"`
	UnsportConductRuleMode     int                       `json:"unsport_conduct_rule_mode"`
	WarmupLength               int                       `json:"warmup_length"`
	Weather                    SessionWeather            `json:"weather"`
	RegisteredTeams            []int                     `json:"registered_teams,omitempty"`
	SessionDesc                string                    `json:"session_desc,omitempty"`
	HeatSesInfo                SessionHeatInfo           `json:"heat_ses_info,omitempty"`
	AltAssetID                 int                       `json:"alt_asset_id,omitempty"`
}

type SessionCar

type SessionCar struct {
	CarID           int     `json:"car_id"`
	CarName         string  `json:"car_name"`
	CarClassID      int     `json:"car_class_id"`
	CarClassName    string  `json:"car_class_name"`
	MaxPctFuelFill  int     `json:"max_pct_fuel_fill"`
	WeightPenaltyKg int     `json:"weight_penalty_kg"`
	PowerAdjustPct  float64 `json:"power_adjust_pct"`
	MaxDryTireSets  int     `json:"max_dry_tire_sets"`
	PackageID       int     `json:"package_id"`
}

type SessionDriver

type SessionDriver struct {
	CustID      int          `json:"cust_id"`
	DisplayName string       `json:"display_name"`
	Helmet      DriverHelmet `json:"helmet"`
}

type SessionEligibility

type SessionEligibility struct {
	SessionFull     bool  `json:"session_full"`
	CanSpot         bool  `json:"can_spot"`
	CanWatch        bool  `json:"can_watch"`
	CanDrive        bool  `json:"can_drive"`
	HasSessPassword bool  `json:"has_sess_password"`
	NeedsPurchase   bool  `json:"needs_purchase"`
	OwnCar          bool  `json:"own_car"`
	OwnTrack        bool  `json:"own_track"`
	PurchaseSkus    []int `json:"purchase_skus"`
	Registered      bool  `json:"registered"`
}

type SessionEventType

type SessionEventType struct {
	EventType int `json:"event_type"`
}

type SessionHeatInfo

type SessionHeatInfo struct {
	HeatInfoID                           int       `json:"heat_info_id"`
	CustID                               int       `json:"cust_id"`
	Hidden                               bool      `json:"hidden"`
	Created                              time.Time `json:"created"`
	HeatInfoName                         string    `json:"heat_info_name"`
	MaxEntrants                          int       `json:"max_entrants"`
	RaceStyle                            int       `json:"race_style"`
	OpenPractice                         bool      `json:"open_practice"`
	PreQualPracticeLengthMinutes         int       `json:"pre_qual_practice_length_minutes"`
	PreQualNumToMain                     int       `json:"pre_qual_num_to_main"`
	QualStyle                            int       `json:"qual_style"`
	QualLengthMinutes                    int       `json:"qual_length_minutes"`
	QualLaps                             int       `json:"qual_laps"`
	QualNumToMain                        int       `json:"qual_num_to_main"`
	QualScoring                          int       `json:"qual_scoring"`
	QualCautionType                      int       `json:"qual_caution_type"`
	QualOpenDelaySeconds                 int       `json:"qual_open_delay_seconds"`
	QualScoresChampPoints                bool      `json:"qual_scores_champ_points"`
	HeatLengthMinutes                    int       `json:"heat_length_minutes"`
	HeatLaps                             int       `json:"heat_laps"`
	HeatMaxFieldSize                     int       `json:"heat_max_field_size"`
	HeatNumPositionToInvert              int       `json:"heat_num_position_to_invert"`
	HeatCautionType                      int       `json:"heat_caution_type"`
	HeatNumFromEachToMain                int       `json:"heat_num_from_each_to_main"`
	HeatScoresChampPoints                bool      `json:"heat_scores_champ_points"`
	ConsolationNumToConsolation          int       `json:"consolation_num_to_consolation"`
	ConsolationNumToMain                 int       `json:"consolation_num_to_main"`
	ConsolationFirstMaxFieldSize         int       `json:"consolation_first_max_field_size"`
	ConsolationFirstSessionLengthMinutes int       `json:"consolation_first_session_length_minutes"`
	ConsolationFirstSessionLaps          int       `json:"consolation_first_session_laps"`
	ConsolationDeltaMaxFieldSize         int       `json:"consolation_delta_max_field_size"`
	ConsolationDeltaSessionLengthMinutes int       `json:"consolation_delta_session_length_minutes"`
	ConsolationDeltaSessionLaps          int       `json:"consolation_delta_session_laps"`
	ConsolationNumPositionToInvert       int       `json:"consolation_num_position_to_invert"`
	ConsolationScoresChampPoints         bool      `json:"consolation_scores_champ_points"`
	ConsolationRunAlways                 bool      `json:"consolation_run_always"`
	PreMainPracticeLengthMinutes         int       `json:"pre_main_practice_length_minutes"`
	MainLengthMinutes                    int       `json:"main_length_minutes"`
	MainLaps                             int       `json:"main_laps"`
	MainMaxFieldSize                     int       `json:"main_max_field_size"`
	MainNumPositionToInvert              int       `json:"main_num_position_to_invert"`
	HeatSessionMinutesEstimate           int       `json:"heat_session_minutes_estimate"`
}

type SessionLicenseGroupType

type SessionLicenseGroupType struct {
	LicenseGroupType int `json:"license_group_type"`
}

type SessionServerFarm

type SessionServerFarm struct {
	FarmID      int    `json:"farm_id"`
	DisplayName string `json:"display_name"`
	ImagePath   string `json:"image_path"`
	Displayed   bool   `json:"displayed"`
}

type SessionTrack

type SessionTrack struct {
	TrackID    int    `json:"track_id"`
	TrackName  string `json:"track_name"`
	ConfigName string `json:"config_name"`
}

type SessionTrackState

type SessionTrackState struct {
	LeaveMarbles         bool `json:"leave_marbles"`
	PracticeRubber       int  `json:"practice_rubber"`
	QualifyRubber        int  `json:"qualify_rubber"`
	WarmupRubber         int  `json:"warmup_rubber"`
	RaceRubber           int  `json:"race_rubber"`
	PracticeGripCompound int  `json:"practice_grip_compound"`
	QualifyGripCompound  int  `json:"qualify_grip_compound"`
	WarmupGripCompound   int  `json:"warmup_grip_compound"`
	RaceGripCompound     int  `json:"race_grip_compound"`
}

type SessionType

type SessionType struct {
	SessionType int `json:"session_type"`
}

type SessionWeather

type SessionWeather struct {
	Version                 int    `json:"version"`
	Type                    int    `json:"type"`
	TempUnits               int    `json:"temp_units"`
	TempValue               int    `json:"temp_value"`
	RelHumidity             int    `json:"rel_humidity"`
	Fog                     int    `json:"fog"`
	WindDir                 int    `json:"wind_dir"`
	WindUnits               int    `json:"wind_units"`
	WindValue               int    `json:"wind_value"`
	Skies                   int    `json:"skies"`
	WeatherVarInitial       int    `json:"weather_var_initial"`
	WeatherVarOngoing       int    `json:"weather_var_ongoing"`
	TimeOfDay               int    `json:"time_of_day"`
	SimulatedStartTime      string `json:"simulated_start_time"`
	SimulatedTimeOffsets    []int  `json:"simulated_time_offsets"`
	SimulatedTimeMultiplier int    `json:"simulated_time_multiplier"`
}

type SpectatorSubSessionIDs added in v0.1.6

type SpectatorSubSessionIDs struct {
	EventTypes    []int `json:"event_types"`
	Success       bool  `json:"success"`
	SubsessionIds []int `json:"subsession_ids"`
}

type SpectatorSubSessionIDsOption added in v0.1.6

type SpectatorSubSessionIDsOption interface {
	ApplySpectatorSubSessionIDs(*url.Values)
}

type Track

type Track struct {
	AiEnabled              bool        `json:"ai_enabled"`
	AllowPitlaneCollisions bool        `json:"allow_pitlane_collisions"`
	AllowRollingStart      bool        `json:"allow_rolling_start"`
	AllowStandingStart     bool        `json:"allow_standing_start"`
	AwardExempt            bool        `json:"award_exempt"`
	Category               string      `json:"category"`
	CategoryID             int         `json:"category_id"`
	Closes                 string      `json:"closes"`
	ConfigName             string      `json:"config_name,omitempty"`
	CornersPerLap          int         `json:"corners_per_lap"`
	Created                time.Time   `json:"created"`
	FirstSale              time.Time   `json:"first_sale"`
	FreeWithSubscription   bool        `json:"free_with_subscription"`
	FullyLit               bool        `json:"fully_lit"`
	GridStalls             int         `json:"grid_stalls"`
	HasOptPath             bool        `json:"has_opt_path"`
	HasShortParadeLap      bool        `json:"has_short_parade_lap"`
	HasStartZone           bool        `json:"has_start_zone"`
	HasSvgMap              bool        `json:"has_svg_map"`
	IsDirt                 bool        `json:"is_dirt"`
	IsOval                 bool        `json:"is_oval"`
	IsPsPurchasable        bool        `json:"is_ps_purchasable"`
	LapScoring             int         `json:"lap_scoring"`
	Latitude               float64     `json:"latitude"`
	Location               string      `json:"location"`
	Longitude              float64     `json:"longitude"`
	MaxCars                int         `json:"max_cars"`
	NightLighting          bool        `json:"night_lighting"`
	NominalLapTime         float64     `json:"nominal_lap_time"`
	NumberPitStalls        int         `json:"number_pitstalls"`
	Opens                  string      `json:"opens"`
	PackageID              int         `json:"package_id"`
	PitRoadSpeedLimit      int         `json:"pit_road_speed_limit,omitempty"`
	Price                  float64     `json:"price"`
	PriceDisplay           string      `json:"price_display,omitempty"`
	Priority               int         `json:"priority"`
	Purchasable            bool        `json:"purchasable"`
	QualifyLaps            int         `json:"qualify_laps"`
	RestartOnLeft          bool        `json:"restart_on_left"`
	Retired                bool        `json:"retired"`
	SearchFilters          string      `json:"search_filters"`
	SiteURL                string      `json:"site_url,omitempty"`
	Sku                    int         `json:"sku"`
	SoloLaps               int         `json:"solo_laps"`
	StartOnLeft            bool        `json:"start_on_left"`
	SupportsGripCompound   bool        `json:"supports_grip_compound"`
	TechTrack              bool        `json:"tech_track"`
	TimeZone               string      `json:"time_zone"`
	TrackConfigLength      float64     `json:"track_config_length"`
	TrackDirPath           string      `json:"track_dirpath"`
	TrackID                int         `json:"track_id"`
	TrackName              string      `json:"track_name"`
	TrackTypes             []TrackType `json:"track_types"`
	Banking                string      `json:"banking,omitempty"`
}

type TrackState added in v0.1.7

type TrackState struct {
	LeaveMarbles bool `json:"leave_marbles"`
}

type TrackType

type TrackType struct {
	TrackType string `json:"track_type"`
}

type Weather added in v0.1.7

type Weather struct {
	AllowFog                bool            `json:"allow_fog"`
	Fog                     int             `json:"fog"`
	ForecastOptions         ForecastOptions `json:"forecast_options"`
	PrecipOption            int             `json:"precip_option"`
	RelHumidity             int             `json:"rel_humidity"`
	SimulatedStartTime      string          `json:"simulated_start_time"`
	SimulatedStartUtcTime   time.Time       `json:"simulated_start_utc_time"`
	SimulatedTimeMultiplier int             `json:"simulated_time_multiplier"`
	SimulatedTimeOffsets    []int           `json:"simulated_time_offsets"`
	Skies                   int             `json:"skies"`
	TempUnits               int             `json:"temp_units"`
	TempValue               int             `json:"temp_value"`
	TimeOfDay               int             `json:"time_of_day"`
	Type                    int             `json:"type"`
	Version                 int             `json:"version"`
	WeatherSummary          WeatherSummary  `json:"weather_summary"`
	WeatherURL              string          `json:"weather_url"`
	WeatherVarInitial       int             `json:"weather_var_initial"`
	WeatherVarOngoing       int             `json:"weather_var_ongoing"`
	WindDir                 int             `json:"wind_dir"`
	WindUnits               int             `json:"wind_units"`
	WindValue               int             `json:"wind_value"`
}

type WeatherSummary added in v0.1.7

type WeatherSummary struct {
	MaxPrecipRate     float64 `json:"max_precip_rate"`
	MaxPrecipRateDesc string  `json:"max_precip_rate_desc"`
	PrecipChance      int     `json:"precip_chance"`
	SkiesHigh         int     `json:"skies_high"`
	SkiesLow          int     `json:"skies_low"`
	TempHigh          float64 `json:"temp_high"`
	TempLow           float64 `json:"temp_low"`
	TempUnits         int     `json:"temp_units"`
	WindHigh          float64 `json:"wind_high"`
	WindLow           float64 `json:"wind_low"`
	WindUnits         int     `json:"wind_units"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL