"Fonctions d'utilisation d'API ReST."
Project description
scrippy_api
REST API client for the Scrippy framework (https://codeberg.org/scrippy).
Requirements
Python modules
Required modules list
The modules listed below will be automatically installed.
- requests
- PyYAML
- jsonschema
Installation
Manual
git clone https://codeberg.org/scrippy/scrippy-api.git
cd scrippy-api
python -m pip install -r requirements.txt
make install
With pip
pip install scrippy-api
Usage
The scrippy_api.api module provides the Client object that allows querying any REST API uniformly using the unique method Client.request().
The Client object has a single method Client.request() that accepts many parameters, most of which are optional. However, some optional parameters can become mandatory depending on the HTTP method used for the request and the use case. YMMV.
The Client.request() method always returns a requests.Response object (see documentation) that must be handled by the script.
Both parameter keys and values will be automatically encoded when necessary.
In case of error (HTTP code != 200), the client exits with an 1 return code and the error is logged as critical.
This behavior can be inhibited during the client instantiation by setting the exit_on_error parameter to False:
from scrippy_api.api import Client
client = Client(exit_on_error=False)
In this case, any encountered errors will appear in the log file as warning.
The verification of the remote server SSL certificate can be disabled by passing the optional verify parameter of the Client object to False:
from scrippy_api.api import Client
client = Client(exit_on_error=True, verify=False)
Note: Disabling certificate verification is discouraged because it presents real security risks.
Parameters
Parameters of the request method of the Client object:
| Parameter | Type | Description | Default value |
|---|---|---|---|
params |
Dictionary | Applicable to all HTTP methods. Each key/value pair will be concatenated to the URL. | None |
cookies |
Dictionary | Cookies to be sent with the request | None |
timeout |
integer | Waiting time before interrupting the connection | None |
headers |
Dictionary | Headers to be sent with the request | None |
proxies |
List | List of proxy servers to use for the connection | None |
auth |
Tuple | Username and password for BASIC AUTH authentication | |
data |
Dictionary | Data to be sent with the request. Not applicable with GET method |
None |
json |
Dictionary | Data in JSON format to be sent with the request. Not applicable with GET method. Use when data and file are not specified |
None |
files |
Dictionary | Files to be uploaded in multipart. The dictionary takes the form {<file name>: <file>} |
None |
Implemented HTTP methods:
| HTTP method | Description |
|---|---|
GET |
Retrieve a resource or list of resource URIs |
POST |
Create a resource |
PUT |
Replace or create a resource |
PATCH |
Update a resource or create it if non-existent |
DELETE |
Delete a resource |
Examples
URL with Parameters
from scrippy_api.api import Client
params = {"name": "Luiggi Vercotti", "password": "dead/parrot"}
client = Client()
response = client.request(method="GET", url="https://montypython.org/user", params=params)
The called URL will be:
https://montypython.org/user?name=Luiggi+Vercotti&password=dead%2Fparrot
Basic Authentication (BASIC AUTH)
Basic authentication with the following credentials:
- Username:
Luiggi Vercotti - Password:
dead/parrot
from scrippy_api.api import Client
auth = ("Luiggi Vercotti", "dead/parrot")
client = Client()
response = client.request(method="POST", url="https://montypython.org", auth=auth)
Sending Data
Creating the Luiggi Vercotti user with the password dead/parrot:
from scrippy_api.api import Client
data = {"name": "Luiggi Vercotti", "password": "dead/parrot"}
client = Client()
response = client.request(method="POST", url="https://montypython.org/user", data=data)
File Upload
Upload of the two files ./images/dead_parrot.png and ./images/flying_circus.mp4:
from scrippy_api.api import Client
files = {"dead_parrot.png": open("./images/dead_parrot.png", "rb"), "flying_circus.mp4": open("./images/flying_circus.mp4", "rb")}
client = Client()
response = client.request(method="POST", url="https://montypython.org/upload", data=data)
All POST parameters are available for upload.
Resource Modification
Replaces the password of the Luiggi Vercotti user
from scrippy_api.api import Client
auth = ("Luiggi Vercotti", "dead/parrot")
data = {"password": "live/parrot"}
params = {"name": "Luiggi Vercotti"}
client = Client()
response = client.request(method="PATCH",
url="https://montypython.org/user",
params=params,
data=data)
File Download
from scrippy_api.api import Client
url = "https://monthy.python/inquisition.zip"
local_dir = "/home/luiggi.vercotti"
local_filename = "spanish_inquisition.zip"
client = Client()
if client.download(url, local_dir, local_filename):
print("No one expects the Spanish inquisition")
All GET parameters are available for download.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scrippy_api-1.1.87.tar.gz.
File metadata
- Download URL: scrippy_api-1.1.87.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0974b8e7fa0d53d093fff24def91f6a50b823b35a6920e2da6b91f52b1e4b8c4
|
|
| MD5 |
4f68671ab16f5df19e0464988ea14acb
|
|
| BLAKE2b-256 |
dc7cc50f7977f42b35cc232d17ba9019523b87b6b4636db7dc398929caff6885
|
File details
Details for the file scrippy_api-1.1.87-py3-none-any.whl.
File metadata
- Download URL: scrippy_api-1.1.87-py3-none-any.whl
- Upload date:
- Size: 8.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6a0bde67acdb12ce8c2a09d51b667300c502610e8d5bae891091101f75a6951
|
|
| MD5 |
4e4bb8197ced0b2f4e00fa748aaa5a44
|
|
| BLAKE2b-256 |
48f8d678b2d2ef30c5640c66eb39a42a982080bb12a6f8322ce0e17b277fea88
|