"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.git
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)
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")
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
File details
Details for the file scrippy-api-1.1.82.tar.gz
.
File metadata
- Download URL: scrippy-api-1.1.82.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4cd0d8199c2c5284b7eac9938d5034b6974bd65de221d3c652d111342f37cef1 |
|
MD5 | 42d08ede026ffe7f02f99774a374e671 |
|
BLAKE2b-256 | d89ef894e9f67f7195b710d160f44de092e52254badabb3b708dd8dad72d6bec |
File details
Details for the file scrippy_api-1.1.82-py3-none-any.whl
.
File metadata
- Download URL: scrippy_api-1.1.82-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9289b398f2b1075c60fa1bc30c0f865f8015b702e78600dbfda81f9fdb2af101 |
|
MD5 | ad2882f11a9468a70efcd9849ed2e68a |
|
BLAKE2b-256 | 9d5b7058d003fc606c2c464a7b6fa870f5121f2cdee5d7ab2b6239bc1869743b |