Esempio n. 1
0
def fetch_url(url):
    """
    HTTP GET on url, remove byte order mark
    """
    with session.Session() as sess:
        resp = sess.get(url)
        return resp.text.encode("utf-8")
Esempio n. 2
0
def fetch_url(url, headers=None, data=None):
    """Simple function that fetches a URL using requests."""
    with session.Session() as sess:
        if headers:
            sess.headers.update(headers)
        if data:
            request = sess.post(url, data=data)
        else:
            request = sess.get(url)
        res = request.text
    return res
Esempio n. 3
0
def fetch_auth_token():
    """Perform a HTTP POST to secure server to fetch a token"""
    utils.log('Fetching new auth token')
    try:
        sess = session.Session()
        request = sess.post(config.token_url)
        request.raise_for_status()
        data = json.loads(request.text)
        token = data['sessiontoken']['response']['token']
        return token
    except Exception as e:
        raise Exception('Failed to fetch SBS streaming token: %s' % e)
def get_paid_token(username, password):
    session = custom_session.Session(force_tlsv1=False)
    prog_dialog = xbmcgui.DialogProgress()
    prog_dialog.create('Logging in with mobile service')
    prog_dialog.update(1, 'Obtaining user ID from AWS')
    try:
        client = boto3.client('cognito-idp',
                              region_name=config.AWS_REGION,
                              aws_access_key_id='',
                              aws_secret_access_key='')
        aws = AWSSRP(username=username,
                     password=password,
                     pool_id=config.AWS_POOL_ID,
                     client_id=config.AWS_CLIENT_ID,
                     client=client)
    except NameError:
        raise TelstraAuthException('Paid subscriptions not supported on some '
                                   'platforms of Kodi < 18. Please upgrade to '
                                   'Kodi 18 to resolve this.')
    try:
        tokens = aws.authenticate_user().get('AuthenticationResult')
    except Exception as e:
        raise TelstraAuthException(str(e))

    response = client.get_user(AccessToken=tokens.get('AccessToken'))
    userid = response.get('Username')

    prog_dialog.update(33, 'Obtaining oauth token')
    config.OAUTH_DATA.update({'x-user-id': userid})
    oauth_resp = session.post(config.OAUTH_URL, data=config.OAUTH_DATA)
    oauth_json = json.loads(oauth_resp.text)
    access_token = oauth_json.get('access_token')
    session.headers = {}
    session.headers.update(
        {'Authorization': 'Bearer {0}'.format(access_token)})

    prog_dialog.update(66, 'Checking for valid subscription')
    try:
        session.get(config.MEDIA_PURCHASE_URL.format(userid))

    except requests.exceptions.HTTPError as e:
        if e.response.status_code == 404:
            message = json.loads(e.response.text).get('message')
            raise TelstraAuthException(message)
        else:
            utils.log(json.loads(e.response.text).get('exception'))
            raise TelstraAuthException('Unknown error. Please check the log '
                                       'for more information.')
    session.close()
    prog_dialog.update(100, 'Finished!')
    prog_dialog.close()
    return json.dumps({'pai': str(userid), 'bearer': access_token})
def fetch_url(url, data=None, headers=None, request_token=False):
    """Simple function that fetches a URL using requests."""
    with session.Session() as sess:
        if headers:
            sess.headers.update(headers)

        # Token headers
        if request_token:
            update_token(sess)

        if data:
            request = sess.post(url, data)
        else:
            request = sess.get(url)
        try:
            request.raise_for_status()
        except Exception as e:
            # Just re-raise for now
            raise e
        if request.text[0] == u'\ufeff':  # bytes \xef\xbb\xbf in utf-8 encding
            request.encoding = 'utf-8-sig'
        data = request.text
    return data.encode('utf-8')