@gooin/garmin-connect
Version:
Makes it simple to interface with Garmin Connect to get or set any data point
84 lines (83 loc) • 4.25 kB
TypeScript
import { HttpClient } from '../common/HttpClient';
import { UrlClass } from './UrlClass';
import { ExportFileTypeValue, GarminDomain, ICalendar, ICountActivities, IGarminTokens, IOauth1Token, IOauth2Token, IScheduleWorkout, ISocialProfile, IUserSettings, IWorkout, IWorkoutDetail, UploadFileTypeTypeValue, GCConfig } from './types';
import { ActivitySubType, ActivityType, GCActivityId, IActivity } from './types/activity';
import { ICourse, ICourseDetail } from './types/course';
import { SleepData, SleepDailySummary } from './types/sleep';
import { HRVData } from './types/hrv';
import { LatestTrainingStatusResponse, TrainingLoadBalanceResponse, WeeklyTrainingStatusResponse } from './types/training-status';
import { PersonalInfoResponse } from './types/personal-info';
import Running from './workouts/Running';
export interface Session {
}
export default class GarminConnect {
client: HttpClient;
domain: GarminDomain;
config: GCConfig;
private _userHash;
private listeners;
url: UrlClass;
constructor(config: GCConfig, domain?: GarminDomain);
login(username?: string, password?: string, sessionId?: string): Promise<GarminConnect>;
exportTokenToFile(dirPath: string): Promise<void>;
loadTokenByFile(dirPath: string): Promise<void>;
exportToken(): IGarminTokens;
loadToken(oauth1: IOauth1Token, oauth2: IOauth2Token): void;
getUserSettings(): Promise<IUserSettings>;
getUserProfile(): Promise<ISocialProfile>;
getActivities(start?: number, limit?: number, activityType?: ActivityType, subActivityType?: ActivitySubType): Promise<IActivity[]>;
getActivity(activity: {
activityId: GCActivityId;
}): Promise<IActivity>;
countActivities(): Promise<ICountActivities>;
downloadWellnessData(date: Date, dir: string): Promise<void>;
downloadOriginalActivityData(activity: {
activityId: GCActivityId;
}, dir: string, type?: ExportFileTypeValue): Promise<void>;
uploadActivity(file: string, format?: UploadFileTypeTypeValue): Promise<unknown>;
deleteActivity(activity: {
activityId: GCActivityId;
}): Promise<void>;
getWorkouts(start: number, limit: number): Promise<IWorkout[]>;
getWorkoutDetail(workout: {
workoutId: string;
}): Promise<IWorkoutDetail>;
addWorkout(workout: IWorkoutDetail | Running): Promise<IWorkoutDetail>;
addRunningWorkout(name: string, meters: number, description: string): Promise<IWorkoutDetail>;
deleteWorkout(workout: {
workoutId: string;
}): Promise<unknown>;
scheduleWorkout(workout: {
workoutId: string;
}, date?: Date): Promise<IScheduleWorkout>;
getCalendar(year?: number, month?: number): Promise<ICalendar>;
getSteps(date?: Date): Promise<number>;
getSleepData(date?: Date): Promise<SleepData>;
getSleepDuration(date?: Date): Promise<{
hours: number;
minutes: number;
}>;
getSleepDailySummary(startDate: Date, endDate: Date): Promise<SleepDailySummary>;
getHRVData(date?: Date): Promise<HRVData>;
getTrainingStatus(date?: Date): Promise<LatestTrainingStatusResponse>;
getTrainingLoadBalance(date?: Date): Promise<TrainingLoadBalanceResponse>;
getWeeklyTrainingStatus(startDate: Date, endDate: Date): Promise<WeeklyTrainingStatusResponse>;
getPersonalInfo(): Promise<PersonalInfoResponse>;
getDailyWeightData(date?: Date): Promise<WeightData>;
getDailyWeightInPounds(date?: Date): Promise<number>;
getDailyHydration(date?: Date): Promise<number>;
updateWeight(date: Date | undefined, lbs: number, timezone: string): Promise<UpdateWeight>;
updateHydrationLogOunces(date: Date | undefined, valueInOz: number): Promise<WaterIntake>;
getGolfSummary(): Promise<GolfSummary>;
getGolfScorecard(scorecardId: number): Promise<GolfScorecard>;
getHeartRate(date?: Date): Promise<HeartRate>;
getCourses(): Promise<ICourse[]>;
getCourse(course: {
courseId: number;
}): Promise<ICourseDetail>;
createCourse(course: ICourseDetail): Promise<ICourseDetail>;
consentGrant(): Promise<void>;
get<T>(url: string, data?: any): Promise<T>;
post<T>(url: string, data: any): Promise<T>;
put<T>(url: string, data: any): Promise<T>;
}