index.php
serveur de carte 7z - ShomGTV4
Le serveur expose les cartes disponibles sous la forme d'archives 7z ainsi que le catalogue mapcat.yaml selon l'API définie ci-dessous.
La variable d'environnement SHOMGT3_PORTFOLIO_PATH est utilisée pour définir le portefeuille.
api: /: page d'accueil utilisée pour proposer des URL de tests /api: retourne la description de l'api /clientIpAddress: retourne l'adresse IP du client /cat.json: retourne mapcat.json /maps.json: liste en JSON l'ensemble des cartes ayant été disponibles indexées par leur numéro et avec les infos suivantes si la carte est valide: status: 'ok' lastVersion: identifiant de la dernière version url: URL d'accès à la carte si la carte a été retirée: status: 'obsolete' /maps/{numCarte}.7z: retourne le 7z de la carte dans sa dernière version
Utilisation du code Http de retour pour gérer les erreurs:
- 200 - Ok - il existe bien un document et le voici
- 400 - Bad Request - requête incorrecte
- 401 - Unauthorized - authentification nécessaire
- 404 - Not Found - le document demandé n'a pas été trouvé
Ce script nécessite que :
- les cartes 7z soient stockées dans le sous-répertoire current du répertoire défini par la var d'env. SHOMGT3_INCOMING_PATH
- à chaque carte 7z soit associé un fichier .md.json contenant en JSON la propriété 'version' indiquant la version de la carte.
- les cartes retirées correspondent à un fichier {num}.md.json contenant en JSON la propriété 'status' contenant la valeur 'obsolete' journal: |
- 27/8/2023:
- envoi du MapCat en base et non en fichier
- 19/8/2023:
- ajout d'un mécanisme de détection pour savoir si le client du serveur est ou non sur la même machine
- si le client est sur la même machine alors pas d'autre contrôle d'accès
- pour cette détection le serveur s'appelle lui-même sur l'API /clientIpAddress
- ajout d'un mécanisme de détection pour savoir si le client du serveur est ou non sur la même machine
- 3-4/8/2023:
- passage en ShomGT4
- sgupdt en version 4 fait une requête avec le paramètre version=4
- pour être compatible avec sgupdt version 3, on garde un traitement spécifique quand le paramètre version=1
- qui consiste à fournir comme version des cartes spéciales la chaine 'undefined'
- 25/7/2023:
- amélioration du code en le structurant avec un switch()
- réintroduction de l'exclusion de cartes en V0
- possibilité de limiter les cartes pour tests
- 19/6/2023:
- prise en compte des cartes retirées (status obsolete)
- 11/6/2023:
- nouvelle version simplifiée correspondant à la restructuration de shomgeotiff (ShomGT3.1)
- 2/8/2022:
- corrections indiquées par PhpStan level 6
- 20/6/2022:
- réécriture du calcul des versions des cartes pour
- décomposer le calcul par livraison et ainsi accélérer le calcul global pour une nouvelle livraison
- fusionner les fichiers conservés pour /maps.json et lastDelivery
- réécriture du calcul des versions des cartes pour
- 19/6/2022:
- gestion d'une version pour /maps.json pour exclure la carte 8523 si version=0
- 12/6/2022:
- ajout du champ modified
- 30/5/2022:
- correction d'un bug
- ajout d'un champ 'lastVersion' pour chaque carte dans le document maps.json
- stockage temporaire de maps.json maintenant long à calculer
- tri des répertoires de incoming pas forcément bien ordonnés
- rempl. /map/... par /maps/...
- suppression entrée API /map/{numCarte}/newer/{annéeEdition}c{derCorr}.7z
- suppression entrée API /cat/{date}.json
- 24/5/2022:
- modification de la gestion du fichier newermap.pser car gestion buggé
- correction d'un bug
- 22/5/2022:
- mise en variable d'environnement de SHOMGT3_INCOMING_PATH pour permettre des tests sur moins de cartes
- 19/5/2022:
- ajout gestion du contrôle d'accès et modif gestion erreurs Http
- 18/5/2022:
- passage des 2 entrées catalogue en JSON
- correction de 2 bugs
- 16/5/2022:
- utilisation fpassthru() à la place de passthru() pour améliorer la restitution du 7z
- ajout de logRecord()
- correction d'un bug dans findNewerMap()
- 15/5/2022:
- ajout de la gestion des cartes obsolètes
- chgt de l'API pour la carte plus récente que la version fournie
- ajout liste des cartes, liste des versions d'ue carte, téléchargement PNG ou 7z d'une version particulière d'une carte
- utilisation passthru() à la place de file_get_contents() pour éviter une explosion mémoire
- 11/5/2022:
- création
Table of Contents
Constants
- EXCLUDED_MAPS_IN_V0 = ['8523']
- cartes exclues du service en V0 car incompatible avec sgupdt v0.6
- SPECIAL_MAPS = ['7330', '7344', '7360', '8101', '8502', '8509', '8510', '8517', '8523']
- cartes spéciales traitées spécialement en version < 4
- TEST_MAPS = []
- liste limitée de cartes pour tests
Functions
- logRecord() : void
- enregistrement d'un log temporaire pour aider au déverminage
- sendHttpCode() : void
- Génère une erreur Http et un message utilisateur avec un content-type text ; enregistre un log avec un éventuel message sys
Constants
EXCLUDED_MAPS_IN_V0
cartes exclues du service en V0 car incompatible avec sgupdt v0.6
public
mixed
EXCLUDED_MAPS_IN_V0
= ['8523']
SPECIAL_MAPS
cartes spéciales traitées spécialement en version < 4
public
mixed
SPECIAL_MAPS
= ['7330', '7344', '7360', '8101', '8502', '8509', '8510', '8517', '8523']
TEST_MAPS
liste limitée de cartes pour tests
public
mixed
TEST_MAPS
= []
Functions
logRecord()
enregistrement d'un log temporaire pour aider au déverminage
logRecord(array<string|int, mixed> $log) : void
Parameters
- $log : array<string|int, mixed>
sendHttpCode()
Génère une erreur Http et un message utilisateur avec un content-type text ; enregistre un log avec un éventuel message sys
sendHttpCode(int $httpErrorCode, string $mesUti[, string $mesSys = '' ]) : void
Parameters
- $httpErrorCode : int
- $mesUti : string
- $mesSys : string = ''