Source code for redditwarp.auth.utils


from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from typing import Optional, Mapping, MutableMapping

from base64 import b64encode
from urllib.parse import urlencode

def ___authorization_url(  # UNUSED: scrapped idea
    url: str,
    response_type: str,
    client_id: str,
    redirect_uri: Optional[str],
    scope: Optional[str] = None,
    state: Optional[str] = None,
    extra_params: Optional[Mapping[str, str]] = None,
) -> str:
    params = {
        'response_type': response_type,
        'client_id': client_id,
        'redirect_uri': redirect_uri,
        'scope': scope,
        'state': state,
        **(extra_params or {}),
    }
    params = {k: v for k, v in params.items() if v}
    return '%s?%s' % (url, urlencode(params))

[docs]def basic_auth(userid: str, password: str, *, scheme: str = 'Basic') -> str: """Make a basic auth string suitable for use in an `Authorization` header.""" b64_user_pass = b64encode(f"{userid}:{password}".encode()).decode() return f"{scheme} {b64_user_pass}"
[docs]def apply_basic_auth( headers: MutableMapping[str, str], userid: str, password: str, *, scheme: str = 'Basic', header_name: str = 'Authorization', ) -> None: """Write a basic auth string into the `Authorization` field of a headers mapping.""" headers[header_name] = basic_auth(userid, password, scheme=scheme)