Códigos utilitátios internos

HttpClient

Esse é um cliente que deve ser usado em todos os momentos em que qualquer código precisar fazer uma requisição HTTP/HTTPS.

Caso alguma funcionalidade necessária para fazer o request ainda não esteja disponível nesse client, idealmente temos que adicionar suporte.

A ideia desse client é que algumas confogirações já estejam sempre feitas, como por exemplo timeout da conexão TCP e do request HTTP.

class asgard.http.client.HttpClient(headers: Dict[str, str] = {}, timeout: aiohttp.client.ClientTimeout = ClientTimeout(total=30, connect=1, sock_read=None, sock_connect=None))[código fonte]

Wrapper em volta do objeto aiohttp.ClientSession. Possui a seguintes features:

  • Já lança exception em caso de response 4xx e 5xx. Esse comportamento pode ser sobrescrito, a cada request, passando o argumento raise_for_status=True.

  • Já segue redirect dos requests.

  • Headers que podem ser passados ao instanciar um objeto HttpClient
    • Esses headers serão mesclados com quaisquer outros headers que forem passados no momento em que um request HTTP for feito.

    • Em caso de headers de nomes iguais, os headers passados ao request terão maior precedência

  • Timeout já configurado. Se nada for passado no construtor um timeout padrão já estará configurado. Esse timeout tem seus valores nas configs: asgard.conf.ASGARD_HTTP_CLIENT_TOTAL_TIMEOUT e asgard.conf.ASGARD_HTTP_CLIENT_CONNECT_TIMEOUT. Esses valores podem ser sobrescritos com as envs ASGARD_HTTP_CLIENT_TOTAL_TIMEOUT e ASGARD_HTTP_CLIENT_CONNECT_TIMEOUT.

_request(method: str, url: str, headers: Dict[str, str] = {}, timeout: aiohttp.client.ClientTimeout = None, raise_for_status: bool = True, **kwargs) → aiohttp.client_reqrep.ClientResponse[código fonte]

Método que é usado por todos os outros métodos para fazer um request. O parametros recebidos por esse métodos definem os parametros recebidos pelo client de uma forma geral.

delete(url: str, **kwargs) → aiohttp.client_reqrep.ClientResponse[código fonte]

Alias coroutine para DELETE <url>

get(url: str, **kwargs) → aiohttp.client_reqrep.ClientResponse[código fonte]

Alias coroutine para GET <url>

patch(url: str, **kwargs) → aiohttp.client_reqrep.ClientResponse[código fonte]

Alias coroutine para PATCH <url>

post(url: str, **kwargs) → aiohttp.client_reqrep.ClientResponse[código fonte]

Alias coroutine para POST <url>

put(url: str, **kwargs) → aiohttp.client_reqrep.ClientResponse[código fonte]

Alias coroutine para PUT <url>