trainingpeaks-sdk
Version:
TypeScript SDK for TrainingPeaks API integration
69 lines (68 loc) • 2.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateWorkoutListUrl = exports.API_ENDPOINTS = exports.API_ORIGINS = exports.API_BASE_URLS = exports.DEFAULT_API_URLS = exports.createApiUrls = exports.DEFAULT_PATHS = exports.DEFAULT_BASE_URLS = void 0;
exports.DEFAULT_BASE_URLS = {
api: 'https://tpapi.trainingpeaks.com',
home: 'https://home.trainingpeaks.com',
app: 'https://app.trainingpeaks.com',
};
exports.DEFAULT_PATHS = {
login: '/login',
users: '/users',
token: '/token',
userProfile: '/user',
tokenRefresh: '/token/refresh',
userPreferences: '/preferences',
fitness: '/fitness',
athletes: '/athletes',
workouts: '/workouts',
};
const createApiUrls = (config = {}) => {
const baseUrls = {
...exports.DEFAULT_BASE_URLS,
...config.baseUrls,
};
const paths = {
...exports.DEFAULT_PATHS,
...config.paths,
};
const usersVersion = config.usersVersion ?? 'v3';
const fitnessVersion = config.fitnessVersion ?? 'v6';
const usersBase = `${baseUrls.api}${paths.users}/${usersVersion}`;
const fitnessBase = `${baseUrls.api}${paths.fitness}/${fitnessVersion}`;
const generatedEndpoints = {
LOGIN_PAGE: `${baseUrls.home}${paths.login}`,
TOKEN: `${usersBase}${paths.token}`,
USER_PROFILE: `${usersBase}${paths.userProfile}`,
TOKEN_REFRESH: `${usersBase}${paths.tokenRefresh}`,
USER_PREFERENCES: `${usersBase}${paths.userPreferences}`,
WORKOUTS_LIST: `${fitnessBase}${paths.athletes}`,
};
const endpoints = {
...generatedEndpoints,
...config.endpoints,
};
return {
baseUrls: {
API: baseUrls.api,
LOGIN: baseUrls.home,
USERS: usersBase,
APP: baseUrls.app,
},
endpoints,
origins: {
APP: baseUrls.app,
APP_WITH_SLASH: `${baseUrls.app}/`,
},
};
};
exports.createApiUrls = createApiUrls;
exports.DEFAULT_API_URLS = (0, exports.createApiUrls)();
exports.API_BASE_URLS = exports.DEFAULT_API_URLS.baseUrls;
exports.API_ORIGINS = exports.DEFAULT_API_URLS.origins;
exports.API_ENDPOINTS = exports.DEFAULT_API_URLS.endpoints;
const generateWorkoutListUrl = (athleteId, startDate, endDate, config = {}) => {
const apiUrls = (0, exports.createApiUrls)(config);
return `${apiUrls.endpoints.WORKOUTS_LIST}/${encodeURIComponent(athleteId)}/workouts/${encodeURIComponent(startDate)}/${encodeURIComponent(endDate)}`;
};
exports.generateWorkoutListUrl = generateWorkoutListUrl;