Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

santodigital-request-full

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

santodigital-request-full

Http request library for paginated response api

  • 1.0.9
  • PyPI
  • Socket score

Maintainers
1

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)

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc