Esempio n. 1
0
    def _get_oesp_token(self):
        refresh_token = PluginCache.get_by_key("refreshToken")

        json_payload = {
            "refreshToken": refresh_token,
            "username": self.username
        }

        r = Utils.make_request(
            self.session,
            method="POST",
            url=
            "https://obo-prod.oesp.telenettv.be/oesp/v4/BE/nld/web/session?token=true",
            headers=self.construct_header(),
            data=json_payload)

        json_data = r.json()

        oesp_token = json_data["oespToken"]
        shared_profile_id = json_data["customer"]["sharedProfileId"]
        entitlements = json_data["entitlements"]

        PluginCache.set_data({
            "oespToken": oesp_token,
            "sharedProfileId": shared_profile_id,
            "entitlements": entitlements
        })
Esempio n. 2
0
    def _get_refresh_token(self):
        token = PluginCache.get_by_key("token")
        validity_token = PluginCache.get_by_key("validityToken")
        state = PluginCache.get_by_key("state")

        json_payload = {
            "authorizationGrant": {
                "authorizationCode": token,
                "validityToken": validity_token,
                "state": state
            }
        }

        r = Utils.make_request(
            self.session,
            method="POST",
            url=
            "https://obo-prod.oesp.telenettv.be/oesp/v4/BE/nld/web/authorization",
            headers=self.construct_header(),
            data=json_payload)

        json_data = r.json()

        refresh_token = json_data["refreshToken"]

        PluginCache.set_data({
            "refreshToken": refresh_token,
        })
Esempio n. 3
0
    def refresh_token(self):
        r = Utils.make_request(
            self.session,
            method="GET",
            url="https://obo-prod.oesp.telenettv.be/oesp/v4/BE/nld/web/session",
            headers=self.construct_header())

        json_data = r.json()

        oesp_token = json_data["oespToken"]
        PluginCache.set_data({"oespToken": oesp_token})
Esempio n. 4
0
    def web_authorization(self):
        r = Utils.make_request(
            self.session,
            method="GET",
            url=
            "https://obo-prod.oesp.telenettv.be/oesp/v4/BE/nld/web/authorization",
            headers=self.construct_header())

        json_data = r.json()

        self.authorization_uri = json_data["session"]["authorizationUri"]

        validity_token = json_data["session"]["validityToken"]
        state = json_data["session"]["state"]

        PluginCache.set_data({"validityToken": validity_token, "state": state})
Esempio n. 5
0
    def login(self):
        r = Utils.make_request(
            self.session,
            method="POST",
            url="https://login.prd.telenet.be/openid/login.do",
            headers=self.construct_header(
                content_type="application/x-www-form-urlencoded"),
            data={
                'j_username': '******'.format(self.username),
                'j_password': '******'.format(self.passwd),
                'rememberme': 'true'
            },
            is_json=False)

        last_response = r.history[-1]

        if "Location" in last_response.headers:
            token = Utils.extract_auth_token(
                last_response.headers.get('Location'))

            PluginCache.set_data({"token": token, "username": self.username})
Esempio n. 6
0
    def request_license_token(self, content_locator):
        # retry once
        for _ in range(2):
            status_code, json_data = self._request_license_token(
                content_locator)

            if status_code == 200:
                license_token = json_data.get("token")

                PluginCache.set_data({"licenseToken": license_token})

                break
            elif status_code == 400:
                new_device_id = Utils.create_token(64)
                bad_request = BadRequest.parse_error_object(json_data)

                if bad_request.code == BadRequest.KnownErrorCodes.DEVICE_UNREGISTERED:
                    self._register_device(new_device_id)
                    PluginCache.set_data({"deviceId": new_device_id})
                elif bad_request.code == BadRequest.KnownErrorCodes.DEVICE_UNREGISTERED_DEVICE_LIMIT_REACHED:
                    # get the existing registered devices
                    existing_devices = self.get_registered_device_list()

                    # select a random device to swap
                    random_device = random.choice(existing_devices)

                    # replace registered device with the randomly selected one
                    self.replace_registered_device(random_device.device_id,
                                                   new_device_id)
                    PluginCache.set_data({"deviceId": new_device_id})
Esempio n. 7
0
from resources.lib.Classes.StreamingFormat import StreamingFormat
import random
import json
import base64
from datetime import datetime, timedelta
import time

from resources.lib.kodiwrapper import KodiWrapper

DEVICE_NAME = "Mijn computer - Google Chrome"
DEVICE_CLASS = "other"
TOKEN_EXPIRY_GAP_MINUTES = 30

if not PluginCache.key_exists("deviceId"):
    PluginCache.set_data({
        "deviceId":
        "fe88cd8ace897d72c78441f648a2f92a4e298cced867179932d7c2751d79fb83"
    })


class BadRequest(object):
    class KnownErrorCodes:
        DEVICE_UNREGISTERED = "deviceUnregistered"
        DEVICE_UNREGISTERED_DEVICE_LIMIT_REACHED = "deviceUnregisteredDeviceLimitReached"

    def __init__(self, error_type="", code="", reason=""):
        self.type = error_type
        self.code = code
        self.reason = reason

    @staticmethod
    def parse_error_object(json_data):