UNPKG

trainingpeaks-sdk

Version:
47 lines (46 loc) 1.78 kB
import { API_BASE_URLS, API_ENDPOINTS, } from '../../../../adapters/public-api/constants/api-urls.js'; export const LOGIN_API_BASE_URL = API_BASE_URLS.LOGIN; export const 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', }; export const getLoginPage = async (httpClient) => { return await httpClient.get(API_ENDPOINTS.LOGIN_PAGE, { headers: { 'Content-Type': 'application/json', Accept: 'application/json', }, }); }; export const submitLogin = async (httpClient, requestVerificationToken, credentials) => { const formData = new URLSearchParams({ Username: credentials.username, __RequestVerificationToken: requestVerificationToken, Password: credentials.password, }); return await httpClient.post(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', ...LOGIN_FORM_HEADERS, }, }); }; export 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; };