o a@sldZddlZddlZddlmZmZddlmZddZddZ d d Z d d Z d dZ ddZ ddZdS)zp oauthlib.utils ~~~~~~~~~~~~~~ This module contains utility methods used by various parts of the OAuth 2 spec. N)quoteurlparse) urldecodecCsFt|ts |dur |St|tttfrddd|DStd|)z5Convert a list of scopes to a space separated string.N cSg|]}t|qSstr.0srr?/usr/lib/python3/dist-packages/oauthlib/oauth2/rfc6749/utils.py z!list_to_scope..z8Invalid scope (%s), must be string, tuple, set, or list.) isinstancer settuplelistjoin ValueErrorscoperrr list_to_scopes  rcCs8t|tttfrdd|DS|durdS|dS)z5Convert a space separated string to a list of scopes.cSrrrr rrr rrz!scope_to_list..Nr)rrrrstripsplitrrrr scope_to_lists rcCs.ttt|j}d|vrt|d|d<|S)Nr)dictrrqueryr)uriparamsrrr params_from_uri"sr c CsTddd}t|\}}}}}}d|vr|dd\}}||fS||}||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_portsschnetlocpathparrfraportrrr host_from_uri)sr0cCs$t|ts tdt|dddS)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)urrr escape<s r5cCs8tj|}|j|j|jdddd}t|S)z9Generate a age parameter for MAC authentication draft 00.ii@B)datetimenow microsecondssecondsdaysr ) issue_timetdagerrr generate_ageGsr?cCstjdrdS|dS)zCheck if the uri is over ssl.OAUTHLIB_INSECURE_TRANSPORTTzhttps://)osenvironr'lower startswith)rrrr is_secure_transportOs rE)__doc__r7rA urllib.parserroauthlib.commonrrrr r0r5r?rErrrr s