Auth

Contents

Auth#

Client#

class podme_api.auth.PodMeAuthClient[source]#

Bases: ABC

Abstract base class for making authenticated requests to PodMe API.

This class provides a framework for handling authentication and making requests to the PodMe API. It manages user credentials, access tokens, and client sessions.

user_credentials: PodMeUserCredentials | None = None#

User authentication credentials.

Type:

(PodMeUserCredentials | None)

session: ClientSession | None = None#

The aiohttp.ClientSession to use for making requests.

Type:

(ClientSession | None)

request_timeout: float = 15#

Timeout for API requests in seconds.

abstract async async_get_access_token()[source]#

Asynchronously retrieve a valid access token.

Returns:

A valid access token for authentication.

Return type:

str

abstract get_credentials()[source]#

Retrieve the current credentials.

Returns:

A dictionary containing credentials, or None if not set.

Return type:

dict | None

abstract set_credentials(credentials)[source]#

Set new credentials.

Parameters:

credentials – The new credentials to be set.

abstract invalidate_credentials()[source]#

Invalidate the current credentials.

async close()[source]#

Close open client session.

Return type:

None

class podme_api.auth.PodMeDefaultAuthClient[source]#

Bases: PodMeAuthClient

Default authentication client for PodMe.

This class handles authentication using Schibsted credentials for the PodMe service.

user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:131.0) Gecko/20100101 Firefox/131.0'#

User agent string for API requests.

device_data = {'fonts': ['Arial', 'Bitstream Vera Sans Mono', 'Bookman Old Style', 'Century Schoolbook', 'Courier', 'Courier New', 'Helvetica', 'MS Gothic', 'MS PGothic', 'Palatino', 'Palatino Linotype', 'Times', 'Times New Roman'], 'hasLiedBrowser': '0', 'hasLiedOs': '0', 'platform': 'Ubuntu', 'plugins': ['PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf', 'Chrome PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf', 'Chromium PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf', 'Microsoft Edge PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf', 'WebKit built-in PDF::Portable Document Format::application/pdf~pdf,text/pdf~pdf'], 'userAgent': 'Firefox', 'userAgentVersion': '131.0'}#

Device information for authentication.

credentials: SchibstedCredentials | None = None#

Authentication credentials.

Type:

(SchibstedCredentials | None)

property request_header: dict[str, str]#

Generate a header for HTTP requests to the server.

async async_get_access_token()[source]#

Get a valid access token.

Returns:

The access token.

Return type:

str

Raises:

PodMeApiAuthenticationError – If no user credentials are provided.

async authorize(user_credentials)[source]#

Authorize the user and obtain credentials.

The obtained credentials is internally stored in the client.

Parameters:

user_credentials (PodMeUserCredentials) – The user’s credentials.

Raises:
Return type:

SchibstedCredentials

async refresh_token(credentials=None)[source]#

Refresh the access token.

The obtained credentials is internally stored in the client (_credentials).

Parameters:

credentials (SchibstedCredentials, optional) – The credentials to refresh. Defaults to _credentials.

Returns:

The refreshed credentials.

Return type:

SchibstedCredentials

async close()#

Close open client session.

Return type:

None

get_credentials()[source]#

Get the current credentials as a dictionary, or None if not set.

Return type:

dict | None

request_timeout: float = 15#

Timeout for API requests in seconds.

session: ClientSession | None = None#

The aiohttp.ClientSession to use for making requests.

Type:

(ClientSession | None)

user_credentials: PodMeUserCredentials | None = None#

User authentication credentials.

Type:

(PodMeUserCredentials | None)

set_credentials(credentials)[source]#

Set the credentials.

Parameters:

credentials (SchibstedCredentials | dict | str) – The credentials to set.

invalidate_credentials()[source]#

Invalidate the current credentials.

class podme_api.auth.PodMeUserCredentials[source]#

Bases: object

Represents user’s login details for PodMe authentication.

email: str#
password: str#
class podme_api.auth.SchibstedCredentials[source]#

Bases: BaseDataClassORJSONMixin

Represents Schibsted authentication credentials.

scope: str#
token_type: str#
access_token: str#
refresh_token: str#
expires_in: int#
id_token: str#
expiration_time: datetime#
account_created: bool | None = None#
email: str | None = None#
is_expired()[source]#

Models#

class podme_api.auth.models.PodMeUserCredentials[source]#

Bases: object

Represents user’s login details for PodMe authentication.

email: str#
password: str#
class podme_api.auth.models.SchibstedCredentials[source]#

Bases: BaseDataClassORJSONMixin

Represents Schibsted authentication credentials.

scope: str#
token_type: str#
access_token: str#
refresh_token: str#
expires_in: int#
id_token: str#
expiration_time: datetime#
account_created: bool | None = None#
email: str | None = None#
is_expired()[source]#
class podme_api.auth.models.SchibstedAuthClientData[source]#

Bases: BaseDataClassORJSONMixin

Represents Schibsted authentication client data.

app_type: str#
birthday_format: str#
company: str#
css: dict#
default_client_id: str#
domain: str#
email_receipts_enabled: bool#
id: str#
locale: str#
logo_mark_url: str#
logo_url: str#
merchant_id: int#
merchant_name: str#
merchant_type: str#
name: str#
pulse_provider_id: str#
session_service_domain: str#
support_url: str#
terms: dict#
uri_scheme: str#
teaser: dict | None = None#
class podme_api.auth.models.PodMeBffData[source]#

Bases: BaseDataClassORJSONMixin

Represents PodMe Backend-for-Frontend (BFF) data.

bff: dict#
client: SchibstedAuthClientData#
csrf_token: str#
default_terms_agreement: bool#
initial_state: dict#
pulse: dict#
re_captcha_site_key: str#
spid_url: str#