@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
TypeScript
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;
}