Ejemplo n.º 1
0
def token():
    """Requests initial token is_bound=false"""
    url = ANDROID_HOST + '/token/device'
    params = dict(client_id='er_android_device',
                  device_id=DEVICE_ID,
                  timestamp=str(int(time.time())))
    resp = _request('get', url, params=params, headers=HEADERS)
    return utils.subset(resp, 'is_bound', 'token', 'expires')
Ejemplo n.º 2
0
def regions(token):
    url = ANDROID_HOST + '/er/misc/domains'
    resp = _request('get', url, headers=_headers(token))
    domains = []
    for item in resp['domains']:
        if item['code']:
            domain = utils.subset(item, 'extid', 'code', 'title')
            domains.append(domain)
    return domains
Ejemplo n.º 3
0
def auth(token, username, password, region):
    """Requests sso and then requests token is_bound=true"""

    url = ANDROID_HOST + '/er/ssoauth/auth'
    data = dict(username=username, password=password, region=region)
    resp = _request('post', url, headers=_headers(token), data=data)

    url = ANDROID_HOST + '/token/subscriber_device/by_sso'
    params = dict(sso_system='er', sso_key=resp['sso'])
    resp = _request('get', url, params=params, headers=_headers(token))
    return utils.subset(resp, 'is_bound', 'token', 'expires')
Ejemplo n.º 4
0
def sms_check(token, phone, region, agr_id, sms_code):
    url = ANDROID_HOST + '/er/sms/check'
    data = {
        'phone': phone,
        'region': region,
        'agr_id': str(agr_id),
        'sms_code': str(sms_code)
    }
    resp = _request('post', url, headers=_headers(token), data=data)
    if not resp.get('token'):
        raise ApiResponseError(
            {'message': resp['Agreements']['sms_error_text']})
    return utils.subset(resp, 'is_bound', 'token', 'expires')
Ejemplo n.º 5
0
def sms_auth(token, phone):
    url = ANDROID_HOST + '/er/ott/get_agreements_by_phone'
    params = {'phone_number': phone}
    resp = _request('get', url, params=params, headers=_headers(token))
    if not resp['principals']:
        raise ApiResponseError(
            {'message': _('error.contract_not_found') % phone})

    url = ANDROID_HOST + '/er/sms/auth'
    region = resp['principals'][0]['domain']
    data = {'phone': phone, 'region': region}
    resp = _request('post', url, headers=_headers(token), data=data)
    result = utils.subset(resp['agreements'], 'send_sms',
                          ('sms_error_text', 'message'),
                          (lambda d: d['agreement'][0]['agr_id'], 'agr_id'))
    result['region'] = region
    return result
Ejemplo n.º 6
0
def channels_all(token, public=False):
    url = ANDROID_HOST + '/channel_list/multiscreen'
    resp = _request('get', url, headers=_headers(token))
    chs = []
    for item in resp['collection']:
        ch = utils.subset(item, 'id', 'title', 'description',
                          ('er_lcn', 'lcn'))
        resources = {r['category']: r for r in item['resources']}
        if public and not resources.get('hls', {}).get('is_public'):
            continue
        res = {
            'hls_id': resources['hls']['id'],
            'poster_id': resources['poster_channel_grid_blueprint']['id']
        }
        ch.update(res)
        chs.append(ch)
    return {'channels': chs}
Ejemplo n.º 7
0
def _map_items(items, keys, res_map, limit=100, offset=0):
    mapped = []
    for item in items:
        offset += 1
        if item['available']['type'] == 'not-available':
            continue
        mi = utils.subset(item, *keys)
        resources = {r['type']: r for r in item['resources']}
        res = {}
        for data_key, res_type in res_map.items():
            if isinstance(res_type, str):
                res[data_key] = resources.get(res_type, {}).get('id')
            else:
                res[data_key] = next(
                    (resources[t]['id'] for t in res_type if resources.get(t)),
                    None)
        mi.update(res)
        mapped.append(mi)
        if len(mapped) == limit:
            break
    return [mapped, offset]
Ejemplo n.º 8
0
def test_subset():
    assert utils.subset({'a': 1, 'b': 2, 'c': 3}, 'a', 'c') == {'a': 1, 'c': 3}
    assert utils.subset({'a': 1, 'b': 2, 'c': 3}, 'a', ('c', 'y')) == {'a': 1, 'y': 3}
    assert utils.subset({'a': 1, 'b': 2, 'c': 3}, 'a', (lambda d: d['c'], 'y')) == {'a': 1, 'y': 3}