Request (internal)#
- class qbittorrentapi.request.Request(host='', port=None, username=None, password=None, **kwargs)#
Bases:
object
Facilitates HTTP requests to qBittorrent’s Web API.
- _cast(response, response_class, **response_kwargs)#
Returns the API response casted to the requested class.
- Parameters:
response – requests
Response
from APIresponse_class – class to return response as; if none, response is returned
response_kwargs – request-specific configuration for response
- Returns:
API response as type of
response_class
- _get(_name=APINames.EMPTY, _method='', requests_args=None, requests_params=None, headers=None, params=None, data=None, files=None, response_class=None, **kwargs)#
Send
GET
request.- Parameters:
api_namespace – the namespace for the API endpoint (e.g.
APINames
ortorrents
)api_method – the name for the API endpoint (e.g.
add
)kwargs – see
_request()
- Returns:
Requests
Response
- static _get_data(http_method, params=None, data=None, files=None, **kwargs)#
Determine data, params, and files for the Requests call.
- Parameters:
http_method –
get
orpost
params – key value pairs to send with GET calls
data – key value pairs to send with POST calls
files – dictionary of files to send with request
- Returns:
final dictionaries of data to send to qBittorrent
- static _get_headers(headers=None, more_headers=None)#
Determine headers specific to this request. Request headers can be specified explicitly or with the requests kwargs. Headers specified in
self._EXTRA_HEADERS
are merged in Requests itself.- Parameters:
headers – headers specified for this specific request
more_headers – headers from requests_kwargs config
- Returns:
final dictionary of headers for this specific request
- _get_requests_kwargs(requests_args=None, requests_params=None)#
Determine the requests_kwargs for the call to Requests. The global configuration in
self._REQUESTS_ARGS
is updated by any arguments provided for a specific call.- Parameters:
requests_args – default location to expect Requests
requests_kwargs
requests_params – alternative location to expect Requests
requests_kwargs
- Returns:
final dictionary of Requests
requests_kwargs
- static _get_response_kwargs(kwargs)#
Determine the kwargs for managing the response to return.
- Parameters:
kwargs – extra keywords arguments to be passed along in request
- Returns:
sanitized arguments
- static _handle_error_responses(data, params, response)#
Raise proper exception if qBittorrent returns Error HTTP Status.
- _initialize_context()#
Initialize and/or reset communications context with qBittorrent.
This is necessary on startup or when the auth cookie needs to be replaced…perhaps because it expired, qBittorrent was restarted, significant settings changes, etc.
- _initialize_lesser(EXTRA_HEADERS=None, REQUESTS_ARGS=None, VERIFY_WEBUI_CERTIFICATE=True, FORCE_SCHEME_FROM_HOST=False, RAISE_UNIMPLEMENTEDERROR_FOR_UNIMPLEMENTED_API_ENDPOINTS=False, RAISE_NOTIMPLEMENTEDERROR_FOR_UNIMPLEMENTED_API_ENDPOINTS=False, RAISE_ERROR_FOR_UNSUPPORTED_QBITTORRENT_VERSIONS=False, VERBOSE_RESPONSE_LOGGING=False, PRINT_STACK_FOR_EACH_REQUEST=False, SIMPLE_RESPONSES=False, DISABLE_LOGGING_DEBUG_OUTPUT=False, MOCK_WEB_API_VERSION=None)#
Initialize lesser used configuration.
- classmethod _list2string(input_list=None, delimiter='|')#
Convert entries in a list to a concatenated string.
- Parameters:
input_list – list to convert
delimiter – delimiter for concatenation
- Returns:
if input is a list, concatenated string…else whatever the input was
- _post(_name=APINames.EMPTY, _method='', requests_args=None, requests_params=None, headers=None, params=None, data=None, files=None, response_class=None, **kwargs)#
Send
POST
request.- Parameters:
api_namespace – the namespace for the API endpoint (e.g.
APINames
ortorrents
)api_method – the name for the API endpoint (e.g.
add
)kwargs – see
_request()
- Returns:
Requests
Response
- _request(http_method, api_namespace, api_method, requests_args=None, requests_params=None, headers=None, params=None, data=None, files=None, response_class=None, **kwargs)#
Meat and potatoes of sending requests to qBittorrent.
- Parameters:
http_method –
get
orpost
api_namespace – the namespace for the API endpoint (e.g.
APINames
ortorrents
)api_method – the name for the API endpoint (e.g.
add
)requests_args – default location for Requests kwargs
requests_params – alternative location for Requests kwargs
headers – HTTP headers to send with the request
params – key/value pairs to send with a
GET
requestdata – key/value pairs to send with a
POST
requestfiles – files to be sent with the request
response_class – class to use to cast the API response
kwargs – arbitrary keyword args to send to qBittorrent with the request
- Returns:
Requests
Response
- _request_manager(http_method, api_namespace, api_method, _retries=1, _retry_backoff_factor=0.3, requests_args=None, requests_params=None, headers=None, params=None, data=None, files=None, response_class=None, **kwargs)#
Wrapper to manage request retries and severe exceptions.
This should retry at least once to account for the Web API switching from HTTP to HTTPS. During the second attempt, the URL is rebuilt using HTTP or HTTPS as appropriate.
- _trigger_session_initialization()#
Effectively resets the HTTP session by removing the reference to it.
During the next request, a new session will be created.
- _verbose_logging(http_method, url, data, params, requests_kwargs, response)#
Log verbose information about request.
Can be useful during development.
- class qbittorrentapi.request.URL(client)#
Bases:
object
Management for the qBittorrent Web API URL.
- build_base_url(headers, requests_kwargs=None)#
Determine the Base URL for the Web API endpoints.
A URL is only actually built here if it’s the first time here or the context was re-initialized. Otherwise, the most recently built URL is used.
If the user doesn’t provide a scheme for the URL, it will try HTTP first and fall back to HTTPS if that doesn’t work. While this is probably backwards, qBittorrent or an intervening proxy can simply redirect to HTTPS and that’ll be respected.
Additionally, if users want to augment the path to the API endpoints, any path provided here will be preserved in the returned Base URL and prefixed to all subsequent API calls.
- Parameters:
headers – HTTP headers for request
requests_kwargs – additional params from user for HTTP
HEAD
request
- Returns:
base URL as a
string
for Web API endpoint
- build_url(api_namespace, api_method, headers, requests_kwargs)#
Create a fully qualified URL for the API endpoint.
- Parameters:
api_namespace – the namespace for the API endpoint (e.g.
torrents
)api_method – the specific method for the API endpoint (e.g.
info
)headers – HTTP headers for request
requests_kwargs – kwargs for any calls to Requests
- Returns:
fully qualified URL string for endpoint
- build_url_path(api_namespace, api_method)#
Determine the full URL path for the API endpoint.
- Parameters:
api_namespace – the namespace for the API endpoint (e.g. torrents)
api_method – the specific method for the API endpoint (e.g. info)
- Returns:
entire URL string for API endpoint (e.g.
http://localhost:8080/api/v2/torrents/info
orhttp://example.com/qbt/api/v2/torrents/info
)
- detect_scheme(base_url, default_scheme, alt_scheme, headers, requests_kwargs)#
Determine if the URL endpoint is using HTTP or HTTPS.
- Parameters:
base_url – urllib
ParseResult
URL objectdefault_scheme – default scheme to use for URL
alt_scheme – alternative scheme to use for URL if default doesn’t work
headers – HTTP headers for request
requests_kwargs – kwargs for calls to Requests
- Returns:
scheme (ie
HTTP
orHTTPS
)