Commit 0bb74c98 authored by Michael Nauge's avatar Michael Nauge
Browse files

Update nklAPI_Datas.py

parent 1ff5ff59
......@@ -156,7 +156,162 @@ def put_datas(nklTarget, identifier, dictVals):
def delete_datas(nklTarget, identifier):
"""
La suppression d'une donnée est autorisée uniquement si la donnée n'est pas publiée
Parameters
nklTarget : OBJ
une instance d'un objet NklTarget permettant de choisir nakala_prod ou nakala_test
identifier : STR
un DATA identifier nakala
Returns
-------
NklResponse : OBJ
une instance d'un objet NklResponse
- en cas de problème reseau ou de message d'erreur du serveur nakala
l'objet NklResponse.isSuccess=False et le détails de l'erreur en version textuel
sera dans NklResponse.message
- en cas de réussite de la requete
l'objet NklResponse.isSuccess=True et
puisqu'il n'y a pas de retour json en cas de réussite
NklResponse.dictVals = {}
"""
url = nklTarget.API_URL+"/datas/"+identifier
APIheaders = {}
# on gère le cas où il n'y a pas de API_KEY
# ce qui va poser problème pour le serveur nakala
if nklTarget.apiKey_isEmpty()==False:
APIheaders = {"X-API-KEY": nklTarget.API_KEY_NKL}
# création d'une instance d'un objet NklResponse à retourner
nklR = NklResponse()
try :
response = requests.delete(url, headers=APIheaders)
# on récupère le code
nklR.code = response.status_code
# 204 le serveur a bien supprimé la data
if response.status_code == 204:
nklR.isSuccess = True
nklR.message="Le fichier a été supprimé"
# Il n'y a pas d'objet json retournée à convertir en dictionnaire python
# on retourne l'objet NklResponse maintenant rempli
return nklR
else:
dicError = json.loads(response.text)
nklR.message=dicError['message']
except requests.exceptions.RequestException as e:
nklR.code=-1
nklR.message=e
#on retourne l'objet NklResponse avec erreur (de nakala ou de connexion reseau)
return nklR
def post_datas(nklTarget, data):
"""
Permet de déposer une donnée dans Nakala
Les fichiers associés à la donnée sont à déposer avant via POST /uploads
afin de connaitre leurs fileIdentifier SHA1
Parameters
nklTarget : OBJ
une instance d'un objet NklTarget permettant de choisir nakala_prod ou nakala_test
data : DICT
une instance d'un dictionaire python (qui sera converti en json) contenant les
clé-valeurs compatibles avec nakala
Pour plus d'informations sur les valeurs possibles à mettre
dans le dictionnaire :
https://apitest.nakala.fr/doc#operations-datas-post_datas
ex : {
"status": "published",
"metas": [
{
"value": "string",
"lang": "string",
"typeUri": "string",
"propertyUri": "string"
}
],
"files": [
{
"sha1": "string",
"description": "string",
"embargoed": "string"
}
],
"collectionsIds": [
"string"
],
"rights": [
{
"id": "string",
"role": "string"
}
]
}
"""
url = nklTarget.API_URL+"/datas"
APIheaders = {}
# on gère le cas où il n'y a pas de API_KEY ce qui posera problème au server
# mais il nous le fera savoir !
if nklTarget.apiKey_isEmpty()==False:
APIheaders = {"X-API-KEY": nklTarget.API_KEY_NKL,"accept": "application/json", "Content-Type": "application/json"}
# création d'une instance d'un objet NklResponse à retourner
nklR = NklResponse()
try :
response = requests.post(url, data =json.dumps(data), headers=APIheaders)
# on récupère le code
nklR.code = response.status_code
# 201 le serveur a bien répondu
if response.status_code == 201:
nklR.isSuccess = True
nklR.message="Enregistrement de la donnée"
# on converti l'objet json retournée en dictionnaire python
nklR.dictVals = json.loads(response.text)
# on retourne l'objet NklResponse maintenant entièrement rempli
return nklR
else:
dicError = json.loads(response.text)
nklR.message=dicError['message']
except requests.exceptions.RequestException as e:
nklR.code=-1
nklR.message=e
#on retourne l'objet NklResponse avec erreur (de nakala ou de connexion reseau)
return nklR
......@@ -332,9 +487,8 @@ def delete_datas_uploads(nklTarget, fileIdentifier):
- en cas de réussite de la requete
l'objet NklResponse.isSuccess=True et
les métadonnées reçu seront dans
NklResponse.dictVals : un dictionnaire contenant les metadatas obtenus depuis la reponse json du server
pusiqu'il n'y a pas de retour json en cas de réussite
NklResponse.dictVals = {}
"""
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment