UNPKG

telex-server-monitor-sdk

Version:

SDK for Telex Server Monitor - A lightweight agent that collects and reports server CPU metrics to the Telex monitoring platform

78 lines (77 loc) 2.76 kB
import axios from "axios"; import { getToken, isTokenValid, saveAuth, TELEX_API_URL, updateSettings, } from "../index.js"; /** * Authenticate with Telex using email and password * @param email User's Telex email * @param password User's Telex password * @returns Promise that resolves to the authentication token */ export async function authenticate(email, password) { try { const response = await axios.post(`${TELEX_API_URL}/auth/login`, { email, password, }); console.error('response from auth', response); const { token, settings } = response.data; // Save the token and settings saveAuth(email, token); updateSettings(settings); return token; } catch (error) { if (axios.isAxiosError(error)) { if (error.response) { throw new Error(`Authentication failed: ${error.response.data.message || "Invalid credentials"}`); } else if (error.request) { throw new Error("Authentication failed: No response from Telex server"); } } throw new Error(`Authentication failed: ${error.message}`); } } /** * Get the current authentication token, refreshing if necessary * @param email User's Telex email (required if token needs refreshing) * @param password User's Telex password (required if token needs refreshing) * @returns Promise that resolves to the authentication token */ export async function getAuthToken(email, password) { // Check if we have a valid token const token = getToken(); if (token && isTokenValid()) { return token; } // If we don't have a valid token, we need to authenticate if (!email || !password) { throw new Error("Authentication required: Please provide email and password"); } return authenticate(email, password); } /** * Fetch user settings from Telex * @param token Authentication token * @returns Promise that resolves to the user settings */ export async function fetchSettings(token) { try { const response = await axios.get(`${TELEX_API_URL}/settings`, { headers: { Authorization: `Bearer ${token}`, }, }); updateSettings(response.data); } catch (error) { if (axios.isAxiosError(error)) { if (error.response) { throw new Error(`Failed to fetch settings: ${error.response.data.message || "Server error"}`); } else if (error.request) { throw new Error("Failed to fetch settings: No response from Telex server"); } } throw new Error(`Failed to fetch settings: ${error.message}`); } }