Skip to main content

API-wrapper pour récupérer des données liées à Nation

Project description

nsarchive

nsarchive est un module Python pour la gestion des entités (utilisateurs et organisations) à l'aide de la base de données Deta. Ce module permet de créer, récupérer, sauvegarder et gérer des entités et leurs attributs spécifiques.

Pré-requis

Listes des choses à avoir afin de pouvoir utiliser le module correctement:

  • Python 3.10 ou supérieur
  • Un token Deta, donné par un administrateur ou pour votre collection personnelle
  • Un bon capuccino, pour commencer la programmation en bons termes

Note: Il vous faudra un token différent pour accéder aux différentes parties de la base de données. Vos tokens n'expireront pas à moins que l'ordre en aura été donné

Installation

Vous pouvez installer ce module via pip :

pip install nsarchive

Utilisation

Importation et Initialisation

Pour utiliser nsarchive, commencez par importer le module et initialiser une instance d'EntityInstance avec votre token Deta.

from nsarchive import EntityInstance

# Remplacez 'your_deta_token' par votre véritable token Deta
entity_instance = EntityInstance(token = 'your_deta_token')

Récupérer une Entité

Vous pouvez récupérer une entité (Utilisateur ou Organisation) à l'aide de son ID.

entity = entity_instance.get_entity(id = 'entity_id')
print(entity.name)

ATTENTION: Les entités sont identifiées sous une forme hexadécimale. Pour les avoir, vous devez convertir leur ID Discord en hexadécimale puis enlever le préfixe 0x.

Pour les organisations, l'ID Discord correspondra à la formule suivante: ID fondateur // 100000.

N'oubliez pas de toujours utiliser un str dans les ID pour interagir avec la base de données.

Sauvegarder une Entité

Après avoir modifié une entité, vous pouvez la sauvegarder dans la base de données.

entity.rename("Nouveau Nom")
entity_instance.save_entity(entity)

Rechercher des Entités

Vous pouvez rechercher des entités avec des critères spécifiques.

entities = entity_instance.fetch_entity(query = {'name': 'Alice'})
for entity in entities:
    print(entity['name'])

Gérer les Organisations

Les organisations peuvent avoir des membres et des certifications. Voici comment ajouter un membre ou une certification.

organization = entity_instance.get_entity(id = 'org_id')
user = entity_instance.get_entity(id = 'user_id')

# Ajouter un membre
organization.add_member(user)
entity_instance.save_entity(organization)

# Ajouter une certification
organization.add_certification('Certification Example')
entity_instance.save_entity(organization)

Les certifications pourront être utilisées pour vérifier l'officialité d'une organisation, mais également pour déterminer si l'on peut accorder (ou non) des permissions à ses membres.

Exemples de Classes

Entity

Classe parente des classes User et Organization, elle est utilisée lorsque le module ne peut pas déterminer l'appartenance d'une identité à l'une de ces deux classes ou à l'autre.

from nsarchive.cls.entities import Entity

entity = Entity(id='entity_id')
entity.rename('New Name')
entity.add_xp(100)
print(entity.get_level())

User

from nsarchive.cls.entities import User

user = User(id = 'user_id')
user.edit_boost(name = 'admin', multiplier = 5) # Négliger le paramètre <multiplier> ou le fixer à un nombre négatif reviendrait à supprimer le boost.
print(user.boosts)

Note: Lorsqu'on ajoute de l'expérience à un utilisateur via la méthode add_xp, le nombre de points ajoutés est automatiquement multiplié par le bonus le plus important dont l'utilisateur bénéficie.

Organization

from nsarchive.cls.entities import Organization

organization = Organization(id = 'org_id')
organization.set_owner(user)
organization.add_member(user)
print(organization.members)

Note: Les attributs owner et members sont indépendants. L'owner peut être n'importe quelle personne faisant ou non partie des members.

Gestion des Exceptions

nsarchive fournit des exceptions spécifiques pour gérer les erreurs courantes.

NameTooLongError

Lancé lorsque le nom d'une entité dépasse la longueur maximale autorisée (32 caractères).

from nsarchive.cls.exceptions import NameTooLongError

try:
    entity.rename('Ce nom est long, voire même très long, je dirais même extrêmement long')
except NameTooLongError as e:
    print(e)

EntityTypeError

Lancé lorsque le type d'entité est incorrect. Vous ne devriez normalement pas la rencontrer en utilisant le module, mais elle pourrait vous être utile.

from nsarchive.cls.exceptions import EntityTypeError

try:
    # Code qui peut lancer une EntityTypeError
except EntityTypeError as e:
    print(e)

License

Ce projet est sous licence GNU GPL-3.0 - Voir le fichier LICENSE pour plus de détails.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nsarchive-2.0.0a4.tar.gz (79.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nsarchive-2.0.0a4-py3-none-any.whl (81.3 kB view details)

Uploaded Python 3

File details

Details for the file nsarchive-2.0.0a4.tar.gz.

File metadata

  • Download URL: nsarchive-2.0.0a4.tar.gz
  • Upload date:
  • Size: 79.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for nsarchive-2.0.0a4.tar.gz
Algorithm Hash digest
SHA256 2762915479d0c2e47bfe256ea8fb2fb1616d194d4faf30c5ac88c6934f0b4eb8
MD5 1c8d4adcf63f47537bbfd95d813ecdba
BLAKE2b-256 ca532168e9869f1e78ea44f694b18adae48f4b637b197a953610b43d2b608ffb

See more details on using hashes here.

File details

Details for the file nsarchive-2.0.0a4-py3-none-any.whl.

File metadata

  • Download URL: nsarchive-2.0.0a4-py3-none-any.whl
  • Upload date:
  • Size: 81.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for nsarchive-2.0.0a4-py3-none-any.whl
Algorithm Hash digest
SHA256 0829b27f91f696cc98a21238da43b004ce51d6b2b5595c1bcfc6484cb0ed928d
MD5 4b0a158bb83055309bb9dd15b93673cc
BLAKE2b-256 eaa5ef1732cb450ca33baa7ed9001d1f3560754471a4867ac93b27fb4c7036fa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page