UNPKG

@gooin/garmin-connect

Version:

Makes it simple to interface with Garmin Connect to get or set any data point

78 lines (77 loc) 2.99 kB
import { AxiosInstance, AxiosRequestConfig, AxiosResponse, RawAxiosRequestHeaders } from 'axios'; import OAuth from 'oauth-1.0a'; import { UrlClass } from '../garmin/UrlClass'; import { GCConfig, IOauth1, IOauth1Consumer, IOauth1Token, IOauth2Token } from '../garmin/types'; export declare class HttpClient { client: AxiosInstance; url: UrlClass; config: GCConfig; oauth1Token: IOauth1Token | undefined; oauth2Token: IOauth2Token | undefined; OAUTH_CONSUMER: IOauth1Consumer | undefined; constructor(url: UrlClass, config: GCConfig); fetchOauthConsumer(): Promise<void>; checkTokenVaild(): Promise<void>; get<T>(url: string, config?: AxiosRequestConfig<any>): Promise<T>; post<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>; put<T>(url: string, data: any, config?: AxiosRequestConfig<any>): Promise<T>; delete<T>(url: string, config?: AxiosRequestConfig<any>): Promise<T>; setCommonHeader(headers: RawAxiosRequestHeaders): void; handleError(response: AxiosResponse): void; handleHttpError(response: AxiosResponse): void; /** * Login to Garmin Connect * @param username * @param password * @param mfaCallback Optional MFA callback function * @returns {Promise<{oauth1: IOauth1; oauth2: IOauth2Token}>} */ login(username: string, password: string, mfaCallback?: () => Promise<string>): Promise<{ oauth1: IOauth1; oauth2: IOauth2Token; }>; /** * 保存HTML内容到文件,用于调试 * @param htmlContent HTML内容 * @param filename 文件名(不含扩展名) */ saveHtmlToFile(htmlContent: string, filename: string): void; /** * 处理MFA验证 * @param loginResponse 登录响应HTML * @param signinParams 登录参数 * @param mfaCallback MFA验证码回调函数 * @returns MFA验证响应 */ handleMfaVerification(loginResponse: string, signinParams: any, mfaCallback: () => Promise<string>): Promise<string>; /** * 从HTML中提取CSRF令牌 * @param html HTML字符串 * @returns CSRF令牌或null */ extractCsrfToken(html: string): string | null; /** * 从HTML中提取页面标题 * @param html HTML字符串 * @returns 页面标题或空字符串 */ extractPageTitle(html: string): string; /** * 从HTML中提取ticket * @param html HTML字符串 * @returns ticket或null */ extractTicket(html: string): string | null; /** * 处理页面标题 * @param htmlStr HTML字符串 * @returns 页面标题 */ handlePageTitle(htmlStr: string): string; handleAccountLocked(htmlStr: string): void; refreshOauth2Token(): Promise<void>; getOauth1Token(ticket: string): Promise<IOauth1>; getOauthClient(consumer: IOauth1Consumer): OAuth; exchange(oauth1: IOauth1): Promise<void>; setOauth2TokenExpiresAt(token: IOauth2Token): IOauth2Token; }