/** * CyberForge ML Client * Integration with mlService.js */ const axios = require('axios'); class CyberForgeMLClient { constructor(baseUrl = 'http://localhost:8001') { this.baseUrl = baseUrl; this.client = axios.create({ baseURL: baseUrl, timeout: 5000, headers: { 'Content-Type': 'application/json' } }); } /** * Get prediction from ML model * @param {string} modelName - Name of the model * @param {Object} features - Feature dictionary * @returns {Promise} Prediction result */ async predict(modelName, features) { try { const response = await this.client.post('/predict', { model_name: modelName, features: features }); return response.data; } catch (error) { console.error('ML prediction error:', error.message); throw error; } } /** * Analyze website for threats * @param {string} url - URL to analyze * @param {Object} scrapedData - Data from WebScraperAPIService * @returns {Promise} Threat analysis result */ async analyzeWebsite(url, scrapedData) { try { const response = await this.client.post('/analyze', { url: url, data: scrapedData }); return response.data; } catch (error) { console.error('Website analysis error:', error.message); throw error; } } /** * List available models * @returns {Promise} List of model names */ async listModels() { const response = await this.client.get('/models'); return response.data.models; } /** * Get model information * @param {string} modelName - Name of the model * @returns {Promise} Model metadata */ async getModelInfo(modelName) { const response = await this.client.get(`/models/${modelName}`); return response.data; } } module.exports = CyberForgeMLClient;