Skip to main content

A python package that simplifies the process of making API requests to 42's API.

Project description

ptapi42

A python package that simplifies the process of making API requests to 42's API. With this package, developers can quickly and easily access the 42 API's functionality, without having to deal with the complexities of working directly with it.

Acknowledgments

This API is highly influenced by dropi, which is available as a package as well. However, with 42 API's updates from earlier this year, dropi became obsolete, or difficult to use, as it isn't being maintained. As a result, we decided to create a new API based on dropi, but with some differences.

Differences from dropi

While our API is heavily influenced by dropi, it includes some extra features:

  • Configurable Logger: We've implemented a logging system using the logging library, which provides you with more control over the messages being logged. You can use it to debug and monitor your application. The logger's level can be set to different levels (DEBUG, INFO, WARNING, ERROR, CRITICAL) to filter out the messages that aren't relevant to your needs.

  • Exception Raising: You can configure the API to raise exceptions whenever there's an error. This way, you'll be able to handle the errors in your own way, rather than having the API fail silently.

  • Rate Limiting: You can configure the number of requests per second you want to do to the API. This can help you avoid reaching the API's rate limit and getting blocked.

  • Maintenance and New Features: This project is actively maintained, so you can expect it to be updated with new features and fixes when needed. We're also working on adding a better mass_request function to simplify requests that involve multiple API endpoints.

Support

ptapi42 is maintained by the 42 Portugal association, which provides resources and support to improve the API and address any issues. If you have any questions or feedback, feel free to reach out to us in issues.

How to install (in prog)

pip install ptapi42

How To Use Api

from ptapi42 import Api42, Api42Request

api: Api42 = Api42()

# Making a simple GET request
campus_id = 'porto'
params: dict = {
	'filter': {
		'pool_month': 'february',
		'pool_year': '2023'
	}
}
url = f'campus/{campus_id}/users'
users = api.get(url=url, params=params)

# Making a mass_request
reqs: list = []
for user in users:
	api_req = Api42Request(url=f"users/{user['id']}")
	reqs.append(api_req)
user_info = api.mass_request('GET', reqs)

Api Reference

How To Configure Api

The Api has some configurations.

from ptapi42 import Api42

api: Api42 = Api42()

Configure if you want Api42 to raise exceptions

api.raises = True

Configure the max number of requests per second

api.requests_per_second = 8

Configure Api log level

api.log_lvl = 'DEBUG'
api.log_lvl = 'INFO'
api.log_lvl = 'WARNING'
api.log_lvl = 'ERROR'
api.log_lvl = 'FATAL'

Running Tests (dev)

  1. Cloning the repository and switching to the testing branch
git clone git@github.com:42-Portugal/ptapi42.git
cd ptapi42
  1. Create a python environment and install the required packages
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
  1. Run the tests
python tests.py
  1. Check for test coverage
coverage run tests.py
coverage report
Name                     Stmts   Miss  Cover
--------------------------------------------
ptapi42/__init__.py          1      0   100%
ptapi42/api42.py           219     29    87%
ptapi42/api42_token.py      26      5    81%
ptapi42/config.py           14      1    93%
tests.py                   163      0   100%
--------------------------------------------
TOTAL                      423     35    92%

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

ptapi42-1.0.3.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

ptapi42-1.0.3-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file ptapi42-1.0.3.tar.gz.

File metadata

  • Download URL: ptapi42-1.0.3.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for ptapi42-1.0.3.tar.gz
Algorithm Hash digest
SHA256 2be3fc4cd69b56759ef00150140b86390f09a9f27c3e9e8cec76f5ca32c37909
MD5 f46304928301e43131cae48b38011203
BLAKE2b-256 e71a7e8f9f78fb2f487155e4e380baed4c4c395b02104fb6efc56e40708351ec

See more details on using hashes here.

File details

Details for the file ptapi42-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: ptapi42-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for ptapi42-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e9e849a03b8625a1bbebc0b7cf0fcbb6bc4c2ed3b8612ce01d1d64e86f02d4ab
MD5 f6628cfd07423bb6e5824b882abdd1d7
BLAKE2b-256 2ffda2504c1df25f266f6845d117e094e4d369fb6a5c3fa7f47764e3443c02d9

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