Http request library for paginated response api
Project description
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 1024
openssl rsa -in oauth.pem -pubout -out oauth.pub
b. 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)
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
Hashes for santodigital-request-full-1.0.6.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8cd74af96eb9681b95c11d8af26d084813bf8ea9d643b5369e6b87ab3658102 |
|
MD5 | 526ad61b3e71a1cf2188d7e2eab17579 |
|
BLAKE2b-256 | 3287e2f793c7bb874ccc4873bb8f0a79c33ada67c767fa4109b50e6fbae19757 |
Hashes for santodigital_request_full-1.0.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ebe5a17f24fbc727e000582efdf0cb6321d54094a370e33bf357eb4a1ea392e |
|
MD5 | c5e7c0e838631a2b6720cfdbf14d7304 |
|
BLAKE2b-256 | 10eeea637ddd90d7b861092979ad15055b1e58b25f866d0ad00294f0a4f91e2a |