API

Ce script Python définit un module qui simplifie l’interaction avec une API.

Le script comprend les principales sections suivantes :

  1. Une fonction décoratrice type_check() pour vérifier le type des arguments transmis à une fonction. Si les types des arguments ne correspondent pas aux types attendus, une TypeError est levée.

  2. La classe API, qui sert d’interface à une API. Elle offre les fonctionnalités suivantes :

    • Stocker l’URL de base, le jeton, et les ressources liées à une instance de l’API.

    • Créer dynamiquement des méthodes pour les demandes GET, POST, PUT et DELETE en fonction des métadonnées de la ressource.

    • Valider les métadonnées de la ressource (c’est-à-dire, le nom de la ressource, le verbe HTTP, la méthode, et les paramètres) en utilisant un schéma JSON défini avec le module jsonschema. Une erreur sera consignée si les métadonnées ne correspondent pas au schéma.

  3. La classe RequestResponse est utilisée pour stocker la réponse à une requête API. Elle inclut le code de statut de la requête et les données qui ont été renvoyées par celle-ci.

Voici une explication rapide des composants :

  • type_check : Il s’agit d’une fonction décoratrice qui effectue une vérification de type sur chaque argument transmis à une fonction. La fonction décoratrice peut être appliquée à n’importe quelle fonction pour imposer des contraintes de type sur les arguments.

  • API : C’est une classe de base abstraite qui représente une API générique. Elle met en œuvre la logique d’envoi de requêtes HTTP à une API et de traitement des réponses. Au sein de cette classe, les méthodes sont créées de manière dynamique pour les points de terminaison GET, POST, PUT et DELETE en fonction des métadonnées des ressources.

  • set_method : C’est une méthode de la classe API. Elle détermine l’opération appropriée de l’API (verbe HTTP, comme GET, POST, PUT, DELETE) pour chaque ressource définie et décore la méthode avec le décorateur type_check, qui impose la vérification du type sur les arguments de la méthode.

  • RequestResponse : Cette classe est utilisée pour stocker et accéder à la réponse d’une requête API. Elle comprend le code de statut HTTP et toutes les données renvoyées par la requête.

This module contains the API interface.

class api.API(url=None, test_url=None, token=None, test=False, ressources=None)

Bases : ABC

This class is the main class of the core module.

Paramètres:
  • url (str) – The main url for the API.

  • test_url (str) – The test url for the API.

  • token (str) – The token used for authentication.

  • test (bool, optional) – Optional flag to indicate whether to use the test url or the main url. Defaults to False.

  • ressources – The dictionary of resources and their corresponding methods and parameters.Ressources must

follow the following schema:
{
« ressource_name »: {

« verb »: « GET » | « POST » | « PUT » | « DELETE », « method »: method_name, « params »: [str, int, float, list, dict, bool, None]

}

}

_abc_impl = <_abc_data object>
static get_parameters(resource)

Get the parameters for the specified resource.

Paramètres:

resource – A dictionary representing the resource for which the parameters need to be retrieved.

Renvoie:

A list of parameters for the specified resource.

instances = []
process_resource(resource, resource_value)

Process a resource.

Paramètres:
  • resource – The resource name.

  • resource_value – The value of the resource.

Renvoie:

None.

process_sub_resource(super_resource_name, super_resource)

This method processes the sub-resource by iterating over the items of the super_resource dictionary. For each item, it retrieves the « method » value and performs error handling in case it is missing.

The method then calls the type_wrap method to wrap the resource value and obtains the parameters using the get_parameters method.

Finally, it sets the super_resource_name attribute of the type_wrap object to the method value. It also applies type checking using the type_check decorator to the method attribute.

Paramètres:
  • super_resource_name – The name of the sub-resource being processed.

  • super_resource – A dictionary containing the super resource and its values.

Renvoie:

None

set_method()

Process the resources and sub-resources.

Renvoie:

None

type_wrap(ressource) type

Wrapper method for HTTP methods based on the verb associated with the given resource.

Paramètres:

ressource (dict) – The resource for which the HTTP method is being wrapped.

Renvoie:

The wrapped HTTP method.

Lève:

ValueError – If the verb associated with the resource is invalid.

class api.RequestResponse(status_code, data)

Bases : object

This class is used to store the response from an API request.

Paramètres:
  • status_code (int) – The status code of the response.

  • data (dict) – The data in the response.

property data

This is the data property.

property status_code

This is the status code property.

api.type_check(*type_args, **type_kwargs) callable

Decorator that checks the types of the arguments passed to a function.

Paramètres:
  • type_args – Positional arguments represent the types of the function arguments.

  • type_kwargs – Keyword arguments representing the types of the function keyword arguments.

Renvoie:

Decorator function that performs the type checking.