Skip to content

Client

This is the main submodules that lets you interact with Skroutz API. Supported endpoints are attributes of client object, therefore, you can retrieve data using only a client object.

SkroutzClient

Skroutz Client Class. This is the main class that lets you interact with Skroutz API.

Examples:

In order to interact with Skroutz API you have to initiate a SkroutzClient object. You have to provide the client id and the client secret.

>>> import pyskroutz
>>> client = pyskroutz.client("<client-id>", "<client-secret>")

Check out the available endpoints for further details.

Source code in pyskroutz/client.py
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
class SkroutzClient:
    """Skroutz Client Class. This is the main class that lets you interact with Skroutz API.

    Examples:
        In order to interact with Skroutz API you have to initiate a `SkroutzClient` object.
        You have to provide the client id and the client secret.

        >>> import pyskroutz
        >>> client = pyskroutz.client("<client-id>", "<client-secret>")

        Check out the available endpoints for further details.
    """

    _access_token: str
    _access_token_type: str

    def __init__(
        self, client_id: str, client_secret: str, raise_auth_error: bool = True
    ) -> None:
        """
        Initiates an SkroutzClient object.

        Args:
            client_id: The client id.
            client_secret: The client secret.
        """
        self._client_id = client_id
        self._client_secret = client_secret
        self._authenticate(raise_auth_error=raise_auth_error)
        self._session = requests.Session()

    def _authenticate(self, raise_auth_error: bool = True) -> None:
        req = requests.post(
            "https://www.skroutz.gr/oauth2/token",
            data={
                "client_id": self._client_id,
                "client_secret": self._client_secret,
                "grant_type": "client_credentials",
                "scope": "public",
            },
        )
        if raise_auth_error:
            req.raise_for_status()

        self._access_token = req.json().get("access_token", "test")
        self._access_token_type = req.json().get("token_type", "test")

    @property
    def headers(self) -> Dict[str, str]:
        """Get headers using the access token.

        Returns: Headers dictionary.
        """
        return {
            "Accept": "application/vnd.skroutz+json; version=3",
            "Authorization": "%s %s"
            % (
                getattr(self, "_access_token_type", "").capitalize(),
                getattr(self, "_access_token", ""),
            ),
        }

    @property
    def session(self):
        return self._session

    @session.setter
    def session(self, value):
        self._session = value

headers: Dict[str, str] property

Get headers using the access token.

__init__(client_id, client_secret, raise_auth_error=True)

Initiates an SkroutzClient object.

Parameters:

Name Type Description Default
client_id str

The client id.

required
client_secret str

The client secret.

required
Source code in pyskroutz/client.py
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def __init__(
    self, client_id: str, client_secret: str, raise_auth_error: bool = True
) -> None:
    """
    Initiates an SkroutzClient object.

    Args:
        client_id: The client id.
        client_secret: The client secret.
    """
    self._client_id = client_id
    self._client_secret = client_secret
    self._authenticate(raise_auth_error=raise_auth_error)
    self._session = requests.Session()