Skip to main content

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


Download files

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

Source Distribution

santodigital-request-full-1.0.9.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

santodigital_request_full-1.0.9-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file santodigital-request-full-1.0.9.tar.gz.

File metadata

  • Download URL: santodigital-request-full-1.0.9.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for santodigital-request-full-1.0.9.tar.gz
Algorithm Hash digest
SHA256 59ae9879c4b7f660554ef8f79212b606b7c59740b993f449b3e99080f563241b
MD5 b9db0bea949e40c6f999e1e5a6bed5e8
BLAKE2b-256 239ded4c466494c4240e5f70d44385199284820d2d6b75c8b00f7e772fb81fc4

See more details on using hashes here.

File details

Details for the file santodigital_request_full-1.0.9-py3-none-any.whl.

File metadata

  • Download URL: santodigital_request_full-1.0.9-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using 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

File hashes

Hashes for santodigital_request_full-1.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 707ee251431e74934d361b725ec08c0e3f1b74a42ddb9bc3c579988b9f3a1036
MD5 4329301822c6542980fe6c01e49e89a1
BLAKE2b-256 9477da882facb2c4622f38603b0f92332734085e7a3083b22da768bbf71a34c3

See more details on using hashes here.

Supported by

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