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.6.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

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

santodigital_request_full-1.0.6-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: santodigital-request-full-1.0.6.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.6.9

File hashes

Hashes for santodigital-request-full-1.0.6.tar.gz
Algorithm Hash digest
SHA256 a8cd74af96eb9681b95c11d8af26d084813bf8ea9d643b5369e6b87ab3658102
MD5 526ad61b3e71a1cf2188d7e2eab17579
BLAKE2b-256 3287e2f793c7bb874ccc4873bb8f0a79c33ada67c767fa4109b50e6fbae19757

See more details on using hashes here.

File details

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

File metadata

  • Download URL: santodigital_request_full-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 6.8 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/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.6.9

File hashes

Hashes for santodigital_request_full-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 5ebe5a17f24fbc727e000582efdf0cb6321d54094a370e33bf357eb4a1ea392e
MD5 c5e7c0e838631a2b6720cfdbf14d7304
BLAKE2b-256 10eeea637ddd90d7b861092979ad15055b1e58b25f866d0ad00294f0a4f91e2a

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