From 8b2afa3530699ae0cdeed7fa3b4adb0704f565e6 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Sat, 14 Apr 2018 13:20:44 +0200 Subject: [PATCH] Separate error fetching from generation --- telethon_generator/error_generator.py | 30 ++----------------------- telethon_generator/fetch_errors.py | 32 +++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 28 deletions(-) create mode 100644 telethon_generator/fetch_errors.py diff --git a/telethon_generator/error_generator.py b/telethon_generator/error_generator.py index 4aad78ec..676ef669 100644 --- a/telethon_generator/error_generator.py +++ b/telethon_generator/error_generator.py @@ -1,10 +1,7 @@ import json import re -import urllib.request from collections import defaultdict -URL = 'https://rpc.pwrtelegram.xyz/?all' - known_base_classes = { 303: 'InvalidDCError', 400: 'BadRequestError', @@ -25,26 +22,6 @@ known_codes = { } -def fetch_errors(output, url=URL): - print('Opening a connection to', url, '...') - r = urllib.request.urlopen(urllib.request.Request( - url, headers={'User-Agent' : 'Mozilla/5.0'} - )) - print('Checking response...') - data = json.loads( - r.read().decode(r.info().get_param('charset') or 'utf-8') - ) - if data.get('ok'): - print('Response was okay, saving data') - with open(output, 'w', encoding='utf-8') as f: - json.dump(data, f, sort_keys=True) - return True - else: - print('The data received was not okay:') - print(json.dumps(data, indent=4, sort_keys=True)) - return False - - def get_class_name(error_code): if isinstance(error_code, int): return known_base_classes.get( @@ -170,8 +147,5 @@ def generate_code(output, json_file, errors_desc): if __name__ == '__main__': - if input('generate (y/n)?: ').lower() == 'y': - generate_code('../telethon/errors/rpc_error_list.py', - 'errors.json', 'error_descriptions') - elif input('fetch (y/n)?: ').lower() == 'y': - fetch_errors('errors.json') + generate_code('../telethon/errors/rpc_error_list.py', + 'errors.json', 'error_descriptions') diff --git a/telethon_generator/fetch_errors.py b/telethon_generator/fetch_errors.py new file mode 100644 index 00000000..2402937c --- /dev/null +++ b/telethon_generator/fetch_errors.py @@ -0,0 +1,32 @@ +import sys +import json +import urllib.request + +OUT = 'errors.json' +URL = 'https://rpc.pwrtelegram.xyz/?all' + + +def fetch_errors(output, url=URL): + print('Opening a connection to', url, '...') + r = urllib.request.urlopen(urllib.request.Request( + url, headers={'User-Agent' : 'Mozilla/5.0'} + )) + print('Checking response...') + data = json.loads( + r.read().decode(r.info().get_param('charset') or 'utf-8') + ) + if data.get('ok'): + print('Response was okay, saving data') + with open(output, 'w', encoding='utf-8') as f: + json.dump(data, f, sort_keys=True) + return True + else: + print('The data received was not okay:') + print(json.dumps(data, indent=4, sort_keys=True)) + return False + + +if __name__ == '__main__': + out = OUT if len(sys.argv) < 2 else sys.argv[2] + url = URL if len(sys.argv) < 3 else sys.argv[3] + fetch_errors(out, url)