lbxtoolkit 2.2.8__tar.gz → 2.2.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lbxtoolkit
3
- Version: 2.2.8
3
+ Version: 2.2.9
4
4
  Summary:
5
5
  Author: Cristiano P. Ferrari
6
6
  Author-email: cristiano.ferrari@lbx.com.br
@@ -60,7 +60,7 @@ Interage com o banco de dados PostgreSQL
60
60
  Interage com APIs RESTfull, especialmente providas para a plataforma Sienge
61
61
  - `auth_base` Autentica (HTTPBasicAuth) sessão na API
62
62
  - `auth_bearer` Autentica sessão na API pelos métodos: OAuth, JWT, Bearer
63
- - `endpoint_json` Realizad chama ao endpoint. Payload em formato `json` opcional.
63
+ - `endpoint_json` Realizad chama ao endpoint. Aceita opcionalmente Payload em formato `json` ou arquivo binário.
64
64
  - `trata_erro_sienge` Retorna a mensagem de erro do Sienge caso código de retorno seja diferente de 200.
65
65
  - `close` Encerra a sessão autenticada
66
66
 
@@ -145,7 +145,7 @@ São nessários 2 parâmetros posicionais obrigatórios, e 5 parametros nominais
145
145
  - `cadencia` Número máximo de chamadas *por segudo* à API
146
146
  - `timeout` Tempo máximo (segundos) para aguardar retorno à chamada. Padrão 6s, se omisso.
147
147
  - `logger` O objeto _log handler_ para lidar com as informações de saída. Se não informado, todas as saídas serão direcionadas para a stdout.
148
- - `headers` Cabeçalhos _http_ para a requisição à API.
148
+ - `headers` Cabeçalhos _http_ para a requisição à API. Se não fornecido, será incluida implicitamente a chave `Content-Type` com valor `application/json`.
149
149
  - `verify` Verifica a validade do certificado SSL do servidor de destino da requisição.
150
150
 
151
151
  Quanto às credenciais de autenticação, assim como a classe de interação com o PostgreSQL, elas precisam ser fornecidas na forma de um *dicionário*.
@@ -162,12 +162,14 @@ Caso a autenticação seja pelo método `api_rest.aut_bearer()`, o dicionário d
162
162
  A classe possui 3 métodos:
163
163
  - `api_rest.auth_basic()`: instanciamento da sessão autenticando pelo método HTTPBasicAuth
164
164
  - `api_rest.auth_bearer()`: instanciamento da sessão autenticando pelos métodos OAuth, JWT, Bearer
165
- - `api_rest.endpoint_json([endereço], [método], payload=None)`: para a chamada ao endpoint
165
+ - `api_rest.endpoint_json([endereço], [método], payload=None, files=None)`: para a chamada ao endpoint
166
166
  - `close()` para encerra a instância/sessão
167
167
 
168
- O consumo é feito pelo método `api_rest.endpoint_json` que suporta apenas APIs cujo payload (opcional) seja aceito no formato JSON.
168
+ O consumo é feito pelo método `api_rest.endpoint_json` que suporta APIs cujo payload (opcional) seja aceito no formato JSON ou binario (files).
169
169
 
170
- Esse método espera 2 parametros posicionais obrigatórios: o endereço do endpoint e o verbo (get, post, patch ou put), tendo parametro opcional o objeto de 'payload' (json).
170
+ Esse método espera 2 parametros posicionais obrigatórios: o endereço do endpoint e o verbo (get, post, patch ou put), tendo parametro opcional o objeto de 'payload' (json) ou 'files' (binário).
171
+ O método define no `headers` a chavee `Content-Type` implicita e automaticamente com o valor `application/json`, independente de ser ou não fornecido payload.
172
+ Se a carga for do tipo binário, é necessário informar o Content-Type correto (`multipart/form-data`) ou repassar um dicionario vazio (`{}`) para o parametro `headers` no instanciamento da classe `api_rest`
171
173
  Note que o endereço do endpoint deve ser informado completo. A URL informada no instanciamento da classe corresponde apenas ao endereço de autenticação.
172
174
 
173
175
  O tempo, em segundos, transcorrido entre a chamada a atual e a chamada anterior ao endpoint pode ser consultado pelo argumento `.Intervalo` no objeto recebido do retorno à chamada ao método `.endpoint_json`.
@@ -38,7 +38,7 @@ Interage com o banco de dados PostgreSQL
38
38
  Interage com APIs RESTfull, especialmente providas para a plataforma Sienge
39
39
  - `auth_base` Autentica (HTTPBasicAuth) sessão na API
40
40
  - `auth_bearer` Autentica sessão na API pelos métodos: OAuth, JWT, Bearer
41
- - `endpoint_json` Realizad chama ao endpoint. Payload em formato `json` opcional.
41
+ - `endpoint_json` Realizad chama ao endpoint. Aceita opcionalmente Payload em formato `json` ou arquivo binário.
42
42
  - `trata_erro_sienge` Retorna a mensagem de erro do Sienge caso código de retorno seja diferente de 200.
43
43
  - `close` Encerra a sessão autenticada
44
44
 
@@ -123,7 +123,7 @@ São nessários 2 parâmetros posicionais obrigatórios, e 5 parametros nominais
123
123
  - `cadencia` Número máximo de chamadas *por segudo* à API
124
124
  - `timeout` Tempo máximo (segundos) para aguardar retorno à chamada. Padrão 6s, se omisso.
125
125
  - `logger` O objeto _log handler_ para lidar com as informações de saída. Se não informado, todas as saídas serão direcionadas para a stdout.
126
- - `headers` Cabeçalhos _http_ para a requisição à API.
126
+ - `headers` Cabeçalhos _http_ para a requisição à API. Se não fornecido, será incluida implicitamente a chave `Content-Type` com valor `application/json`.
127
127
  - `verify` Verifica a validade do certificado SSL do servidor de destino da requisição.
128
128
 
129
129
  Quanto às credenciais de autenticação, assim como a classe de interação com o PostgreSQL, elas precisam ser fornecidas na forma de um *dicionário*.
@@ -140,12 +140,14 @@ Caso a autenticação seja pelo método `api_rest.aut_bearer()`, o dicionário d
140
140
  A classe possui 3 métodos:
141
141
  - `api_rest.auth_basic()`: instanciamento da sessão autenticando pelo método HTTPBasicAuth
142
142
  - `api_rest.auth_bearer()`: instanciamento da sessão autenticando pelos métodos OAuth, JWT, Bearer
143
- - `api_rest.endpoint_json([endereço], [método], payload=None)`: para a chamada ao endpoint
143
+ - `api_rest.endpoint_json([endereço], [método], payload=None, files=None)`: para a chamada ao endpoint
144
144
  - `close()` para encerra a instância/sessão
145
145
 
146
- O consumo é feito pelo método `api_rest.endpoint_json` que suporta apenas APIs cujo payload (opcional) seja aceito no formato JSON.
146
+ O consumo é feito pelo método `api_rest.endpoint_json` que suporta APIs cujo payload (opcional) seja aceito no formato JSON ou binario (files).
147
147
 
148
- Esse método espera 2 parametros posicionais obrigatórios: o endereço do endpoint e o verbo (get, post, patch ou put), tendo parametro opcional o objeto de 'payload' (json).
148
+ Esse método espera 2 parametros posicionais obrigatórios: o endereço do endpoint e o verbo (get, post, patch ou put), tendo parametro opcional o objeto de 'payload' (json) ou 'files' (binário).
149
+ O método define no `headers` a chavee `Content-Type` implicita e automaticamente com o valor `application/json`, independente de ser ou não fornecido payload.
150
+ Se a carga for do tipo binário, é necessário informar o Content-Type correto (`multipart/form-data`) ou repassar um dicionario vazio (`{}`) para o parametro `headers` no instanciamento da classe `api_rest`
149
151
  Note que o endereço do endpoint deve ser informado completo. A URL informada no instanciamento da classe corresponde apenas ao endereço de autenticação.
150
152
 
151
153
  O tempo, em segundos, transcorrido entre a chamada a atual e a chamada anterior ao endpoint pode ser consultado pelo argumento `.Intervalo` no objeto recebido do retorno à chamada ao método `.endpoint_json`.
@@ -216,17 +216,23 @@ Para uso em APIs com autenticação JWT (JSON Web Token), OAuth, Bearer Token Au
216
216
  return self.RetEndPoint
217
217
  #
218
218
  #
219
- def endpoint_json(self, endpoint, metodo, payload=None): # Interage com End Point
219
+ def endpoint_json(self, endpoint, metodo, payload=None, file=None): # Interage com End Point
220
220
  self.ult_tempo_req = time()
221
221
  self.Metodo = metodo.lower()
222
222
  #self.EndPoint = self.Url + endpoint
223
223
  self.EndPoint = endpoint
224
224
  self.Payload = payload
225
+ self.File = file
226
+
225
227
  MetodosAceitos = ['post', 'get', 'patch', 'put']
226
228
  if not any(element in self.Metodo for element in MetodosAceitos):
227
229
  self.logger.critico(f'Método {self.Metodo} não previsto. Abortando chamada!', exit=1)
228
230
  else:
229
- ChamadaApi = f'self.Sessao.{self.Metodo}(self.EndPoint, timeout=self.Timeout, headers=self.Headers, verify=self.Verify)' if self.Payload is None else f'self.Sessao.{self.Metodo}(self.EndPoint, timeout=self.Timeout, headers=self.Headers, verify=self.Verify, json=self.Payload)'
231
+ ChamadaApi = f'self.Sessao.{self.Metodo}(self.EndPoint, timeout=self.Timeout, headers=self.Headers, verify=self.Verify)' if self.Payload is None and self.File is None else \
232
+ f'self.Sessao.{self.Metodo}(self.EndPoint, timeout=self.Timeout, headers=self.Headers, verify=self.Verify, json=self.Payload)' if self.Payload and self.File is None else \
233
+ f'self.Sessao.{self.Metodo}(self.EndPoint, timeout=self.Timeout, headers=self.Headers, verify=self.Verify, files=self.File)' if self.Payload is None and self.File else \
234
+ f'self.Sessao.{self.Metodo}(self.EndPoint, timeout=self.Timeout, headers=self.Headers, verify=self.Verify, json=self.Payload, files=self.File)'
235
+
230
236
  self.controla_cadencia()
231
237
  self.TempoUltReq = time()
232
238
  try:
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "lbxtoolkit"
3
- version = "2.2.8"
3
+ version = "2.2.9"
4
4
  description = ""
5
5
  authors = ["Cristiano P. Ferrari <cristiano.ferrari@lbx.com.br>"]
6
6
  readme = "README.md"