trainingpeaks-sdk
Version:
TypeScript SDK for TrainingPeaks API integration
53 lines (52 loc) • 2.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getRequestVerificationToken = exports.submitLogin = exports.getLoginPage = exports.LOGIN_FORM_HEADERS = exports.LOGIN_API_BASE_URL = void 0;
const api_urls_1 = require("../../../../adapters/public-api/constants/api-urls.js");
exports.LOGIN_API_BASE_URL = api_urls_1.API_BASE_URLS.LOGIN;
exports.LOGIN_FORM_HEADERS = {
'accept-language': 'en-US,en;q=0.9',
'cache-control': 'max-age=0',
'content-type': 'application/x-www-form-urlencoded',
origin: 'null',
priority: 'u=0, i',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'same-origin',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
};
const getLoginPage = async (httpClient) => {
return await httpClient.get(api_urls_1.API_ENDPOINTS.LOGIN_PAGE, {
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
},
});
};
exports.getLoginPage = getLoginPage;
const submitLogin = async (httpClient, requestVerificationToken, credentials) => {
const formData = new URLSearchParams({
Username: credentials.username,
__RequestVerificationToken: requestVerificationToken,
Password: credentials.password,
});
return await httpClient.post(api_urls_1.API_ENDPOINTS.LOGIN_PAGE, formData.toString(), {
headers: {
accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
...exports.LOGIN_FORM_HEADERS,
},
});
};
exports.submitLogin = submitLogin;
const getRequestVerificationToken = (html) => {
const inputMatches = html.match(/<input[^>]+>/g) || [];
for (const input of inputMatches) {
const nameMatch = input.match(/name="__RequestVerificationToken"/);
if (nameMatch) {
const valueMatch = input.match(/value="([^"]*)"/);
return valueMatch?.[1] || null;
}
}
return null;
};
exports.getRequestVerificationToken = getRequestVerificationToken;