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")
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
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')