feat: ajout de la gestion des sources de contenu avec création de composants, formulaires et API pour l'importation, l'exportation et la configuration des sources de scraping.

This commit is contained in:
ext.jeremy.guillot@maxicoffee.domains
2025-06-27 16:40:48 +02:00
parent 32b4e4fbb2
commit dac2f91998
15 changed files with 1364 additions and 15 deletions

View File

@@ -0,0 +1,86 @@
import axios from 'axios';
export class ApiContentSourceRepository {
constructor() {
this.apiClient = axios.create({
baseURL: '/api',
headers: {
'Content-Type': 'application/json',
},
});
}
/**
* Récupère toutes les sources de contenu
*/
async getAll() {
try {
const response = await this.apiClient.get('/content-sources');
return response.data;
} catch (error) {
throw new Error(error.response?.data?.message || 'Erreur lors de la récupération des sources');
}
}
/**
* Récupère une source de contenu par son ID
*/
async getById(id) {
try {
const response = await this.apiClient.get(`/content-sources/${id}`);
return response.data;
} catch (error) {
throw new Error(error.response?.data?.message || 'Erreur lors de la récupération de la source');
}
}
/**
* Crée une nouvelle source de contenu
*/
async create(contentSource) {
try {
const response = await this.apiClient.post('/content-sources', contentSource);
return response.data;
} catch (error) {
throw new Error(error.response?.data?.message || 'Erreur lors de la création de la source');
}
}
/**
* Met à jour une source de contenu
*/
async update(id, contentSource) {
try {
const response = await this.apiClient.put(`/content-sources/${id}`, contentSource);
return response.data;
} catch (error) {
throw new Error(error.response?.data?.message || 'Erreur lors de la mise à jour de la source');
}
}
/**
* Exporte toutes les sources de contenu
*/
async export() {
try {
const response = await this.apiClient.get('/content-sources/export');
return response.data;
} catch (error) {
throw new Error(error.response?.data?.message || 'Erreur lors de l\'export des sources');
}
}
/**
* Importe des sources de contenu
*/
async import(contentSources) {
try {
const response = await this.apiClient.post('/content-sources/import', {
contentSources
});
return response.data;
} catch (error) {
throw new Error(error.response?.data?.message || 'Erreur lors de l\'import des sources');
}
}
}