script python pour ajouter un membre par API
This commit is contained in:
commit
6c9ecda599
|
|
@ -0,0 +1,100 @@
|
||||||
|
# -*-coding:Latin-1 -*
|
||||||
|
#
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import requests
|
||||||
|
import jwt # pip install pyjwt
|
||||||
|
from datetime import datetime as date
|
||||||
|
import os
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
# Définir l'URL de l'API Ghost
|
||||||
|
GHOST_API_URL = os.getenv('GHOST_API_URL')
|
||||||
|
|
||||||
|
# Admin API key goes here
|
||||||
|
GHOST_ADMIN_KEY = os.getenv('GHOST_ADMIN_KEY')
|
||||||
|
|
||||||
|
###################################
|
||||||
|
## Génération du token JWT
|
||||||
|
###################################
|
||||||
|
|
||||||
|
# Split the key into ID and SECRET
|
||||||
|
id, secret = GHOST_ADMIN_KEY.split(':')
|
||||||
|
|
||||||
|
# Prepare header and payload
|
||||||
|
iat = int(date.now().timestamp())
|
||||||
|
|
||||||
|
header = {'alg': 'HS256', 'typ': 'JWT', 'kid': id}
|
||||||
|
payload = {
|
||||||
|
'iat': iat,
|
||||||
|
'exp': iat + 5 * 60,
|
||||||
|
'aud': '/admin/'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create the token (including decoding secret)
|
||||||
|
token = jwt.encode(payload, bytes.fromhex(secret), algorithm='HS256', headers=header)
|
||||||
|
|
||||||
|
print('JWT token: ' + token)
|
||||||
|
|
||||||
|
###################################
|
||||||
|
## arguments python
|
||||||
|
###################################
|
||||||
|
|
||||||
|
# Définir et parser les arguments de ligne de commande
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("--email", required=True)
|
||||||
|
parser.add_argument("--name", required=True)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
###################################
|
||||||
|
## Appels de l'API Ghost
|
||||||
|
###################################
|
||||||
|
|
||||||
|
# Définir les critères de filtrage
|
||||||
|
filter = {
|
||||||
|
"filter": "email:"+args.email
|
||||||
|
}
|
||||||
|
headers = {'Authorization': 'Ghost {}'.format(token)}
|
||||||
|
|
||||||
|
# Récupérer la liste des membres de l'instance Ghost
|
||||||
|
response = requests.get(GHOST_API_URL + "/ghost/api/admin/members/", params=filter, headers=headers)
|
||||||
|
|
||||||
|
# Vérifier que la réponse de l'API est valide
|
||||||
|
if response.status_code == 200:
|
||||||
|
# Décoder la réponse JSON
|
||||||
|
j = response.json()
|
||||||
|
members = j['members']
|
||||||
|
|
||||||
|
# Si aucun membre n'a été trouvé avec l'adresse e-mail spécifiée
|
||||||
|
if len(members) == 0:
|
||||||
|
# Définir les informations du nouveau membre
|
||||||
|
member_data = {
|
||||||
|
"members": [
|
||||||
|
{
|
||||||
|
"email": args.email,
|
||||||
|
"name": args.name,
|
||||||
|
"labels": ["TiBillet", "import " + date.today().strftime("%d/%m/%Y")]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ajouter le nouveau membre à l'instance Ghost
|
||||||
|
response = requests.post(GHOST_API_URL + "/ghost/api/admin/members/", json=member_data, headers=headers)
|
||||||
|
|
||||||
|
# Vérifier que la réponse de l'API est valide
|
||||||
|
if response.status_code == 201:
|
||||||
|
# Décoder la réponse JSON
|
||||||
|
j = response.json()
|
||||||
|
members = j['members']
|
||||||
|
member = members[0]
|
||||||
|
print("Le nouveau membre a été créé avec succès :", member["email"])
|
||||||
|
else:
|
||||||
|
print("Erreur lors de la création du nouveau membre :", response.text)
|
||||||
|
else:
|
||||||
|
# Afficher la liste des membres
|
||||||
|
for member in members:
|
||||||
|
print(member['email'])
|
||||||
|
else:
|
||||||
|
print("Erreur lors de la récupération des membres :", response.text)
|
||||||
Loading…
Reference in New Issue