&`^dZddlZddlZddlmZmZddlmZdZdZ dZ dZ d Z d Z d Zy) zp oauthlib.utils ~~~~~~~~~~~~~~ This module contains utility methods used by various parts of the OAuth 2 spec. N)quoteurlparse) urldecodect|ts||St|tttfr(dj |Dcgc] }t|c}St d|zcc}w)z5Convert a list of scopes to a space separated string. z8Invalid scope (%s), must be string, tuple, set, or list.) isinstancestrsettuplelistjoin ValueErrorscopess ?/usr/lib/python3/dist-packages/oauthlib/oauth2/rfc6749/utils.py list_to_scopers[% EC- .xx/AQ/00SV[[\\0sA&ct|tttfr|Dcgc] }t |c}S|y|j j dScc}w)z5Convert a space separated string to a list of scopes.Nr)rr r r r stripsplitrs r scope_to_listrsL%%s+, %&1A&& {{}""3'' 'sAc~ttt|j}d|vrt |d|d<|S)Nr)dictrrqueryr)uriparamss rparams_from_urir"s: )HSM//0 1F&'w8w Mcddd}t|\}}}}}}d|vr|jdd\}}||fS|j|j}||fS)zuExtract hostname and port from URI. Will use default port for HTTP and HTTPS if none is present in the URI. 80443)HTTPHTTPS:)rrgetupper) r default_portsschnetlocpathparrfraports r host_from_urir/)sr M *2#&CsE3 f}||C+  4<  - 4<rcpt|ts tdt|j ddS)ztEscape a string in an OAuth-compatible fashion. TODO: verify whether this can in fact be used for OAuth 2 z#Only unicode objects are escapable.zutf-8~)safe)rr rrencode)us rescaper5<s0 a >?? '" ..rctjj|z }|j|j|jdzdzzdzzdz }t |S)z9Generate a age parameter for MAC authentication draft 00.ii@B)datetimenow microsecondssecondsdaysr ) issue_timetdages r generate_ager@GsZ      : -B ??bjj277R<$+>>   C s8Orctjjdry|jj dS)zCheck if the uri is over ssl.OAUTHLIB_INSECURE_TRANSPORTTzhttps://)osenvironr&lower startswith)rs ris_secure_transportrGOs- zz~~34 99; ! !* --r)__doc__r8rC urllib.parserroauthlib.commonrrrrr/r5r@rGrrrLs<  (%](&/.r