Spaces:
Running
Running
/** | |
* API Service for the Fraud Detection Web App | |
* Provides methods for interacting with the backend API | |
*/ | |
const ApiService = (function() { | |
// API endpoints | |
const API_ENDPOINTS = { | |
predict: '/predict', | |
analyze: '/analyze' | |
}; | |
/** | |
* Sends a URL for fraud prediction | |
* @param {string} url - The URL to analyze | |
* @returns {Promise} A promise that resolves with the prediction result | |
*/ | |
function predictUrl(url) { | |
console.log('ApiService: Predicting URL:', url); | |
// Ensure URL has scheme | |
let processedUrl = url; | |
if (!url.startsWith('http://') && !url.startsWith('https://')) { | |
processedUrl = 'http://' + url; | |
} | |
// Make the API request | |
return fetch(API_ENDPOINTS.predict, { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/json' | |
}, | |
body: JSON.stringify({ url: processedUrl }) | |
}) | |
.then(response => { | |
if (!response.ok) { | |
throw new Error(`API request failed with status ${response.status}`); | |
} | |
return response.json(); | |
}) | |
.then(data => { | |
console.log('ApiService: Prediction result:', data); | |
return data; | |
}) | |
.catch(error => { | |
console.error('ApiService: Error predicting URL:', error); | |
throw error; | |
}); | |
} | |
/** | |
* Generates a detailed analysis report for a URL | |
* @param {string} url - The URL to analyze | |
* @param {string} format - The format of the report (pdf, json) | |
* @returns {Promise} A promise that resolves with the analysis result | |
*/ | |
function generateAnalysisReport(url, format = 'json') { | |
console.log('ApiService: Generating analysis report for URL:', url); | |
// Ensure URL has scheme | |
let processedUrl = url; | |
if (!url.startsWith('http://') && !url.startsWith('https://')) { | |
processedUrl = 'http://' + url; | |
} | |
// Make the API request | |
return fetch(`${API_ENDPOINTS.analyze}?format=${format}`, { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/json' | |
}, | |
body: JSON.stringify({ url: processedUrl }) | |
}) | |
.then(response => { | |
if (!response.ok) { | |
throw new Error(`API request failed with status ${response.status}`); | |
} | |
// Handle different formats | |
if (format === 'pdf') { | |
return response.blob(); | |
} | |
return response.json(); | |
}) | |
.then(data => { | |
console.log('ApiService: Analysis result received'); | |
return data; | |
}) | |
.catch(error => { | |
console.error('ApiService: Error generating analysis report:', error); | |
throw error; | |
}); | |
} | |
// Public API | |
return { | |
predictUrl, | |
generateAnalysisReport | |
}; | |
})(); | |
// Make API service available globally | |
window.ApiService = ApiService; |