Objetivo
Lib para executar chamadas em APIs com paginação, trazendo todos os registros de forma única.
Esta lib não possui métodos para realização dos passos de autenticação e do fluxo de oauth. Ela espera que a aplicação chamadora execute estes passos e informe qual o tipo de autenticação utilizada e o token / session gerado na chamada desta lib
Utilização
Requisitos
Instalar a lib pyjwt:
pip install -U pyjwt
Tipos de Autenticação Possíveis
-
OAuth1: Exemplos disponíveis no arquivo examples/oauth1_api_request_until_bool.py e oauth1_api_request_until_total.py
a. Executar o comando abaixo para gerar as chaves pública e privada:
openssl genrsa -out oauth.pem 1024openssl rsa -in oauth.pem -pubout -out oauth.pubb. Guardar a chave pública (oauth.pem) em uma das pastas do projeto
c. Obter o client ID e client secret no provedor da API.
d. Na classe que irá solicitar a autenticação na API, executar os passos para autenticação OAuth1. Consultar a documentação da API que será chamada para obter a forma correta de autenticação.
Segue exemplo de autenticação OAuth1 com a API do jira:
import os
import requests
from requests_oauthlib import OAuth1
from santodigital_request_full import RequestFull
# Autenticação
path = os.path.dirname(os.path.abspath(__file__));
rsa_private_key = None
with open(path + '/oauth.pem', 'r') as key_cert_file:
rsa_private_key = key_cert_file.read()
oauth = OAuth1(client_key = 'oauth-consumer',
rsa_key = rsa_private_key,
signature_method='RSA-SHA1',
resource_owner_key='******************************',
resource_owner_secret='******************************'
)
session = requests.Session()
session.auth = oauth
session.headers.update({'X-Atlassian-Token': 'nocheck'})
d. Preparar os parâmetros de consulta da API:
# Preparação dos parâmetros da requisição
url = 'https://santodigital.atlassian.net/rest/agile/latest/board'
auth = {
'type': 'OAuth',
'session': session
}
# Tipos de paginação:
# 1 - Executa a api utilizando como controle uma flag (boolean)
# 2 - Executa a api utilizando como controle variáveis de totais
# 3 - Executa a api utilizando como controle o número da página pesquisada e a quantidade de itens por página
paginate_type = 2
object_name = 'values'
params = {
'init': 'startAt',
'pageSize': 'maxResults',
'pageSizeNum': 100,
'total': 'total'
}
e. Executar a chamada da lib santodigitial_request_full:
# Execução da requisição
res = RequestFull().execute(url, paginate_type, auth, object_name, params)
-
OAUth2: Exemplo disponível no arquivo examples/oauth2_api_request.py
a. Obter a url de obtenção do token, o client ID e client secret no provedor da API. b. Na classe que irá solicitar a autenticação na API, executar os passos para autenticação OAuth2. Consultar a documentação da API que será chamada para obter a forma correta de autenticação.
Segue exemplo de autenticação OAuth2 com a API do bitbucket:
# Autenticação
client_id='**********************'
client_secret = '**********************'
token_url = 'https://bitbucket.org/site/oauth2/access_token'
client = BackendApplicationClient(client_id=client_id)
oauth = OAuth2Session(client=client)
token = oauth.fetch_token(token_url=token_url, client_id=client_id, client_secret=client_secret)
c. Preparar os parâmetros de consulta da API:
# Preparação dos parâmetros da requisição
url = 'https://api.bitbucket.org/2.0/repositories/santodigital'
auth = {
'type': 'OAuth2',
'token': token["access_token"]
}
# Tipos de paginação:
# 1 - Executa a api utilizando como controle uma flag (boolean)
# 2 - Executa a api utilizando como controle variáveis de totais
# 3 - Executa a api utilizando como controle o número da página pesquisada e a quantidade de itens por página
paginate_type = 3
object_name = 'values'
params = {
'pageField': 'page',
'pageLenField': 'pagelen'
}
d. Executar a chamada da lib santodigitial_request_full:
# Execução da requisição
res = RequestFull().execute(url, paginate_type, auth, object_name, params)
Release files for santodigital-request-full 1.0.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| santodigital-request-full-1.0.9.tar.gz | 4.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| santodigital_request_full-1.0.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.8 kB
Release files / santodigital-request-full-1.0.9.tar.gz
| Download URL | santodigital-request-full-1.0.9.tar.gz |
|---|---|
| Size | 4.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
59ae9879c4b7f660554ef8f79212b606b7c59740b993f449b3e99080f563241b
|
|
BLAKE2b-256 checksum How to use checksums |
239ded4c466494c4240e5f70d44385199284820d2d6b75c8b00f7e772fb81fc4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.6.9
|
Release files / santodigital_request_full-1.0.9-py3-none-any.whl
| Download URL | santodigital_request_full-1.0.9-py3-none-any.whl |
|---|---|
| Size | 6.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
707ee251431e74934d361b725ec08c0e3f1b74a42ddb9bc3c579988b9f3a1036
|
|
BLAKE2b-256 checksum How to use checksums |
9477da882facb2c4622f38603b0f92332734085e7a3083b22da768bbf71a34c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.6.9
|