Vous pouvez créer ou mettre à jour un dataset avec un fichier JSON (appelé file.json) avec le script Python 3 suivant :
# Il est nécessaire d'importer keycloak-client: sudo pip3 install keycloak-client
import sys
import ast
import json
import requests
from keycloak import KeycloakOpenID
# Permet de recuperer un token d'identification pour pouvoir pouvoir utiliser les services REST du Catalogue
# Il faut renseigner USER_EMAIL et USER_PASSWORD du compte sur le keycloak AERIS
# (le mot de passe doit être créé si vous avez toujours utilisé la connexion via renater ou orcid)
# adresse de gestion du compte keycloak : https://sso.aeris-data.fr/auth/realms/aeris/account
USER_EMAIL='john.smith@example.com'
USER_PASSWORD='qwerty'
if not sys.argv[1:] or not (sys.argv[1] == "create" or sys.argv[1] == "update"):
exit("Bad parameter. USAGE: python3 script.py [create/update]")
MODE = sys.argv[1]
#L'URL du service de métadonnées est indiquée sur le site du SEDOO
URL_SERVICE = 'https://api.sedoo.fr/aeris-safire-rest/dataset/json/'+MODE+'/'
def getToken():
keycloak_openid = KeycloakOpenID(server_url="https://sso.aeris-data.fr/auth/",
client_id="aeris-public",
realm_name="aeris",
verify=True)
token = keycloak_openid.token(USER_EMAIL, USER_PASSWORD)
return token
# Permet de creer ou mettre a jour une fiche de métadonnées
# Fait appel a un service REST du catalogue
def getHeader():
return {'Authorization': 'Bearer ' + getToken()['access_token'], 'Accept': 'application/json'}
def loadData(jsonPath):
with open(jsonPath, 'r') as myfile:
data=myfile.read()
return json.loads(data)
def patchMetadata(jsonPath):
metadata = loadData(jsonPath)
if MODE == "update":
response = requests.post(URL_SERVICE + metadata['id'], json=metadata, headers=getHeader())
else:
response = requests.post(URL_SERVICE + metadata['campaignId'] + "/" + metadata['id'], json=metadata, headers=getHeader())
if response.status_code == 200:
print("OK")
else:
print(response.content.decode("utf-8"))
if __name__ == '__main__':
patchMetadata("./file.json")
file.json doit être un JSON valide de dataset, vous pouvez voir un exemple en cliquant sur le bouton « Show JSON » sous chaque dataset :

