Skip to main content

This is an abstract class which purpose is to interface any Rest API using python's standard functionnalities.

Project description

Paradi

Python Abstract Restful Api Dialoger Interface

This is an abstract class which purpose is to interface any Rest API using python's standard functionnalities.
It is meant to be very simple to allow a flexible implementation of the many ways to interact with any API, especially regarding the many different authentication methods.
You should also put in the child class any code that would parse the requests kwargs or read the output data format of the API and turn it into something more readable than a json (like a pandas dataframe).

Example Implementation

The API is hosted at https://exampleapiurl.com.
To log in, you need to provide a username and a password in a post request at https://exampleapiurl.com/login which will return you a temporary connection token in the response.
To log out, you need to do a get request at https://exampleapiurl.com/logout with your credentials.
For any other request, to get your private data at https://exampleapiurl.com/values you need to provide your credentials in the header.

class Dummy(Paradi):
    def __init__(self):
        super().__init__(entry=os.getenv('API_ENDPOINT')",
                         login_uri="login",
                         logout_uri="logout",
                         login_kwargs={"headers": {"Content-Type": r"application/x-www-form-urlencoded"},
                                       "data": {"username":os.getenv("API_USERNAME"),
                                                "password":os.getenv("API_PASSWORD")}})
        
        def _save_auth(self,
                       response: requests.Response
                       ):
            self.access_token = json.loads(response.text)['access_token']
            self.token_type = json.loads(response.text)['token_type']
            self.session.headers.update({'Authorization': f'{self.token_type} {self.access_token}'})

        def get_raw_data(self):
            response = self.get("values")
            return pd.json_normalize(json.loads(response.text), "data")

To use your newly made class you need to use the with syntax provided by python:

with Dummy() as dummy:
    raw_data = dummy.get_raw_data()

This will ensure that the connection with your API is closed as soon as you are finished with the data recovery.

Project details


Download files

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

Source Distribution

paradi-0.1.3.post1.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

paradi-0.1.3.post1-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file paradi-0.1.3.post1.tar.gz.

File metadata

  • Download URL: paradi-0.1.3.post1.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for paradi-0.1.3.post1.tar.gz
Algorithm Hash digest
SHA256 61e4d82b4211401af8d30daaa04cd9e568f21313f07eeea025e6d839d65f2a56
MD5 0811dce863e597f5bc4a90c024af7085
BLAKE2b-256 63058d3114ab49a49f492d8a4b58fc150198998e5d46f81193a4af6ae82747d3

See more details on using hashes here.

File details

Details for the file paradi-0.1.3.post1-py3-none-any.whl.

File metadata

File hashes

Hashes for paradi-0.1.3.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 98c2bc70f1d60185722126785a3d6b0df9f57e62e3c7ee4e5fdee7501206433b
MD5 f817069eea8fac139679d6d1337370c7
BLAKE2b-256 6c0cbbff2007f76adffb4a935047a89109b3f7b3ccc80ab346c4d6b6cce56e01

See more details on using hashes here.

Supported by

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