# -*- coding: utf-8 -*- import pycurl from io import BytesIO import ast from Crypto.Cipher import AES import binascii from base64 import b64encode, b64decode import json login="admin.api" key="d87b5ca7c5fdf827aa35914e966bf768" ################### ## Test de lecture ################### buffer = BytesIO() c_getProj = pycurl.Curl() c_getProj.setopt(c_getProj.URL, 'http://localhost/projeqtor/api/Project/all') c_getProj.setopt(c_getProj.HTTPAUTH , pycurl.HTTPAUTH_BASIC) c_getProj.setopt(c_getProj.USERPWD , "%s:%s"%(login,key)) #c_getProj.setopt(c_getProj.SSL_VERIFYPEER, False) c_getProj.setopt(pycurl.WRITEDATA, buffer) c_getProj.perform() c_getProj.close() body = ast.literal_eval(buffer.getvalue().decode("UTF-8")) # Juste pour simuler une sélection projetRetenu = [x for x in body["items"] if x["nameStatus"] == 'qualified'][0] print (projetRetenu) ################### ## Test d’écriture ################### # Définition d’une activité à créer activite = {"name" : "Activité de test", "idActivityType" : "26", "idProject" : projetRetenu["id"], "idStatus" : "1", "idResource" : "3", "creationDate" : "2020-12-24", 'idActivityPlanningMode': '1'} c_setAct = pycurl.Curl() c_setAct.setopt(c_setAct.URL, 'http://localhost/projeqtor/api/Activity') c_setAct.setopt(c_setAct.HTTPAUTH , pycurl.HTTPAUTH_BASIC) c_setAct.setopt(c_setAct.USERPWD , "%s:%s"%(login,key)) print("-----------------------------------") res = json.dumps(activite) print("Chaine json : " + res) key_b=binascii.a2b_hex(key) cipher = AES.new(key_b, AES.MODE_CTR, nonce=binascii.a2b_hex("CAFEBEEFCAFEBEEF")) ct_bytes = cipher.encrypt(res.encode("utf-8")) ciphertext = b64encode(cipher.nonce + ct_bytes) print("Texte encrypté : " + str(ciphertext)) print("Texte b64decode :" + str(b64decode(ciphertext))) c_setAct.setopt(c_setAct.CUSTOMREQUEST, "POST") c_setAct.setopt(c_setAct.POSTFIELDS, ciphertext) c_setAct.perform() c_setAct.close()