-
Notifications
You must be signed in to change notification settings - Fork 3
Ajouter une datasource (api)
Mathieu HAAGE edited this page Oct 7, 2020
·
8 revisions
Ajouter une nouvelle datasource qui sera appelée par le front de manière asynchrone, actuellement nous avons 3 datasources :
- ApiGouv
- ApiGouvAssociations : ApiGouv mais seulement les entrypoints pour les associations qui ne sont pas performantes
- PG : base SIRENE + sources de données csv
Créer un nouveau dossier dans src/DataSources
qui aura au minimum
index.js
export { default } from "./MyDatasource;
MyDatasource.js
export default class MyDatasource extends DataSource {
async getSIRET(siret) {
// récupère et renvoie les infos d'un établissement
// doit retourner un objet (ou une promesse qui renvoie un objet) où les clés sont présentes sur le serveur dans src/frentreprise/models/Etablissement.js
}
async getSIREN(siren) {
// récupère et renvoie les infos d'une entreprise
// doit retourner un objet (ou une promesse qui renvoie un objet) où les clés sont présentes sur le serveur dans src/frentreprise/models/Entreprise.js
}
getSIRETCheck(data) {
// permet de vérifier si getSIRET a vraiment fonctionné
// pour cela on teste si une valeur est bien renseignée
// doit retourner un boolean
// le plus souvent on exécute return !!data.siret;
}
getSIRENCheck(data) {
// permet de vérifier si getSIREN a vraiment fonctionné
// pour cela on teste si une valeur est bien renseignée
// doit retourner un boolean
// le plus souvent on exécute return !!data.siren;
}
}
// src/frentreprise.js
class frentreprise {
constructor() {
// ...
this.addDataSource({
name: "MyDatasource",
priority: 80, // higher prevail
source: new MyDatasource(),
});
Si la datasource a besoin d'information supplémentaires comme un token, un mot de passe... nous devons le faire depuis le serveur en stockant les données sensibles dans le fichier .env
(penser à rajouter les clés vides dans .env.dist et mettre les bonnes informations sur le serveur)
// config/default.js
const config = {
// ...
MyDatasource: {
token: process.env.MY_DATASOURCE_TOKEN,
}
// src/index.js
const myDatasource = frentreprise.getDataSource('MyDatasource').source;
myDatasource.token = config.get("APIGouv.token");
// Si besoin d'axios
myDatasource.axiosConfig = {
...myDatasource.axiosConfig,
proxy: (config.has("proxy") && config.get("proxy")) || false,
};
if (config.has("apiTimeout")) {
myDatasource.axiosConfig.timeout = config.get("apiTimeout");
}
Ajouter la datasource dans src/services/Config/Config.js
const globalConfig = {
dataSources: [
// ...
{ id: "MyDatasource", priority: 80 }
],
}