Skip to content

Commit

Permalink
Merge branch 'release/1.1.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
Timofei committed Oct 3, 2020
2 parents a88865a + e00f465 commit d2b7c22
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 26 deletions.
49 changes: 32 additions & 17 deletions api.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,35 +5,50 @@ class Tele2Api:
session: ClientSession
access_token: str

def __init__(self, phone_number: str, access_token: str = ''):
base_api = f'https://msk.tele2.ru/api/subscribers/{phone_number}'
def __init__(self, phone_number: str, region_url: str = '',
access_token: str = ''):
base_api = f'https://{region_url}/api/subscribers/{phone_number}'
self.region_query_api = 'https://tele2.ru/'
self.market_api = f'{base_api}/exchange/lots/created'
self.rests_api = f'{base_api}/rests'
self.profile_api = f'{base_api}/profile'
self.sms_post_url = f'https://msk.tele2.ru/api/validation/number/{phone_number}'
self.auth_post_url = 'https://my.tele2.ru/auth/realms/tele2-b2c/protocol/openid-connect/token'
self.sms_post_url = 'https://{}/api/validation/number/{}'
self.auth_post_url = 'https://{}/auth/realms/tele2-b2c/protocol/openid-connect/token'
self.access_token = access_token

async def __aenter__(self):
self.session = ClientSession(headers={
'Authorization': f'Bearer {self.access_token}'
})
headers = {}
if self.access_token:
headers['Authorization'] = f'Bearer {self.access_token}'
self.session = ClientSession(headers=headers)
return self

async def __aexit__(self, *args):
await self.session.close()

async def send_sms_code(self):
await self.session.post(self.sms_post_url, json={'sender': 'Tele2'})
async def send_sms_code(self, phone_number: str, region_url: str):
await self.session.post(
self.sms_post_url.format(region_url, phone_number),
json={'sender': 'Tele2'})

async def get_access_token(self, phone_number: str, sms_code: str):
response = await self.session.post(self.auth_post_url, data={
'client_id': 'digital-suite-web-app',
'grant_type': 'password',
'username': phone_number,
'password': sms_code,
'password_type': 'sms_code'
})
async def determine_region(self):
resp = await self.session.get(self.region_query_api,
allow_redirects=False)
full_region_url = resp.headers['Location']
region_url = full_region_url.split('/')[2]
self.region_url = region_url
return region_url

async def get_access_token(self, phone_number: str, sms_code: str,
region_url: str):
response = await self.session.post(
self.auth_post_url.format(region_url), data={
'client_id': 'digital-suite-web-app',
'grant_type': 'password',
'username': phone_number,
'password': sms_code,
'password_type': 'sms_code'
})
return (await response.json())['access_token']

async def check_auth_code(self):
Expand Down
15 changes: 9 additions & 6 deletions auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,23 +40,25 @@ def get_phone_number():
return phone_number


async def get_access_token(api: Tele2Api, phone_number: str):
await api.send_sms_code()
async def get_access_token(api: Tele2Api, phone_number: str, region_url: str):
await api.send_sms_code(phone_number, region_url)
while True:
try:
sms_code = input(Fore.LIGHTCYAN_EX + 'SMS code: ')
access_token = await api.get_access_token(phone_number, sms_code)
access_token = await api.get_access_token(phone_number, sms_code,
region_url)
return access_token
except KeyError:
print(Fore.RED + 'Invalid SMS-сode. Try again')


def save_config(phone_number: str, access_token: str):
def save_config(phone_number: str, access_token: str, region_url: str):
print(Fore.GREEN + 'Successful auth!')
with open('config.json', 'w') as f:
json.dump({
'number': phone_number,
'token': access_token,
'region_url': region_url,
'date': datetime.now().strftime('%Y-%m-%d %H:%M:%S')
}, f, indent=2)
print(Fore.YELLOW + 'Token saved to ' + Fore.BLUE + 'config.json')
Expand All @@ -66,8 +68,9 @@ async def main():
colorama_init(autoreset=True)
phone_number = get_phone_number()
async with Tele2Api(phone_number) as api:
access_token = await get_access_token(api, phone_number)
save_config(phone_number, access_token)
region_url = await api.determine_region()
access_token = await get_access_token(api, phone_number, region_url)
save_config(phone_number, access_token, region_url)


if __name__ == '__main__':
Expand Down
7 changes: 4 additions & 3 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@ def load_config():
obj = json.load(f)
phone_number = obj['number']
access_token = obj['token']
region_url = obj['region_url']
date = obj['date']
return access_token, date, phone_number
return access_token, date, phone_number, region_url


async def check_auth(api: Tele2Api):
Expand Down Expand Up @@ -207,8 +208,8 @@ async def menu_again_action(api, deleted_lots):


async def main():
access_token, date, phone_number = load_config()
async with Tele2Api(phone_number, access_token) as api:
access_token, date, phone_number, region_url = load_config()
async with Tele2Api(phone_number, region_url, access_token) as api:
colorama_init(autoreset=True)
await check_auth(api)
print_token_time(date)
Expand Down

0 comments on commit d2b7c22

Please sign in to comment.