/** * Composant APIDocumentation pour AfriDataHub * Created by BlackBenAI Team - AfriDataHub Platform */ import { useState, useEffect } from 'react' import { motion, AnimatePresence } from 'framer-motion' import { Button } from '@/components/ui/button' import { Code, Copy, RefreshCw, Terminal, Globe, Lock, Check, ExternalLink, BookOpen, Cpu, Database } from 'lucide-react' import { API_URL } from '../config' const APIDocumentation = () => { const [token, setToken] = useState('') const [loading, setLoading] = useState(false) const [copied, setCopied] = useState(false) const [activeTab, setActiveTab] = useState('python') useEffect(() => { fetchToken() }, []) const fetchToken = async () => { try { const storedToken = localStorage.getItem('token') const response = await fetch(`${API_URL}auth/token/`, { headers: { 'Authorization': `Token ${storedToken}` } }) const data = await response.json() if (response.ok) { setToken(data.token) } } catch (error) { console.error('Erreur lors de la récupération du token:', error) } } const regenerateToken = async () => { if (!confirm('Êtes-vous sûr de vouloir régénérer votre token ? L\'ancien token ne fonctionnera plus.')) return try { setLoading(true) const storedToken = localStorage.getItem('token') const response = await fetch(`${API_URL}auth/token/`, { method: 'POST', headers: { 'Authorization': `Token ${storedToken}` } }) const data = await response.json() if (response.ok) { setToken(data.token) } } catch (error) { console.error('Erreur lors de la régénération du token:', error) } finally { setLoading(false) } } const copyToClipboard = (text) => { navigator.clipboard.writeText(text) setCopied(true) setTimeout(() => setCopied(false), 2000) } const endpoints = [ { method: 'GET', path: '/api/datasets/', description: 'Liste tous les datasets publics disponibles.', params: [ { name: 'domain', type: 'string', desc: 'Filtrer par domaine (agriculture, health, etc.)' }, { name: 'search', type: 'string', desc: 'Recherche textuelle dans le titre ou la description' } ] }, { method: 'GET', path: '/api/datasets/{slug}/data/', description: 'Récupère les points de données pour un dataset spécifique.', params: [ { name: 'country', type: 'string', desc: 'Code pays ISO (ex: BJ, NG)' }, { name: 'limit', type: 'number', desc: 'Nombre maximum de résultats (défaut: 100)' } ] }, { method: 'GET', path: '/api/analytics/comprehensive/', description: 'Récupère des analyses consolidées et des statistiques.', params: [ { name: 'dataset_id', type: 'string', desc: 'ID ou Slug du dataset pour filtrer l\'analyse' } ] } ] const codeExamples = { python: `import requests url = "${API_URL}datasets/" headers = { "Authorization": "Token ${token || 'VOTRE_TOKEN_ICI'}" } response = requests.get(url, headers=headers) data = response.json() print(f"Nombre de datasets: {len(data['results'])}")`, javascript: `const fetchDatasets = async () => { const response = await fetch('${API_URL}datasets/', { headers: { 'Authorization': 'Token ${token || 'VOTRE_TOKEN_ICI'}' } }); const data = await response.json(); console.log(data); };`, curl: `curl -X GET ${API_URL}datasets/ \\ -H "Authorization: Token ${token || 'VOTRE_TOKEN_ICI'}"` } return (
Intégrez les données d'AfriDataHub directement dans vos applications et flux de travail.
Utilisez ce token pour authentifier vos requêtes.
Gardez votre token secret. Ne le partagez jamais dans des environnements publics ou côté client (frontend).
{ep.path}
{ep.description}
Paramètres
{ep.params.map((param, pi) => (
{codeExamples[activeTab]}
SDK AfriDataHub
Bientôt disponible sur PyPI et NPM.