Skip to main content
Glama
debug-auth-response.cjs4.11 kB
#!/usr/bin/env node /** * Debug Authentication Response * Let's see what the API is actually returning */ const https = require('https'); async function makeHttpRequest(hostname, path, method = 'GET', headers = {}, postData = null) { return new Promise((resolve, reject) => { const options = { hostname, path, method, headers: { 'Content-Type': 'application/json', 'User-Agent': 'Debug-Test/1.0', ...headers } }; if (postData && method === 'POST') { const data = JSON.stringify(postData); options.headers['Content-Length'] = Buffer.byteLength(data); } console.log('🔍 Making request to:', `https://${hostname}${path}`); console.log('🔍 Method:', method); console.log('🔍 Headers:', JSON.stringify(options.headers, null, 2)); if (postData) { console.log('🔍 POST data:', JSON.stringify(postData, null, 2)); } const req = https.request(options, (res) => { let responseBody = ''; res.on('data', (chunk) => { responseBody += chunk; }); res.on('end', () => { console.log('📥 Response status:', res.statusCode); console.log('📥 Response headers:', JSON.stringify(res.headers, null, 2)); console.log('📥 Response body:', responseBody); try { const parsedBody = responseBody ? JSON.parse(responseBody) : null; resolve({ statusCode: res.statusCode, headers: res.headers, body: parsedBody, rawBody: responseBody }); } catch (error) { console.log('📥 Body is not JSON, returning raw'); resolve({ statusCode: res.statusCode, headers: res.headers, body: null, rawBody: responseBody }); } }); }); req.on('error', (error) => { console.log('❌ Request error:', error.message); reject(error); }); req.setTimeout(10000, () => { req.destroy(); reject(new Error('Request timeout')); }); if (postData && method === 'POST') { req.write(JSON.stringify(postData)); } req.end(); }); } async function testAuth() { console.log('🧪 Testing SAOLA Authentication'); console.log('================================'); try { const response = await makeHttpRequest( 'api.umbrellacost.io', '/api/v1/users/signin', 'POST', {}, { username: 'david+saola@umbrellacost.com', password: 'Dsamsung1!' } ); console.log('\n✅ Request completed successfully!'); console.log('Status code:', response.statusCode); console.log('Has jwtToken?', !!response.body?.jwtToken); console.log('Has token?', !!response.body?.token); console.log('Response keys:', response.body ? Object.keys(response.body) : 'No body'); if (response.body?.jwtToken) { console.log('JWT Token found:', response.body.jwtToken.substring(0, 50) + '...'); } } catch (error) { console.log('❌ Authentication failed:', error.message); } console.log('\n🧪 Testing AllCloud Authentication'); console.log('=================================='); try { const response = await makeHttpRequest( 'api.umbrellacost.io', '/api/v1/users/signin', 'POST', {}, { username: 'david+allcloud@umbrellacost.com', password: 'Dsamsung1!123' } ); console.log('\n✅ Request completed successfully!'); console.log('Status code:', response.statusCode); console.log('Has jwtToken?', !!response.body?.jwtToken); console.log('Has token?', !!response.body?.token); console.log('Response keys:', response.body ? Object.keys(response.body) : 'No body'); if (response.body?.jwtToken) { console.log('JWT Token found:', response.body.jwtToken.substring(0, 50) + '...'); } } catch (error) { console.log('❌ Authentication failed:', error.message); } } testAuth().catch(console.error);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/daviddraiumbrella/invoice-monitoring'

If you have feedback or need assistance with the MCP directory API, please join our Discord server