Package: santodigital-request-full
ObjetivoLib 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 libUtilizaçãoRequisitosInstalar a lib pyjwt:pip install -U pyjwtTipos de Autenticação PossíveisOAuth1:
Exemplos disponíveis no arquivo examples/oauth1_api_request_until_bool.py e oauth1_api_request_until_total.pya. 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 projetoc. 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:importosimportrequestsfromrequests_oauthlibimportOAuth1fromsantodigital_request_fullimportRequestFull# Autenticaçãopath=os.path.dirname(os.path.abspath(__file__));rsa_private_key=Nonewithopen(path+'/oauth.pem','r')askey_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=oauthsession.headers.update({'X-Atlassian-Token':'nocheck'})d. Preparar os parâmetros de consulta da API:# Preparação dos parâmetros da requisiçãourl='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áginapaginate_type=2object_name='values'params={'init':'startAt','pageSize':'maxResults','pageSizeNum':100,'total':'total'}e. Executar a chamada da lib santodigitial_request_full:# Execução da requisiçãores=RequestFull().execute(url,paginate_type,auth,object_name,params)OAUth2:
Exemplo disponível no arquivo examples/oauth2_api_request.pya. 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çãoclient_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çãourl='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áginapaginate_type=3object_name='values'params={'pageField':'page','pageLenField':'pagelen'}d. Executar a chamada da lib santodigitial_request_full:# Execução da requisiçãores=RequestFull().execute(url,paginate_type,auth,object_name,params)