Skip to main content

"Fonctions d'utilisation d'API ReST."

Project description

Build Status License Language

Scrippy, my scrangourou friend

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


Download files

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

Source Distribution

scrippy_api-1.1.87.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scrippy_api-1.1.87-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

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

Hashes for scrippy_api-1.1.87.tar.gz
Algorithm Hash digest
SHA256 0974b8e7fa0d53d093fff24def91f6a50b823b35a6920e2da6b91f52b1e4b8c4
MD5 4f68671ab16f5df19e0464988ea14acb
BLAKE2b-256 dc7cc50f7977f42b35cc232d17ba9019523b87b6b4636db7dc398929caff6885

See more details on using hashes here.

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

Hashes for scrippy_api-1.1.87-py3-none-any.whl
Algorithm Hash digest
SHA256 e6a0bde67acdb12ce8c2a09d51b667300c502610e8d5bae891091101f75a6951
MD5 4e4bb8197ced0b2f4e00fa748aaa5a44
BLAKE2b-256 48f8d678b2d2ef30c5640c66eb39a42a982080bb12a6f8322ce0e17b277fea88

See more details on using hashes here.

Supported by

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