irdata

package module
v0.3.3 Latest Latest
Warning

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

Go to latest
Published: Jul 1, 2025 License: MIT Imports: 19 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 AuthenticationResult added in v0.3.1

type AuthenticationResult struct {
	Username         string
	PasswordChecksum string
	URL              *url.URL
	Cookies          []*http.Cookie
	Expiration       time.Time
	// contains filtered or unexported fields
}

type Authenticator added in v0.3.1

type Authenticator interface {
	Authenticate(username string, password string, force bool) (*url.URL, []*http.Cookie, time.Time, error)
}

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(ctx context.Context) ([]Car, error)
}

type DataCarClass

type DataCarClass interface {
	Get(ctx context.Context) ([]CarClass, error)
}

type DataConstant

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

type DataHosted

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

type DataLeague added in v0.1.22

type DataLeague interface {
	Get(ctx context.Context, leagueId int, opts ...LeagueGetOption) (League, error)
	Seasons(ctx context.Context, leagueId int, opts ...LeagueSeasonsOption) (LeagueSeasons, error)
	SeasonSessions(ctx context.Context, leagueId int, seasonId int, opts ...LeagueSeasonSessionsOption) (LeagueSeasonSessions, error)
}

DataLeague interface defines the methods for interacting with leagues

type DataResults added in v0.1.20

type DataResults interface {
	Get(ctx context.Context, subsessionId int, opts ...ResultsGetOption) (ResultSession, error)
}

type DataSeason added in v0.1.6

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

type DataSeries added in v0.1.6

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

type DataTrack

type DataTrack interface {
	Get(ctx context.Context) ([]Track, error)
	Assets(ctx context.Context) (map[string]TrackAssets, error)
}

type DefaultAuthenticator added in v0.3.1

type DefaultAuthenticator struct {
	Authenticator
	// contains filtered or unexported fields
}

func NewDefaultAuthenticator added in v0.3.1

func NewDefaultAuthenticator(irdata IRData) (*DefaultAuthenticator, error)

func (*DefaultAuthenticator) Authenticate added in v0.3.1

func (a *DefaultAuthenticator) Authenticate(username string, password string, _ bool) (*url.URL, []*http.Cookie, time.Time, 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 DriverSuit added in v0.1.20

type DriverSuit struct {
	Pattern int    `json:"pattern"`
	Color1  string `json:"color1"`
	Color2  string `json:"color2"`
	Color3  string `json:"color3"`
}

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 Helmet added in v0.1.22

type Helmet 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 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
	MembersUrl() string
	HttpClient() *http.Client

	RateLimit() *RateLimit
	Car() DataCar
	CarClass() DataCarClass
	Constant() DataConstant
	Hosted() DataHosted
	League() DataLeague
	Track() DataTrack
	Season() DataSeason
	Series() DataSeries
	Results() DataResults
}

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 IncludeLicensesOption added in v0.1.22

type IncludeLicensesOption struct {
	IncludeLicenses bool
}

IncludeLicensesOption implements LeagueGetOption

func (*IncludeLicensesOption) ApplyLeagueGet added in v0.1.22

func (o *IncludeLicensesOption) ApplyLeagueGet(v *url.Values)

type League added in v0.1.22

type League struct {
	LeagueID           int            `json:"league_id"`
	OwnerID            int            `json:"owner_id"`
	LeagueName         string         `json:"league_name"`
	Created            time.Time      `json:"created"`
	Hidden             bool           `json:"hidden"`
	Message            string         `json:"message"`
	About              string         `json:"about"`
	URL                string         `json:"url"`
	Recruiting         bool           `json:"recruiting"`
	PrivateWall        bool           `json:"private_wall"`
	PrivateRoster      bool           `json:"private_roster"`
	PrivateSchedule    bool           `json:"private_schedule"`
	PrivateResults     bool           `json:"private_results"`
	IsOwner            bool           `json:"is_owner"`
	IsAdmin            bool           `json:"is_admin"`
	RosterCount        int            `json:"roster_count"`
	Owner              LeagueMember   `json:"owner"`
	Image              LeagueImage    `json:"image"`
	Tags               LeagueTags     `json:"tags"`
	LeagueApplications []any          `json:"league_applications"`
	PendingRequests    []any          `json:"pending_requests"`
	IsMember           bool           `json:"is_member"`
	IsApplicant        bool           `json:"is_applicant"`
	IsInvite           bool           `json:"is_invite"`
	IsIgnored          bool           `json:"is_ignored"`
	Roster             []LeagueMember `json:"roster"`
}

type LeagueGetOption added in v0.1.22

type LeagueGetOption interface {
	ApplyLeagueGet(*url.Values)
}

LeagueGetOption interface for options to the Get method

type LeagueImage added in v0.1.22

type LeagueImage struct {
}

type LeagueMember added in v0.1.22

type LeagueMember struct {
	CustID            int       `json:"cust_id"`
	DisplayName       string    `json:"display_name"`
	Helmet            Helmet    `json:"helmet"`
	Owner             bool      `json:"owner,omitempty"`
	Admin             bool      `json:"admin,omitempty"`
	LeagueMailOptOut  bool      `json:"league_mail_opt_out,omitempty"`
	LeaguePmOptOut    bool      `json:"league_pm_opt_out,omitempty"`
	LeagueMemberSince time.Time `json:"league_member_since,omitempty"`
	CarNumber         any       `json:"car_number"`
	NickName          any       `json:"nick_name"`
}

type LeagueSeason added in v0.2.1

type LeagueSeason struct {
	LeagueID                int                    `json:"league_id"`
	SeasonID                int                    `json:"season_id"`
	PointsSystemID          int                    `json:"points_system_id"`
	SeasonName              string                 `json:"season_name"`
	Active                  bool                   `json:"active"`
	Hidden                  bool                   `json:"hidden"`
	NumDrops                int                    `json:"num_drops"`
	NoDropsOnOrAfterRaceNum int                    `json:"no_drops_on_or_after_race_num"`
	PointsCars              []LeagueSeasonCar      `json:"points_cars"`
	DriverPointsCarClasses  []LeagueSeasonCarClass `json:"driver_points_car_classes"`
	TeamPointsCarClasses    []LeagueSeasonCarClass `json:"team_points_car_classes"`
	PointsSystemName        string                 `json:"points_system_name"`
	PointsSystemDesc        string                 `json:"points_system_desc"`
}

type LeagueSeasonCar added in v0.2.1

type LeagueSeasonCar struct {
	CarID   int    `json:"car_id"`
	CarName string `json:"car_name"`
}

type LeagueSeasonCarClass added in v0.2.1

type LeagueSeasonCarClass struct {
	CarClassID  int               `json:"car_class_id"`
	Name        string            `json:"name"`
	CarsInClass []LeagueSeasonCar `json:"cars_in_class"`
}

type LeagueSeasonSession added in v0.2.1

type LeagueSeasonSession struct {
	Cars              []LeagueSeasonSessionCar `json:"cars"`
	DriverChanges     bool                     `json:"driver_changes"`
	EntryCount        int                      `json:"entry_count"`
	HasResults        bool                     `json:"has_results"`
	LaunchAt          time.Time                `json:"launch_at"`
	LeagueID          int                      `json:"league_id"`
	LeagueSeasonID    int                      `json:"league_season_id"`
	LoneQualify       bool                     `json:"lone_qualify"`
	PaceCarClassID    any                      `json:"pace_car_class_id"`
	PaceCarID         any                      `json:"pace_car_id"`
	PasswordProtected bool                     `json:"password_protected"`
	PracticeLength    int                      `json:"practice_length"`
	PrivateSessionID  int                      `json:"private_session_id"`
	QualifyLaps       int                      `json:"qualify_laps"`
	QualifyLength     int                      `json:"qualify_length"`
	RaceLaps          int                      `json:"race_laps"`
	RaceLength        int                      `json:"race_length"`
	SessionID         int                      `json:"session_id"`
	SubsessionID      int                      `json:"subsession_id"`
	Status            int                      `json:"status"`
	TrackID           int                      `json:"track_id"`
	TrackName         string                   `json:"track_name"`
}

type LeagueSeasonSessionCar added in v0.2.1

type LeagueSeasonSessionCar struct {
	CarID        int    `json:"car_id"`
	CarName      string `json:"car_name"`
	CarClassID   int    `json:"car_class_id"`
	CarClassName string `json:"car_class_name"`
}

type LeagueSeasonSessions added in v0.2.1

type LeagueSeasonSessions struct {
	Sessions []LeagueSeasonSession `json:"sessions"`
}

type LeagueSeasonSessionsOption added in v0.2.1

type LeagueSeasonSessionsOption interface {
	ApplyLeagueSeasonSessions(*url.Values)
}

LeagueSeasonSessionsOption interface for options to the SeasonSessions method

type LeagueSeasons added in v0.2.1

type LeagueSeasons struct {
	Subscribed bool           `json:"subscribed"`
	Seasons    []LeagueSeason `json:"seasons"`
	Success    bool           `json:"success"`
	Retired    bool           `json:"retired"`
	LeagueID   int            `json:"league_id"`
}

type LeagueSeasonsOption added in v0.2.1

type LeagueSeasonsOption interface {
	ApplyLeagueSeasons(*url.Values)
}

LeagueSeasonsOption interface for options to the Seasons method

type LeagueTags added in v0.1.22

type LeagueTags struct {
	Categorized    []any `json:"categorized"`
	NotCategorized []any `json:"not_categorized"`
}

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 Logger added in v0.3.1

type Logger interface {
	Debug(msg string, args ...any)
	Info(msg string, args ...any)
	Warn(msg string, args ...any)
	Error(msg string, args ...any)
}

type Options

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

func WithAuthenticator added in v0.3.2

func WithAuthenticator(f func(ird IRData, def Authenticator) Authenticator) Options

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

func WithRateLimitLocking added in v0.1.18

func WithRateLimitLocking(enabled bool) Options

func WithRateLimitRetry added in v0.1.18

func WithRateLimitRetry(attempts int) Options

func WithRateLimitWait added in v0.1.18

func WithRateLimitWait(maxWait time.Duration) Options

type OptionsAuthenticator added in v0.3.2

type OptionsAuthenticator struct {
	AuthenticatorInit func(ird IRData, def Authenticator) Authenticator
}

func (OptionsAuthenticator) Apply added in v0.3.2

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

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 OptionsRateLimitLocking added in v0.1.18

type OptionsRateLimitLocking struct {
	Enabled bool
}

func (OptionsRateLimitLocking) Apply added in v0.1.18

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

type OptionsRateLimitRetry added in v0.1.18

type OptionsRateLimitRetry struct {
	Attempts int
}

func (OptionsRateLimitRetry) Apply added in v0.1.18

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

type OptionsRateLimitWait added in v0.1.18

type OptionsRateLimitWait struct {
	MaxWait time.Duration
}

func (OptionsRateLimitWait) Apply added in v0.1.18

func (o OptionsRateLimitWait) 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 RateLimit added in v0.1.18

type RateLimit struct {
	// contains filtered or unexported fields
}

func (*RateLimit) Attempts added in v0.1.18

func (rl *RateLimit) Attempts() int

func (*RateLimit) Remaining added in v0.1.18

func (rl *RateLimit) Remaining() int

func (*RateLimit) ResetAt added in v0.1.18

func (rl *RateLimit) ResetAt() time.Time

func (*RateLimit) TotalLimit added in v0.1.18

func (rl *RateLimit) TotalLimit() int

func (*RateLimit) Wait added in v0.1.18

func (rl *RateLimit) Wait(ctx context.Context) error

type RateLimitExceededError added in v0.1.18

type RateLimitExceededError struct {
	Msg     string
	Trigger error
}

func (*RateLimitExceededError) Error added in v0.1.18

func (e *RateLimitExceededError) Error() string

type RedisAuthenticator added in v0.3.1

type RedisAuthenticator struct {
	Authenticator

	Logger             Logger
	KeyPrefix          string
	LocalCacheDuration time.Duration
	// contains filtered or unexported fields
}

func NewRedisAuthenticator added in v0.3.1

func NewRedisAuthenticator(redis redis.Cmdable, authenticator Authenticator) (*RedisAuthenticator, error)

func NewRedisDefaultAuthenticator added in v0.3.1

func NewRedisDefaultAuthenticator(redis redis.Cmdable, irdata IRData) (*RedisAuthenticator, error)

func (*RedisAuthenticator) Authenticate added in v0.3.1

func (a *RedisAuthenticator) Authenticate(username string, password string, _ bool) (*url.URL, []*http.Cookie, time.Time, error)

type ResultAllowedLicense added in v0.1.20

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

type ResultCarClass added in v0.1.20

type ResultCarClass struct {
	CarClassID      int                `json:"car_class_id"`
	ShortName       string             `json:"short_name"`
	Name            string             `json:"name"`
	StrengthOfField int                `json:"strength_of_field"`
	NumEntries      int                `json:"num_entries"`
	CarsInClass     []ResultCarInClass `json:"cars_in_class"`
}

type ResultCarInClass added in v0.1.20

type ResultCarInClass struct {
	CarID int `json:"car_id"`
}

type ResultLivery added in v0.1.20

type ResultLivery struct {
	CarID        int         `json:"car_id"`
	Pattern      int         `json:"pattern"`
	Color1       string      `json:"color1"`
	Color2       string      `json:"color2"`
	Color3       string      `json:"color3"`
	NumberFont   int         `json:"number_font"`
	NumberColor1 string      `json:"number_color1"`
	NumberColor2 string      `json:"number_color2"`
	NumberColor3 string      `json:"number_color3"`
	NumberSlant  int         `json:"number_slant"`
	Sponsor1     int         `json:"sponsor1"`
	Sponsor2     int         `json:"sponsor2"`
	CarNumber    string      `json:"car_number"`
	WheelColor   interface{} `json:"wheel_color"`
	RimType      int         `json:"rim_type"`
}

type ResultRaceSummary added in v0.1.20

type ResultRaceSummary struct {
	SubsessionID         int    `json:"subsession_id"`
	AverageLap           int    `json:"average_lap"`
	LapsComplete         int    `json:"laps_complete"`
	NumCautions          int    `json:"num_cautions"`
	NumCautionLaps       int    `json:"num_caution_laps"`
	NumLeadChanges       int    `json:"num_lead_changes"`
	FieldStrength        int    `json:"field_strength"`
	NumOptLaps           int    `json:"num_opt_laps"`
	HasOptPath           bool   `json:"has_opt_path"`
	SpecialEventType     int    `json:"special_event_type"`
	SpecialEventTypeText string `json:"special_event_type_text"`
}

type ResultSession added in v0.1.20

type ResultSession struct {
	SubsessionID            int                    `json:"subsession_id"`
	AllowedLicenses         []ResultAllowedLicense `json:"allowed_licenses"`
	AssociatedSubsessionIds []int                  `json:"associated_subsession_ids"`
	CanProtest              bool                   `json:"can_protest"`
	CarClasses              []ResultCarClass       `json:"car_classes"`
	CautionType             int                    `json:"caution_type"`
	CooldownMinutes         int                    `json:"cooldown_minutes"`
	CornersPerLap           int                    `json:"corners_per_lap"`
	DamageModel             int                    `json:"damage_model"`
	DriverChangeParam1      int                    `json:"driver_change_param1"`
	DriverChangeParam2      int                    `json:"driver_change_param2"`
	DriverChangeRule        int                    `json:"driver_change_rule"`
	DriverChanges           bool                   `json:"driver_changes"`
	EndTime                 time.Time              `json:"end_time"`
	EventAverageLap         int                    `json:"event_average_lap"`
	EventBestLapTime        int                    `json:"event_best_lap_time"`
	EventLapsComplete       int                    `json:"event_laps_complete"`
	EventStrengthOfField    int                    `json:"event_strength_of_field"`
	EventType               int                    `json:"event_type"`
	EventTypeName           string                 `json:"event_type_name"`
	HeatInfoID              int                    `json:"heat_info_id"`
	LicenseCategory         string                 `json:"license_category"`
	LicenseCategoryID       int                    `json:"license_category_id"`
	LimitMinutes            int                    `json:"limit_minutes"`
	MaxTeamDrivers          int                    `json:"max_team_drivers"`
	MaxWeeks                int                    `json:"max_weeks"`
	MinTeamDrivers          int                    `json:"min_team_drivers"`
	NumCautionLaps          int                    `json:"num_caution_laps"`
	NumCautions             int                    `json:"num_cautions"`
	NumDrivers              int                    `json:"num_drivers"`
	NumLapsForQualAverage   int                    `json:"num_laps_for_qual_average"`
	NumLapsForSoloAverage   int                    `json:"num_laps_for_solo_average"`
	NumLeadChanges          int                    `json:"num_lead_changes"`
	OfficialSession         bool                   `json:"official_session"`
	PointsType              string                 `json:"points_type"`
	PrivateSessionID        int                    `json:"private_session_id"`
	RaceSummary             ResultRaceSummary      `json:"race_summary"`
	RaceWeekNum             int                    `json:"race_week_num"`
	ResultsRestricted       bool                   `json:"results_restricted"`
	SeasonID                int                    `json:"season_id"`
	SeasonName              string                 `json:"season_name"`
	SeasonQuarter           int                    `json:"season_quarter"`
	SeasonShortName         string                 `json:"season_short_name"`
	SeasonYear              int                    `json:"season_year"`
	SeriesID                int                    `json:"series_id"`
	SeriesName              string                 `json:"series_name"`
	SeriesShortName         string                 `json:"series_short_name"`
	SessionID               int                    `json:"session_id"`
	SessionResults          []ResultSessionResult  `json:"session_results"`
	SessionSplits           []ResultSessionSplit   `json:"session_splits"`
	SpecialEventType        int                    `json:"special_event_type"`
	StartTime               time.Time              `json:"start_time"`
	Track                   ResultTrack            `json:"track"`
	TrackState              TrackState             `json:"track_state"`
	Weather                 ResultWeather          `json:"weather"`
}

type ResultSessionResult added in v0.1.20

type ResultSessionResult struct {
	SimsessionNumber   int                      `json:"simsession_number"`
	SimsessionName     string                   `json:"simsession_name"`
	SimsessionType     int                      `json:"simsession_type"`
	SimsessionTypeName string                   `json:"simsession_type_name"`
	SimsessionSubtype  int                      `json:"simsession_subtype"`
	WeatherResult      ResultSessionWeather     `json:"weather_result"`
	Results            []ResultSubSessionResult `json:"results"`
}

type ResultSessionSplit added in v0.1.20

type ResultSessionSplit struct {
	SubsessionID         int `json:"subsession_id"`
	EventStrengthOfField int `json:"event_strength_of_field"`
}

type ResultSessionWeather added in v0.1.20

type ResultSessionWeather struct {
	AvgSkies                 float64 `json:"avg_skies"`
	AvgCloudCoverPct         float64 `json:"avg_cloud_cover_pct"`
	MinCloudCoverPct         float64 `json:"min_cloud_cover_pct"`
	MaxCloudCoverPct         float64 `json:"max_cloud_cover_pct"`
	TempUnits                float64 `json:"temp_units"`
	AvgTemp                  float64 `json:"avg_temp"`
	MinTemp                  float64 `json:"min_temp"`
	MaxTemp                  float64 `json:"max_temp"`
	AvgRelHumidity           float64 `json:"avg_rel_humidity"`
	WindUnits                float64 `json:"wind_units"`
	AvgWindSpeed             float64 `json:"avg_wind_speed"`
	MinWindSpeed             float64 `json:"min_wind_speed"`
	MaxWindSpeed             float64 `json:"max_wind_speed"`
	AvgWindDir               float64 `json:"avg_wind_dir"`
	MaxFog                   float64 `json:"max_fog"`
	FogTimePct               float64 `json:"fog_time_pct"`
	PrecipTimePct            float64 `json:"precip_time_pct"`
	PrecipMm                 float64 `json:"precip_mm"`
	PrecipMm2HrBeforeSession float64 `json:"precip_mm2hr_before_session"`
	SimulatedStartTime       string  `json:"simulated_start_time"`
}

type ResultSubSessionResult added in v0.1.20

type ResultSubSessionResult struct {
	CustID                  int          `json:"cust_id"`
	DisplayName             string       `json:"display_name"`
	AggregateChampPoints    int          `json:"aggregate_champ_points"`
	Ai                      bool         `json:"ai"`
	AverageLap              float64      `json:"average_lap"`
	BestLapNum              int          `json:"best_lap_num"`
	BestLapTime             float64      `json:"best_lap_time"`
	BestNlapsNum            int          `json:"best_nlaps_num"`
	BestNlapsTime           float64      `json:"best_nlaps_time"`
	BestQualLapAt           time.Time    `json:"best_qual_lap_at"`
	BestQualLapNum          int          `json:"best_qual_lap_num"`
	BestQualLapTime         float64      `json:"best_qual_lap_time"`
	CarClassID              int          `json:"car_class_id"`
	CarClassName            string       `json:"car_class_name"`
	CarClassShortName       string       `json:"car_class_short_name"`
	CarID                   int          `json:"car_id"`
	CarName                 string       `json:"car_name"`
	ChampPoints             int          `json:"champ_points"`
	ClassInterval           int          `json:"class_interval"`
	ClubID                  int          `json:"club_id"`
	ClubName                string       `json:"club_name"`
	ClubPoints              int          `json:"club_points"`
	ClubShortname           string       `json:"club_shortname"`
	CountryCode             string       `json:"country_code"`
	Division                int          `json:"division"`
	DivisionName            string       `json:"division_name"`
	DropRace                bool         `json:"drop_race"`
	FinishPosition          int          `json:"finish_position"`
	FinishPositionInClass   int          `json:"finish_position_in_class"`
	Friend                  bool         `json:"friend"`
	Helmet                  DriverHelmet `json:"helmet"`
	Incidents               int          `json:"incidents"`
	Interval                int          `json:"interval"`
	LapsComplete            int          `json:"laps_complete"`
	LapsLead                int          `json:"laps_lead"`
	LeagueAggPoints         int          `json:"league_agg_points"`
	LeaguePoints            int          `json:"league_points"`
	LicenseChangeOval       int          `json:"license_change_oval"`
	LicenseChangeRoad       int          `json:"license_change_road"`
	Livery                  ResultLivery `json:"livery"`
	MaxPctFuelFill          int          `json:"max_pct_fuel_fill"`
	Multiplier              int          `json:"multiplier"`
	NewCpi                  float64      `json:"new_cpi"`
	NewLicenseLevel         int          `json:"new_license_level"`
	NewSubLevel             int          `json:"new_sub_level"`
	NewTtrating             int          `json:"new_ttrating"`
	NewiRating              int          `json:"newi_rating"`
	OldCpi                  float64      `json:"old_cpi"`
	OldLicenseLevel         int          `json:"old_license_level"`
	OldSubLevel             int          `json:"old_sub_level"`
	OldTtrating             int          `json:"old_ttrating"`
	OldiRating              int          `json:"oldi_rating"`
	OptLapsComplete         int          `json:"opt_laps_complete"`
	Position                int          `json:"position"`
	QualLapTime             int          `json:"qual_lap_time"`
	ReasonOut               string       `json:"reason_out"`
	ReasonOutID             int          `json:"reason_out_id"`
	StartingPosition        int          `json:"starting_position"`
	StartingPositionInClass int          `json:"starting_position_in_class"`
	Suit                    DriverSuit   `json:"suit"`
	Watched                 bool         `json:"watched"`
	WeightPenaltyKg         int          `json:"weight_penalty_kg"`
}

type ResultTrack added in v0.1.20

type ResultTrack 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 ResultTrackState added in v0.1.20

type ResultTrackState struct {
	LeaveMarbles   bool `json:"leave_marbles"`
	PracticeRubber int  `json:"practice_rubber"`
	QualifyRubber  int  `json:"qualify_rubber"`
	RaceRubber     int  `json:"race_rubber"`
	WarmupRubber   int  `json:"warmup_rubber"`
}

type ResultWeather added in v0.1.20

type ResultWeather struct {
	AllowFog                      bool   `json:"allow_fog"`
	Fog                           int    `json:"fog"`
	PrecipMm2HrBeforeFinalSession int    `json:"precip_mm2hr_before_final_session"`
	PrecipMmFinalSession          int    `json:"precip_mm_final_session"`
	PrecipOption                  int    `json:"precip_option"`
	PrecipTimePct                 int    `json:"precip_time_pct"`
	RelHumidity                   int    `json:"rel_humidity"`
	SimulatedStartTime            string `json:"simulated_start_time"`
	Skies                         int    `json:"skies"`
	TempUnits                     int    `json:"temp_units"`
	TempValue                     int    `json:"temp_value"`
	TimeOfDay                     int    `json:"time_of_day"`
	TrackWater                    int    `json:"track_water"`
	Type                          int    `json:"type"`
	Version                       int    `json:"version"`
	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 ResultsFromOption added in v0.1.20

type ResultsFromOption struct {
	IncludeLicenses bool
}

func (*ResultsFromOption) ApplyResultsGet added in v0.1.20

func (o *ResultsFromOption) ApplyResultsGet(v *url.Values)

type ResultsGetOption added in v0.1.20

type ResultsGetOption interface {
	ApplyResultsGet(*url.Values)
}

type ResultsOnlyOption added in v0.2.1

type ResultsOnlyOption struct {
	ResultsOnly bool
}

ResultsOnlyOption implements LeagueSeasonSessionsOption

func (*ResultsOnlyOption) ApplyLeagueSeasonSessions added in v0.2.1

func (o *ResultsOnlyOption) ApplyLeagueSeasonSessions(v *url.Values)

type RetiredOption added in v0.2.1

type RetiredOption struct {
	Retired bool
}

RetiredOption implements LeagueSeasonsOption

func (*RetiredOption) ApplyLeagueSeasons added in v0.2.1

func (o *RetiredOption) ApplyLeagueSeasons(v *url.Values)

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 SeasonIDs added in v0.3.3

type SeasonIDs struct {
	SeasonIDs []int
}

func (*SeasonIDs) ApplySpectatorSubSessionIDs added in v0.3.3

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

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 []SeriesItem

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 SeriesItem added in v0.1.17

type SeriesItem 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 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            []SeriesSeasonScheduleCar `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 SeriesSeasonScheduleCar added in v0.1.14

type SeriesSeasonScheduleCar struct {
	CarID              int    `json:"car_id"`
	CarName            string `json:"car_name"`
	CarNameAbbreviated string `json:"car_name_abbreviated"`
}

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 SpectatorSubSessionIDsDetail added in v0.3.3

type SpectatorSubSessionIDsDetail struct {
	Success    bool  `json:"success"`
	EventTypes []int `json:"event_types"`
	SeasonIDs  []int `json:"season_ids"`

	Subsessions []SpectatorSubSessionIDsDetailSubsession `json:"subsessions"`
}

type SpectatorSubSessionIDsDetailSubsession added in v0.3.3

type SpectatorSubSessionIDsDetailSubsession struct {
	SubsessionID int       `json:"subsession_id"`
	SessionID    int       `json:"session_id"`
	SeasonID     int       `json:"season_id"`
	StartTime    time.Time `json:"start_time"`
	RaceWeekNum  int       `json:"race_week_num"`
	EventType    int       `json:"event_type"`
}

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 TrackAssets added in v0.1.13

type TrackAssets struct {
	Coordinates     string            `json:"coordinates"`
	Detail          *string           `json:"detail_copy"`
	DetailTechSpecs *string           `json:"detail_tech_specs_copy"`
	DetailVideo     *string           `json:"detail_video"`
	Folder          string            `json:"folder"`
	GalleryImages   string            `json:"gallery_images"`
	GalleryPrefix   string            `json:"gallery_prefix"`
	LargeImage      string            `json:"large_image"`
	SmallImage      string            `json:"small_image"`
	North           string            `json:"north"`
	NumSvgImages    int               `json:"num_svg_images"`
	TrackID         int               `json:"track_id"`
	TrackMap        string            `json:"track_map"`
	TrackMapLayers  map[string]string `json:"track_map_layers"`
}

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      float64 `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