import { BaseApiClient } from '../base/BaseApiClient'; import { AuthSessionDTO } from '../../types/generated/AuthSessionDTO'; import { LoginParams } from '../../types/generated/LoginParams'; import { SignupParams } from '../../types/generated/SignupParams'; import { LoginWithIracingCallbackParams } from '../../types/generated/LoginWithIracingCallbackParams'; import { IracingAuthRedirectResult } from '../../types/generated/IracingAuthRedirectResult'; /** * Auth API Client * * Handles all authentication-related API operations. */ export class AuthApiClient extends BaseApiClient { /** Sign up with email */ signup(params: SignupParams): Promise { return this.post('/auth/signup', params); } /** Login with email */ login(params: LoginParams): Promise { return this.post('/auth/login', params); } /** Get current session */ getSession(): Promise { return this.get('/auth/session'); } /** Logout */ logout(): Promise { return this.post('/auth/logout', {}); } /** Start iRacing auth redirect */ startIracingAuthRedirect(returnTo?: string): Promise { const query = returnTo ? `?returnTo=${encodeURIComponent(returnTo)}` : ''; return this.get(`/auth/iracing/start${query}`); } /** Login with iRacing callback */ loginWithIracingCallback(params: LoginWithIracingCallbackParams): Promise { const query = new URLSearchParams(); query.append('code', params.code); query.append('state', params.state); if (params.returnTo) { query.append('returnTo', params.returnTo); } return this.get(`/auth/iracing/callback?${query.toString()}`); } }