ROOTPLOIT
Server: LiteSpeed
System: Linux server71.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64
User: niphet (1079)
PHP: 5.3.29
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/requests/__pycache__/sessions.cpython-36.pyc
3

|`hUs@sdZddlZddlZddlZddlmZddlmZddlm	Z	m
Z
mZmZm
Z
mZddlmZmZmZmZddlmZmZmZdd	lmZmZdd
lmZddlmZmZm Z ddl!m"Z"m#Z#m$Z$m%Z%dd
l&m'Z'ddl(m)Z)ddlm*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ddl0m1Z1ddlm2Z2ej3dkrNy
ej4Z5Wne6k
rJej7Z5YnXnejZ5efddZ8efddZ9Gddde:Z;Gddde;Z<ddZ=dS)z
requests.session
~~~~~~~~~~~~~~~~

This module provides a Session object to manage and persist settings across
requests (cookies, auth, proxies).
N)	timedelta)_basic_auth_str)	cookielibis_py3OrderedDicturljoinurlparseMapping)cookiejar_from_dictextract_cookies_to_jarRequestsCookieJar
merge_cookies)RequestPreparedRequestDEFAULT_REDIRECT_LIMIT)
default_hooks
dispatch_hook)to_native_string)to_key_val_listdefault_headers
DEFAULT_PORTS)TooManyRedirects
InvalidSchemaChunkedEncodingErrorContentDecodingError)CaseInsensitiveDict)HTTPAdapter)requote_uriget_environ_proxiesget_netrc_authshould_bypass_proxiesget_auth_from_urlrewind_body)codes)REDIRECT_STATIZwin32cCst|dkr|S|dkr|St|to*t|ts0|S|t|}|jt|dd|jD}x|D]
}||=qbW|S)zDetermines appropriate setting for a given request, taking into account
    the explicit setting on that request, and the setting in the session. If a
    setting is a dictionary, they will be merged together using `dict_class`
    NcSsg|]\}}|dkr|qS)N).0kvr&r&/usr/lib/python3.6/sessions.py
<listcomp>Isz!merge_setting.<locals>.<listcomp>)
isinstancer
rupdateitems)Zrequest_settingZsession_setting
dict_classZmerged_settingZ	none_keyskeyr&r&r*
merge_setting1s



r1cCs@|dks|jdgkr|S|dks0|jdgkr4|St|||S)zProperly merges both requests and session hooks.

    This is necessary because when request_hooks == {'response': []}, the
    merge breaks Session hooks entirely.
    Nresponse)getr1)Z
request_hooksZ
session_hooksr/r&r&r*merge_hooksPs
r4c@s>eZdZddZddZddd	Zd
dZdd
ZddZdS)SessionRedirectMixincCs,|jr(|jd}tr|jd}t|dSdS)z7Receives a Response. Returns a redirect URI or ``None``locationlatin1utf8N)Zis_redirectheadersrencoder)selfrespr6r&r&r*get_redirect_targetas


z(SessionRedirectMixin.get_redirect_targetcCst|}t|}|j|jkr dS|jdkrL|jdkrL|jdkrL|jd	krLdS|j|jk}|j|jk}tj|jddf}|r|j|kr|j|krdS|p|S)
zFDecide whether Authorization header should be removed when redirectingTZhttpPNhttpsF)r>N)r@N)r	ZhostnameschemeZportrr3)r;Zold_urlZnew_urlZ
old_parsedZ
new_parsedZchanged_portZchanged_schemeZdefault_portr&r&r*should_strip_authvs
z&SessionRedirectMixin.should_strip_authFNTc	ksdg}
|j|}t|jj}xB|r^|j}
|
j||
dd|_y
|jWn(tt	t
fk
rv|jjddYnXt
|j|jkrtd|j|d|j|jdrt|j}dt|j|f}t|}|jd	kr|r|j|d
}n|jr|j}|j}|jst|jt|}nt|}t||
_|j|
||jtjtjfkrtd}x|D]}|
jj|dqVWd|
_ |
j}y
|d=Wnt!k
rYnXt"|
j#||jt$|
j#|j%|
j&|
j#|j'|
|}|j(|
||
j)dk	od|kpd
|k}|r
t*|
|
}|r|Vq|j+|f|||||dd|	}t"|j%|
|j|j|}|VqWdS)zBReceives a Response. Returns a generator of Responses or Requests.rNF)Zdecode_contentzExceeded %s redirects.)r2z//z%s:%s)fragmentContent-LengthContent-TypeTransfer-EncodingZCookie)streamtimeoutverifycertproxiesallow_redirects)rErFrG),r=r	urlrDcopyappendhistorycontentrrRuntimeErrorrawreadlen
max_redirectsrclose
startswithrrA_replaceZgeturlZnetlocrrrebuild_methodstatus_coder$Ztemporary_redirectZpermanent_redirectr9popZbodyKeyErrorrZ_cookiesrcookiesZprepare_cookiesrebuild_proxiesrebuild_authZ_body_positionr#send)r;r<reqrHrIrJrKrLyield_requestsZadapter_kwargsZhistrNZprevious_fragmentprepared_requestZparsed_rurlZparsedZpurged_headersheaderr9Z
rewindabler&r&r*resolve_redirectss|









z&SessionRedirectMixin.resolve_redirectscCsR|j}|j}d|kr*|j|jj|r*|d=|jr8t|nd}|dk	rN|j|dS)zWhen being redirected we may want to strip authentication from the
        request to avoid leaking credentials. This method intelligently removes
        and reapplies authentication where possible to avoid credential loss.
        Z
AuthorizationN)r9rNrBrequest	trust_envr Zprepare_auth)r;rer2r9rNZnew_authr&r&r*ras
z!SessionRedirectMixin.rebuild_authc
Cs|dk	r|ni}|j}|j}t|j}|j}|jd}t||d}|jr~|r~t||d}	|	j||	jd}
|
r~|j	||
d|kr|d=yt
||\}}Wntk
rd\}}YnX|jdr|r|rt
|||d<|S)aThis method re-evaluates the proxy configuration by considering the
        environment variables. If we are redirected to a URL covered by
        NO_PROXY, we strip the proxy configuration. Otherwise, we set missing
        proxy keys for this URL (in case they were stripped by a previous
        redirect).

        This method also replaces the Proxy-Authorization header where
        necessary.

        :rtype: dict
        Nno_proxy)rjallzProxy-Authorizationr?)NN)r9rNr	rArOr3r!rir
setdefaultr"r^rYr)
r;rerLr9rNrAZnew_proxiesrjZbypass_proxyZenviron_proxiesproxyZusernameZpasswordr&r&r*r`s*

z$SessionRedirectMixin.rebuild_proxiescCsX|j}|jtjkr|dkrd}|jtjkr6|dkr6d}|jtjkrN|dkrNd}||_dS)zWhen being redirected we may want to change the method of the request
        based on certain specs or browser behavior.
        HEADGETPOSTN)methodr\r$Z	see_otherfoundZmoved)r;rer2rqr&r&r*r[?sz#SessionRedirectMixin.rebuild_method)FNTNNF)	__name__
__module____qualname__r=rBrgrar`r[r&r&r&r*r5_s
p+r5c@seZdZdZdddddddd	d
ddd
dg
ZddZddZddZddZd7ddZ	ddZ
ddZdd Zd8d!d"Z
d9d#d$Zd:d%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6ZdS);SessionaA Requests session.

    Provides cookie persistence, connection-pooling, and configuration.

    Basic Usage::

      >>> import requests
      >>> s = requests.Session()
      >>> s.get('https://httpbin.org/get')
      <Response [200]>

    Or as a context manager::

      >>> with requests.Session() as s:
      >>>     s.get('https://httpbin.org/get')
      <Response [200]>
    r9r_authrLhooksparamsrJrKZprefetchadaptersrHrirWcCsrt|_d|_i|_t|_i|_d|_d|_d|_	t
|_d|_t
i|_t|_|jdt|jdtdS)NFTzhttps://zhttp://)rr9rwrLrrxryrHrJrKrrWrirr_rrzmountr)r;r&r&r*__init__os
zSession.__init__cCs|S)Nr&)r;r&r&r*	__enter__szSession.__enter__cGs|jdS)N)rX)r;argsr&r&r*__exit__szSession.__exit__c
Cs|jpi}t|tjst|}ttt|j|}|j}|jrV|rV|jrVt	|j
}t}|j|j
j|j
|j|j|jt|j|jtdt|j|jt||j|t|j|jd
|S)aConstructs a :class:`PreparedRequest <PreparedRequest>` for
        transmission and returns it. The :class:`PreparedRequest` has settings
        merged from the :class:`Request <Request>` instance and those of the
        :class:`Session`.

        :param request: :class:`Request` instance to prepare with this
            session's settings.
        :rtype: requests.PreparedRequest
        )r/)
rqrNfilesdatajsonr9ryrwr_rx)r_r,rZ	CookieJarrrr
rwrir rNrZpreparerqupperrrrr1r9rryr4rx)r;rhr_Zmerged_cookiesrwpr&r&r*prepare_requests*



zSession.prepare_requestNTcCstt|j||||pi||pi|||d
}|j|}|p8i}|j|j||
||}|	|
d}|j||j|f|}|S)aConstructs a :class:`Request <Request>`, prepares it and sends it.
        Returns :class:`Response <Response>` object.

        :param method: method for the new :class:`Request` object.
        :param url: URL for the new :class:`Request` object.
        :param params: (optional) Dictionary or bytes to be sent in the query
            string for the :class:`Request`.
        :param data: (optional) Dictionary, list of tuples, bytes, or file-like
            object to send in the body of the :class:`Request`.
        :param json: (optional) json to send in the body of the
            :class:`Request`.
        :param headers: (optional) Dictionary of HTTP Headers to send with the
            :class:`Request`.
        :param cookies: (optional) Dict or CookieJar object to send with the
            :class:`Request`.
        :param files: (optional) Dictionary of ``'filename': file-like-objects``
            for multipart encoding upload.
        :param auth: (optional) Auth tuple or callable to enable
            Basic/Digest/Custom HTTP Auth.
        :param timeout: (optional) How long to wait for the server to send
            data before giving up, as a float, or a :ref:`(connect timeout,
            read timeout) <timeouts>` tuple.
        :type timeout: float or tuple
        :param allow_redirects: (optional) Set to True by default.
        :type allow_redirects: bool
        :param proxies: (optional) Dictionary mapping protocol or protocol and
            hostname to the URL of the proxy.
        :param stream: (optional) whether to immediately download the response
            content. Defaults to ``False``.
        :param verify: (optional) Either a boolean, in which case it controls whether we verify
            the server's TLS certificate, or a string, in which case it must be a path
            to a CA bundle to use. Defaults to ``True``.
        :param cert: (optional) if String, path to ssl client cert file (.pem).
            If Tuple, ('cert', 'key') pair.
        :rtype: requests.Response
        )
rqrNr9rrrryrwr_rx)rIrM)rrrmerge_environment_settingsrNr-rb)r;rqrNryrr9r_rrwrIrMrLrxrHrJrKrrcZprepZsettingsZsend_kwargsr<r&r&r*rhs()

zSession.requestcKs|jdd|jd|f|S)zSends a GET request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        rMTro)rlrh)r;rNkwargsr&r&r*r3szSession.getcKs|jdd|jd|f|S)zSends a OPTIONS request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        rMTZOPTIONS)rlrh)r;rNrr&r&r*options&szSession.optionscKs|jdd|jd|f|S)zSends a HEAD request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        rMFrn)rlrh)r;rNrr&r&r*head1szSession.headcKs|jd|f||d|S)aSends a POST request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param data: (optional) Dictionary, list of tuples, bytes, or file-like
            object to send in the body of the :class:`Request`.
        :param json: (optional) json to send in the body of the :class:`Request`.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        rp)rr)rh)r;rNrrrr&r&r*post<szSession.postcKs|jd|fd|i|S)auSends a PUT request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param data: (optional) Dictionary, list of tuples, bytes, or file-like
            object to send in the body of the :class:`Request`.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        ZPUTr)rh)r;rNrrr&r&r*putIs
zSession.putcKs|jd|fd|i|S)awSends a PATCH request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param data: (optional) Dictionary, list of tuples, bytes, or file-like
            object to send in the body of the :class:`Request`.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        ZPATCHr)rh)r;rNrrr&r&r*patchUs
z
Session.patchcKs|jd|f|S)zSends a DELETE request. Returns :class:`Response` object.

        :param url: URL for the new :class:`Request` object.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :rtype: requests.Response
        ZDELETE)rh)r;rNrr&r&r*deleteaszSession.deletec
Ks~|jd|j|jd|j|jd|j|jd|jt|trJtd|jdd}|j	d}|j
}|j|jd}t
}|j|f|}t
|}	t|	d	|_td
||f|}|jrx |jD]}
t|j|
j|
jqWt|j||j|j||f|}|r
dd|Dng}|r.|jd
||j}||_|sny"t|j||fddi||_Wntk
rlYnX|sz|j|S)zISend a given PreparedRequest.

        :rtype: requests.Response
        rHrJrKrLz#You can only send PreparedRequests.rMT)rN)Zsecondsr2cSsg|]}|qSr&r&)r'r<r&r&r*r+sz Session.send.<locals>.<listcomp>rrd)rlrHrJrKrLr,r
ValueErrorr]r3rxget_adapterrNpreferred_clockrbrelapsedrrQrr_rhrTrginsertnextZ_next
StopIterationrR)
r;rhrrMrHrxadapterstartrrr<genrQr&r&r*rbksB


"zSession.sendc
Cs|jrr|dk	r|jdnd}t||d}x |jD]\}}	|j||	q2W|dksZ|dkrrtjjdpptjjd}t||j}t||j	}t||j
}t||j}||||dS)z^
        Check the environment and merge it with some settings.

        :rtype: dict
        Nrj)rjTZREQUESTS_CA_BUNDLEZCURL_CA_BUNDLE)rJrLrHrK)rir3rr.rlosenvironr1rLrHrJrK)
r;rNrLrHrJrKrjZenv_proxiesr(r)r&r&r*rsz"Session.merge_environment_settingscCs>x,|jjD]\}}|jj|jr|SqWtd|dS)z~
        Returns the appropriate connection adapter for the given URL.

        :rtype: requests.adapters.BaseAdapter
        z*No connection adapters were found for '%s'N)rzr.lowerrYr)r;rNprefixrr&r&r*rszSession.get_adaptercCs x|jjD]}|jqWdS)z+Closes all adapters and as such the sessionN)rzvaluesrX)r;r)r&r&r*rXsz
Session.closecsB||j<fdd|jD}x|D]}|jj||j|<q$WdS)zwRegisters a connection adapter to a prefix.

        Adapters are sorted in descending order by prefix length.
        cs g|]}t|tkr|qSr&)rV)r'r()rr&r*r+sz!Session.mount.<locals>.<listcomp>N)rzr])r;rrZkeys_to_mover0r&)rr*r{s

z
Session.mountcsfddjD}|S)Ncsi|]}t|d|qS)N)getattr)r'attr)r;r&r*
<dictcomp>sz(Session.__getstate__.<locals>.<dictcomp>)	__attrs__)r;stater&)r;r*__getstate__szSession.__getstate__cCs&x |jD]\}}t|||q
WdS)N)r.setattr)r;rrvaluer&r&r*__setstate__szSession.__setstate__)NNNNNNNTNNNNNN)NN)N)N)rsrtru__doc__rr|r}rrrhr3rrrrrrrbrrrXr{rrr&r&r&r*rvVs2
7)
D



IrvcCstS)aZ
    Returns a :class:`Session` for context-management.

    .. deprecated:: 1.0.0

        This method has been deprecated since version 1.0.0 and is only kept for
        backwards compatibility. New code should use :class:`~requests.sessions.Session`
        to create a session. This may be removed at a future date.

    :rtype: Session
    )rvr&r&r&r*sessionsr)>rrsysZtimeZdatetimerrwrcompatrrrrr	r
r_rrr
rZmodelsrrrrxrrZ_internal_utilsrZutilsrrr
exceptionsrrrrZ
structuresrrzrrrr r!r"r#Zstatus_codesr$r%platformZperf_counterrAttributeErrorZclockr1r4objectr5rvrr&r&r&r*<module>	s@  
x%