Files
ALwrity/frontend/src/api/seoAnalysis.ts
2025-08-06 12:48:02 +05:30

85 lines
2.9 KiB
TypeScript

import { longRunningApiClient } from './client';
import { SEOAnalysisData } from '../components/shared/types';
// SEO Analysis API functions
export const seoAnalysisAPI = {
async analyzeURL(url: string, targetKeywords?: string[]): Promise<SEOAnalysisData | null> {
try {
console.log(`Starting SEO analysis for URL: ${url}`);
console.log(`Target keywords:`, targetKeywords);
const requestData = {
url,
target_keywords: targetKeywords
};
console.log('Request data:', requestData);
const response = await longRunningApiClient.post('/api/seo-dashboard/analyze-comprehensive', requestData);
console.log('Response received:', response);
console.log('Response data:', response.data);
if (response.data.success) {
console.log(`SEO analysis completed for ${url}`);
console.log('Analysis result:', response.data);
return response.data;
} else {
console.error('Analysis failed:', response.data.message);
throw new Error(response.data.message || 'Analysis failed');
}
} catch (error: any) {
console.error('Error analyzing URL:', error);
console.error('Error details:', {
message: error.message,
status: error.response?.status,
data: error.response?.data
});
throw error;
}
},
async getDetailedMetrics(url: string): Promise<any> {
try {
console.log(`Getting detailed metrics for URL: ${url}`);
const response = await longRunningApiClient.get(`/api/seo-dashboard/metrics/${encodeURIComponent(url)}`);
console.log(`Detailed metrics retrieved for ${url}`);
return response.data;
} catch (error) {
console.error('Error getting detailed metrics:', error);
throw error;
}
},
async getAnalysisSummary(): Promise<any> {
try {
console.log('Getting analysis summary');
const response = await longRunningApiClient.get('/api/seo-dashboard/summary');
console.log('Analysis summary retrieved');
return response.data;
} catch (error) {
console.error('Error getting analysis summary:', error);
throw error;
}
},
async batchAnalyzeURLs(urls: string[]): Promise<any[]> {
try {
console.log(`Starting batch analysis for ${urls.length} URLs`);
const response = await longRunningApiClient.post('/api/seo-dashboard/batch-analyze', { urls });
console.log(`Batch analysis completed for ${urls.length} URLs`);
return response.data;
} catch (error) {
console.error('Error in batch analysis:', error);
throw error;
}
},
async healthCheck(): Promise<boolean> {
try {
const response = await longRunningApiClient.get('/api/seo-dashboard/health');
return response.status === 200;
} catch (error) {
console.error('Health check failed:', error);
return false;
}
}
};