# -*-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)