@geomatika/isigeo_http_api
v1.1.0
Published
Client HTTP API pour Isigeo
Readme
@geomatika/isigeo_http_api
SDK JavaScript/TypeScript pour communiquer avec les API Isigéo (authentification + accès aux données). Compatible navigateur, Node.js et Cordova.
Installation
Depuis npm
npm install @geomatika/isigeo_http_apiDepuis une source locale (avant publication)
cd http_api
npm run build
npm link
cd /path/to/your/project
npm link @geomatika/isigeo_http_apiFormats disponibles
Le SDK est livré sous plusieurs formats pour s'adapter à tous les contextes :
| Format | Fichier | Usage typique |
| ------ | -------------------------------- | ---------------------------------------------------- |
| ESM | dist/isigeo_http_api.es.js | Applications Vite / Web modernes |
| CJS | dist/isigeo_http_api.cjs.js | Node.js ou outils CommonJS |
| IIFE | dist/isigeo_http_api.iife.js | Cordova ou HTML classique (window.IsigeoHttpApi) |
Fonctionnalités
- Authentification
- par username/password
- par token permanent
- gestion automatique du JWT
- Accès aux données (CRUD)
- lecture (
getData) avec pagination (page,limit,offset), colonnes (fields), filtres (eq.,like.,in.…),Geo-Format(geojson/wkt) etGeo-SRID - création (
createData, POST) - mise à jour (
updateData, PUT) avec filtre - suppression (
deleteData, DELETE) avec filtre
- lecture (
- Compatible navigateur / Cordova (WebView), Node.js 18+, TypeScript
Utilisation
Exemple complet (ESM)
import { IsigeoApi } from "@geomatika/isigeo_http_api";
const api = new IsigeoApi({
baseUrl: "https://deploiement.geomatika.fr",
version: 1,
});
const { token } = await api.auth.authWithPassword("admin", "••••••");
const supports = await api.data.getData(token, "ep_support", {
page: 1,
geoFormat: "geojson",
});
console.log("Résultats:", supports);Authentification
const { token, expires } = await api.auth.authWithPassword("admin", "••••••");
console.log("JWT:", token);
console.log("Expire:", new Date(expires * 1000).toLocaleString());Ou via token permanent :
const { token } = await api.auth.authWithToken("TOKEN_PERMANENT_GENERE_PAR_ISIGEO");Requêtes data
Pagination
const rows = await api.data.getData(token, "ep_support", {
page: 1,
geoFormat: "geojson",
});Limit / offset
const rows = await api.data.getData(token, "ep_support", {
limit: 10,
offset: 0,
});Colonnes spécifiques
const rows = await api.data.getData(token, "chiffrage_client_travaux", {
columns: ["date_obs", "photo1", "photo2", "typ_desor", "obs"],
});Filtres
const rows = await api.data.getData(token, "support", {
filter: { idsup: "eq.18294" },
});SRID / format
const rows = await api.data.getData(token, "ep_support", {
geoFormat: "wkt",
geoSrid: 2154,
});Création (POST)
const created = await api.data.createData(token, "support", {
ref_support: "SUP-001",
nature_du_support: "Candélabres",
idnature_du_support: "5",
});Mise à jour (PUT)
await api.data.updateData(
token,
"support",
{ nature_du_support: "Poteau bois", idnature_du_support: "2" },
{ filter: { idsup: "eq.18294" } }
);Suppression (DELETE)
const res = await api.data.deleteData(token, "support", {
filter: { idsup: "eq.18294" },
});
// { status: 200, message: "Deleted ( support.18294 )" }Format de réponse (lecture)
Les appels getData retournent l'enveloppe renvoyée par le serveur :
{
"metadata": { "total": 1, "sent": 1, "range": { "start": 1, "end": 1 } },
"data": [ /* lignes */ ]
}Utilisation dans Cordova
1. Ajouter au npmFileToImport.json
{
"@geomatika/isigeo_http_api": [
{
"from": ["dist", "isigeo_http_api.iife.js"],
"to": ["js", "extras", "isigeo", "isigeo-http-api.js"]
}
]
}2. Inclure dans index.html
<script src="js/extras/isigeo/isigeo-http-api.js"></script>
<script>
document.addEventListener("deviceready", async () => {
const { IsigeoApi } = window.IsigeoHttpApi;
const api = new IsigeoApi({
baseUrl: "https://deploiement.geomatika.fr",
version: 1,
});
const { token } = await api.auth.authWithPassword("admin", "•••••");
const supports = await api.data.getData(token, "ep_support", { page: 1 });
console.log(supports);
});
</script>window.IsigeoHttpApi est automatiquement défini par le bundle IIFE.
Types TypeScript
Les méthodes sont typées. Tu peux typer les retours pour tes données :
interface Support {
idsup: number;
geom: any;
}
const rows = await api.data.getData<Support[]>(token, "support", {
page: 1,
});Tests
Tests unitaires (mock fetch, pas de réseau) :
npm testTests d'intégration (round-trip réel insert → get → update → get → delete → get contre une instance Isigéo). Skippés automatiquement si les variables ci-dessous ne sont pas définies.
Configuration via .env (recommandé) : copier .env.example en .env (gitignoré) et renseigner les valeurs.
cp .env.example .env
# éditer .env puis :
npm run test:integrationOu en inline :
ISIGEO_TEST_URL="https://deploiement.geomatika.fr/dev6" \
ISIGEO_TEST_USER="monuser" \
ISIGEO_TEST_PASSWORD="monpass" \
ISIGEO_TEST_TABLE="support" \
npm run test:integrationISIGEO_TEST_TABLE est optionnel (défaut : support). L'utilisateur doit avoir les droits POST/PUT/DELETE sur la table — chaque run crée puis supprime une ligne marquée ref_support = "npmtest-<timestamp>".
Les scripts scripts/test-auth.js et scripts/test-data.js consomment les mêmes variables d'environnement et ne contiennent aucun secret. Le fichier .env est automatiquement chargé via dotenv.
Build local
# Compilation TS + bundle Vite
npm run buildProduit :
dist/
├── isigeo_http_api.cjs.js
├── isigeo_http_api.es.js
├── isigeo_http_api.iife.js
└── index.d.tsPublication npm
npm login
npm version patch
npm publish --access publicVérifie le contenu publié :
npm packExemple d'intégration dans Vite + Cordova
// src/lib/isigeo.ts
import { IsigeoApi } from "@geomatika/isigeo_http_api";
export const isigeo = new IsigeoApi({
baseUrl: import.meta.env.VITE_ISIGEO_URL,
version: Number(import.meta.env.VITE_ISIGEO_VERSION ?? 1),
});