10.1. HTTP Client

Client for making HTTP requests.

pytan3.http_client.CERT_FILE = '{http_client.parsed_url.hostname}.pem'

str – Certificate filename template for Certify.__call__().

pytan3.http_client.RECORD_FILE = '%Y_%m_%dT%H_%M_%S_%fZ.json'

str – Record filename template for HttpClient.response_hook_disk().

pytan3.http_client.SHOW_CERT = 'no'

bool – Default prompt value for “Show full certificate info” in Certify.verify_hook().

Will use OS Environment variable “PYTAN_SHOW_CERT” if set.

pytan3.http_client.SHOW_CHAIN = 'no'

bool – Default prompt value for “Show certificate chain info” in Certify.verify_hook().

Will use OS Environment variable “PYTAN_SHOW_CHAIN” if set.

pytan3.http_client.CERT_VALID = 'no'

bool – Default prompt value for “Consider certificate valid” in Certify.verify_hook().

Will use OS Environment variable “PYTAN_CERT_VALID” if set.

class pytan3.http_client.HttpClient(url, timeout=5, lvl='info')[source]

Bases: object

Convenience class for requests package.

CLEAN_HOOKS = {'/api/v\\d?/session': ['clean_hook_auth_rest'], '/auth': ['clean_hook_auth']}

dict – URL regex matches for cleaning bodies in cleaning hooks.

CLEAN_AUTH_KEYS = ['username', 'password', 'domain', 'secondary']

list of str – Keys to clean in cleaning hooks.

CLEAN_HIDE = '###HIDDEN###'

str – Text to use to hide values in cleaning hooks.

__init__(url, timeout=5, lvl='info')[source]

Constructor.

Parameters:
  • url (str) – URL to use.
  • timeout (int, optional) –

    Connect timeout to use for requests.

    Defaults to: 5.

  • lvl (str, optional) –

    Logging level for this object.

    Defaults to: “info”.

log = None

logging.Logger – Log for this object.

timeout = None

int – Connect timeout used for all requests.

parsed_url = None

UrlParser – Parsed version of URL.

last_request = None

requests.PreparedRequest – Last request sent.

last_response = None

requests.Response – Last response received.

history = None

list – History of all responses received.

Used by HttpClient.response_hook_history().

record_path = None

pathlib.Path – Path to store response recordings to.

session = None

requests.Session – Requests session object.

certify = None

Certify – Certificate Magic object.

url

Get the URL string from HttpClient.parsed_url.

Returns:str
__str__()[source]

Show object info.

Returns:str
__repr__()[source]

Show object info.

Returns:str
__call__(method='get', path='', data=None, timeout=5, params=None, headers=None, b64_headers=None, verify=True, **kwargs)[source]

Create, prepare a request, and then send it.

Parameters:
  • method (str, optional) –

    Method to use.

    Defaults to: “get”.

  • path (str, optional) –

    Path to append to HttpClient.url for this request.

    Defaults to: “”.

  • data (str, optional) –

    Data to send with POST.

    Defaults to: None.

  • timeout (int, optional) –

    Response timeout.

    Defaults to: 5.

  • params (dict, optional) –

    URL parameters.

    Defaults to: None.

  • headers (dict, optional) –

    Headers.

    Defaults to: None.

  • b64_headers (list of str, optional) –

    Headers to base 64 encode.

    Defaults to: None.

  • verify (bool or str, optional) –

    Enable/Disable SSL certificate validation using built in CAs, or a path to custom cert.

    Defaults to: True.

  • **kwargs

    cause (str): String to explain purpose of request.

    Defaults to: “”.

Notes

If verify is True or None, verification is done using default/built in CA. OS env vars $REQUESTS_CA_BUNDLE, and $CURL_CA_BUNDLE are used if set and trust_env is True, and if trust_env is False session’s verify is used.

If verify is False, no verification is done. This overrides OS env and session’s verify for this request and no verification is done at all. Don’t do this.

If verify is a str, verification is done with PEM file at path. This overrides OS env and session’s verify for this request.

Caveat: If previous request made with session and close has not been called on session, the verify of the previous request will be used no matter what is supplied here.

Returns:requests.Response
control_hook(enable, hook)[source]

Add or remove a hook from HttpClient.session.

Parameters:
  • enable (bool) – True: Add hook to session. False: Remove hook from session.
  • hook (object) – Hook function to add/remove to session.
Returns:

True/False if hook was actually removed/added.

Return type:

bool

control_hook_record_disk(enable=False, path=None, path_sub='records')[source]

Add or remove session hook for recording responses to disk.

Parameters:
control_hook_record_history(enable=False)[source]

Add or remove session hook for recording in local class.

Parameters:enable (bool, optional) –

Add/remove HttpClient.response_hook_history() to session hooks.

Defaults to: False.

response_hook_log_debug(response, *args, **kwargs)[source]

Response hook to log info.

Parameters:
Returns:

requests.Response

response_hook_clean(response, *args, **kwargs)[source]

Response hook to add cleaned versions of request/response body and headers.

Parameters:
Returns:

requests.Response

static clean_hook_auth_rest(http_client, response)[source]

Clean hook to hide auth keys in a response from REST session route.

Parameters:
Returns:

requests.Response

static clean_hook_auth(http_client, response)[source]

Clean hook to hide auth headers in a response from /auth API.

Parameters:
Returns:

requests.Response

response_hook_history(response, *args, **kwargs)[source]

Response hook to add response to HttpClient.history.

Parameters:
response_hook_disk(response, *args, **kwargs)[source]

Response hook to write response to HttpClient.record_path.

Parameters:
Returns:

requests.Response

serialize_response(response)[source]

Churn a response into JSON serializeable format.

Parameters:response (requests.Response) – Response object to churn.
Returns:dict
parse_url(url)[source]

Parse a URL using UrlParser.

Parameters:url (str) – URL to parse.
Returns:UrlParser
user_agent

Build a user agent string for use in headers.

Returns:str