def parser(client, payload, main_number, mime, message_type=None): data = bert.decode(bytes(payload)) global main_id global friend_id global chat global message_id if data[0] == Atom("Profile"): for field in data[3][0][6]: if field[-1] == Atom('friend'): if field[1].split(b'_')[0] == string_to_bytes(main_number): log.debug('Main profile found') main_id = field[1] friend_id = field[1] chat = p2p(from_user=main_id, to=main_id) client.publish(topic="events/1//api/anon//", payload=bytearray( message_model(mime, container=Atom('chain'), feed_id=chat, from_user=main_id, to=main_id)), qos=2, retain=False) if data[0] == Atom( 'Message') and message_type == 'delete for me' and data[-1] == []: message_id = data[1] client.publish(topic="events/1//api/anon//", payload=bytearray( send_message(main_id, friend_id, chat, mime, message_id, message_type, main_id)), qos=2, retain=False) elif data[0] == Atom('Message') and data[-1] == Atom('delete'): log.debug('Verify group patched') Verify.true(data[1], "No message ID") client.disconnect() elif data[0] == Atom('Message'): log.debug('Verify group patched') Verify.true(data[1], "No message ID") client.disconnect() elif data == (Atom('io'), (Atom('error'), Atom('invalid_data')), b''): log.error("Something going wrong") client.disconnect() raise InvalidData("Invalid data response") if data == (Atom('io'), (Atom('error'), Atom('permission_denied')), b''): log.error("Something going wrong") client.disconnect() raise PermissionDenied("No permission")
def parser(client, payload, first_name, last_name, user_name=None): data = bert.decode(bytes(payload)) global userid if data[0] == Atom('Profile') and (data[-1]) == Atom('init'): roaster = (bert.decode(bytes(payload))[3]) global user_id user_id = roaster[0][1] rost = roster(user_id=user_id, first_name=first_name, last_name=last_name, status=Atom('patch')) client.publish(topic="events/1//api/anon//", payload=bytearray(rost), qos=2, retain=False) elif data[0] == Atom('Roster') and (data[-1]) == Atom('patch'): log.debug(user_id) log.debug(user_name) rost = roster(user_id=user_id, my_username=user_name, status=Atom('nick')) log.debug(rost) client.publish(topic="events/1//api/anon//", payload=bytearray(rost), qos=2, retain=False) elif user_name and data[0] == Atom('Roster') and ( data[-1]) == Atom('nick'): log.info("Verify roster/nick updated") Verify.true(data[5] == string_to_bytes(user_name), 'Username does not set') client.disconnect() elif data[0] == Atom('Roster') and ( data[-1]) == Atom('patch') and user_name is None: log.info("Verify user register") Verify.true(data[2] == string_to_bytes(first_name), 'First Name doesnt update') client.disconnect() elif data == (Atom('io'), (Atom('error'), Atom('invalid_data')), b''): log.error("Something going wrong") client.disconnect() raise InvalidData("Invalid data response") elif data == (Atom('io'), (Atom('error'), Atom('permission_denied')), b''): log.error("Something going wrong") client.disconnect() raise PermissionDenied("No permission")
def parser(client, payload, new_alias): data = bert.decode(bytes(payload)) global room_id global member_id if data[0] == Atom("Profile"): for field in data: if field and list == type(field): for room in field[0]: if room and list == type(room) and room[0][0] == Atom( 'Room'): for member_field in room[-1]: if member_field and list == type(member_field) and tuple == type(member_field[0]) \ and member_field[0][0] == Atom('Member'): global member_id member_id = member_field[0][1] client.publish(topic="events/1//api/anon//", payload=bytearray( member(member_id=member_id, container=Atom('chain'), alias=new_alias, status=Atom('patch'))), qos=2, retain=False) if data[0] == Atom('Member'): log.debug('Verify member patched') Verify.equals(string_to_bytes(new_alias), data[11], 'Not new alias') client.disconnect() if data == (Atom('io'), (Atom('error'), Atom('invalid_data')), b''): log.error("Something going wrong") client.disconnect() raise InvalidData("Invalid data response") if data == (Atom('io'), (Atom('error'), Atom('permission_denied')), b''): log.error("Something going wrong") client.disconnect() raise PermissionDenied("No permission")
def parser(client, payload, main_number): data = bert.decode(bytes(payload)) for node in data: if node == Atom('Profile') and data[8] == 'init': roster = (bert.decode(bytes(payload))[3]) user_id = roster[0][1] my = main_number + '_' + str(user_id) contacts = data[3][0][6] for field in contacts: if field[0] == Atom('Contact') and field[-1] == Atom('authorization'): client.publish(topic="events/1//api/anon//", payload=bytearray( friend(my_id=my, friend_id=field[1], status=Atom('confirm'))), qos=2, retain=False) if data == (Atom('io'), (Atom('error'), Atom('invalid_data')), b''): log.error("Something going wrong") client.disconnect() raise InvalidData("Invalid data response") if data == (Atom('io'), (Atom('error'), Atom('permission_denied')), b''): log.error("Something going wrong") client.disconnect() raise PermissionDenied("No permission")
def parser(client, payload, room_name): data = bert.decode(bytes(payload)) global room_id global my_alias if data[0] == Atom("Profile"): for field in data: if field and list == type(field): for room in field[0]: if room and list == type(room) and room[0][0] == Atom('Room'): global room_id room_id = room[-1][1] global my_alias my_alias = data[3][0][4] if data[3][0][4] else data[3][0][2]+data[3][0][3] client.publish(topic="events/1//api/anon//", payload=bytearray( patch_group(room_id, room_name)), qos=2, retain=False) if data[0] == Atom('Message'): log.debug('Verify group patched') for field in data: if field and list == type(field) and tuple == type(field[0]): print(field[0][3]) Verify.equals(b'Group is renamed to "'+string_to_bytes(room_name)+b'"', field[0][3], 'No message about patch') client.disconnect() if data == (Atom('io'), (Atom('error'), Atom('invalid_data')), b''): log.error("Something going wrong") client.disconnect() raise InvalidData("Invalid data response") if data == (Atom('io'), (Atom('error'), Atom('permission_denied')), b''): log.error("Something going wrong") client.disconnect() raise PermissionDenied("No permission")
def parser(chat_type, client, payload, main_number, friend_number, mime, message_type=None): data = bert.decode(bytes(payload)) global main_id global friend_id global p2p_chat global group_chat global message_id global member_id global group_friend_id if data[0] == Atom("Profile"): for field in data[3][0][6]: if field[-1] == Atom('friend'): if field[8]: p2p_chat = field[8][3] group_chat = data[3][0][7][-1][7][0][3] group_friend_id = data[3][0][7][-1][1] if chat_type == 'p2p' or chat_type == 'myself': for field in data[3][0][6]: if field[-1] == Atom('friend'): if field[1].split(b'_')[0] == string_to_bytes(main_number): log.debug('Main profile found') main_id = field[1] if chat_type == 'myself': friend_id = main_id message_id = field[8][1] p2p_chat = field[8][3] if chat_type == 'p2p': if field[0] == Atom('Contact') and field[-1] == Atom('friend') and \ field[1].split(b'_')[0] == string_to_bytes(friend_number): friend_id = field[1] if field[8]: message_id = field[8][1] p2p_chat = field[8][3] feature_model = feature(id='Autotest_feature_id' + str(time.time()).split('.')[0], key='TimeZone', value='Europe/Kiev', group='JOB_TIMEZONE') message_model = bert.decode( send_message(main_id, friend_id, p2p_chat, mime, data[1], message_type)) act_model = act(name='publish', data=main_id) time_plus_ten_min = (int(str(time.time()).split('.')[0]) + 6000) * 1000 client.publish(topic="events/1//api/anon//", payload=bytearray( job(feed_id=act_model, time=time_plus_ten_min, data=[message_model], settings=feature_model, status=Atom('init'))), qos=2, retain=False) if chat_type == 'group': for field in data[3][0][6]: if field[-1] == Atom('friend'): if field[1].split(b'_')[0] == string_to_bytes(main_number): log.debug('Main profile found') main_id = field[1] message_id = data[3][0][7][-1][15][1] friend_id = data[3][0][7][-1][1] member_id = data[3][0][7][-1][7][0][1] log.debug('Send job') feature_model = feature(id='Autotest_feature_id' + str(time.time()).split('.')[0], key='TimeZone', value='Europe/Kiev', group='JOB_TIMEZONE') message_model = bert.decode( send_message(main_id, group_friend_id, group_chat, mime, data[1], message_type)) act_model = act(name='publish', data=main_id) time_plus_ten_min = (int(str(time.time()).split('.')[0]) + 600) * 1000 client.publish(topic="events/1//api/anon//", payload=bytearray( job(feed_id=act_model, time=time_plus_ten_min, data=[message_model], settings=feature_model, status=Atom('init'))), qos=2, retain=False) elif data[0] == Atom('Job') and data[-1] == Atom('pending'): log.debug('Verify job go to pending') Verify.true(data[0] == Atom('Job') and data[-1] == Atom('pending'), 'Job not in pending') client.disconnect() elif data == (Atom('io'), (Atom('error'), Atom('invalid_data')), b''): log.error("Something going wrong") client.disconnect() raise InvalidData("Invalid data response") if data == (Atom('io'), (Atom('error'), Atom('permission_denied')), b''): log.error("Something going wrong") client.disconnect() raise PermissionDenied("No permission")
def parser(chat_type, client, payload, main_number, friend_number, mime, message_type=None): data = bert.decode(bytes(payload)) global main_id global friend_id global p2p_chat global group_chat global message_id global member_id global group_friend_id if data[0] == Atom("Profile"): for field in data[3][0][6]: if field[-1] == Atom('friend'): if field[8]: p2p_chat = field[8][3] group_chat = data[3][0][7][-1][7][0][3] group_friend_id = data[3][0][7][-1][1] for field in data[3][0][6]: if field[0] == Atom('Contact') and field[-1] == Atom('friend') and \ field[1].split(b'_')[0] == string_to_bytes(friend_number): friend_id = field[1] if chat_type == 'p2p': for field in data[3][0][6]: if field[-1] == Atom('friend'): if field[1].split(b'_')[0] == string_to_bytes(main_number): log.debug('Main profile found') main_id = field[1] if field[0] == Atom('Contact') and field[-1] == Atom('friend') and \ field[1].split(b'_')[0] == string_to_bytes(friend_number): friend_id = field[1] if field[8]: message_id = field[8][1] d = send_message(main_id, friend_id, p2p_chat, mime, message_id, message_type, message_text=message_text) log.info('=' * 5 + 'REQUEST' + '=' * 5 + '\r\n' + str(bert.decode(d)) + '\r\n') client.publish(topic="events/1//api/anon//", payload=bytearray(d), qos=2, retain=False) if chat_type == 'group': for field in data[3][0][6]: if field[-1] == Atom('friend'): if field[1].split(b'_')[0] == string_to_bytes(main_number): log.debug('Main profile found') main_id = field[1] message_id = data[3][0][7][-1][15][1] member_id = data[3][0][7][-1][7][0][1] d = send_message(main_id, group_friend_id, group_chat, mime, message_id, message_type, message_text=message_text) log.info('=' * 5 + 'REQUEST' + '=' * 5 + '\r\n' + str(bert.decode(d)) + '\r\n') client.publish(topic="events/1//api/anon//", payload=bytearray(d), qos=2, retain=False) elif data[0] == Atom('Message') and data[11] == [Atom('forward')]: log.debug('Verify') log.debug(data) client.disconnect() elif data[0] == Atom('Message'): log.debug('Send job') message_model = [] if chat_type == 'p2p': message_model = bert.decode( send_message(main_id, group_friend_id, group_chat, mime, data[1], message_type='forward', message_text=message_text)) elif chat_type == 'group': message_model = bert.decode( send_message(main_id, friend_id, p2p_chat, mime, data[1], message_type='forward', message_text=message_text)) act_model = act(name='publish', data=main_id) client.publish(topic="events/1//api/anon//", payload=bytearray( job(feed_id=act_model, data=[message_model], status=Atom('init'))), qos=2, retain=False) elif data == (Atom('io'), (Atom('error'), Atom('invalid_data')), b''): log.error("Something going wrong") client.disconnect() raise InvalidData("Invalid data response") if data == (Atom('io'), (Atom('error'), Atom('permission_denied')), b''): log.error("Something going wrong") client.disconnect() raise PermissionDenied("No permission")
def parser(client, payload, main_number, friend_phone, avatar=False, alias_check=False): data = bert.decode(bytes(payload)) global user_id global main_first_name global main_last_name if data[0] == Atom('Profile') and data[8] == 'init': contacts = data[3][0][6] for field in contacts: if field[0] == Atom('Contact') and field[1].split( b'_')[0] == string_to_bytes(main_number): log.debug('Main profile found') user_id = main_id = field[1] main_first_name = field[3] main_last_name = field[4] main_alias = [] if field[5]: main_alias = field[5] if field[0] == Atom('Contact') and field[-1] == Atom('friend') and \ field[1].split(b'_')[0] == string_to_bytes(friend_phone): friend_id = field[1] friend_first_name = field[3] friend_last_name = field[4] friend_alias = [] if field[5]: friend_alias = field[5] client.publish(topic="events/1//api/anon//", payload=bytearray( create_group(main_id, main_first_name, main_last_name, main_alias, friend_id, friend_first_name, friend_last_name, friend_alias, avatar)), qos=2, retain=False) if data[0] == Atom('Room') and alias_check: log.info('Verify group created and alias exist') Verify.true( (data[15][10][0][3] == user_id + b' created the group' and ([ field[0][11] for field in data if field and list == type(field) and int != type(field[0]) and field[0][-1] == Atom("admin") ][0] == main_first_name + main_last_name)), "No message about creation") client.disconnect() elif data[0] == Atom('Room'): log.info("Verify group creation") Verify.true((data[15][10][0][3] == user_id + b' created the group' and (data[8] != [] if avatar else True)), "No message about creation") client.disconnect() if data == (Atom('io'), (Atom('error'), Atom('invalid_data')), b''): log.error("Something going wrong") client.disconnect() raise InvalidData("Invalid data response") if data == (Atom('io'), (Atom('error'), Atom('permission_denied')), b''): log.error("Something going wrong") client.disconnect() raise PermissionDenied("No permission")
def parser(client, payload, first_name=None, last_name=None, user_name=None, avatar=None): data = bert.decode(bytes(payload)) if data[0] == Atom('Profile') and (data[-1]) == Atom('init'): roas = (bert.decode(bytes(payload))[3]) userid = roas[0][1] if user_name: first_name = '' last_name = '' avatar = [] status = Atom('nick') elif avatar: first_name = [] last_name = [] user_name = '' status = Atom('patch') else: avatar = [] status = Atom('patch') client.publish(topic="events/1//api/anon//", payload=bytearray( roster(user_id=userid, first_name=first_name, last_name=last_name, my_username='', avatar=avatar, status=status)), qos=2, retain=False) if data[0] == Atom('Roster') and (data[-1]) == Atom('nick'): log.info("Verify roster/nick updated") Verify.true(data[5] == string_to_bytes(user_name), 'Username does not set') client.disconnect() elif data[0] == Atom('Roster') and (data[-1]) == Atom('patch') and avatar: log.info("Verify roster/avatar updated") Verify.true(data[11] == string_to_bytes(avatar), 'Username does not set') client.disconnect() elif data[0] == Atom('Roster') and (data[-1]) == Atom('patch'): log.info("Verify roster/name updated") Verify.true(data[2] == string_to_bytes(first_name), 'Username does not set') client.disconnect() elif data == (Atom('io'), (Atom('error'), Atom('invalid_data')), b'') or data == \ (Atom('io'), (Atom('error'), Atom('invalid_nick')), b''): log.error("Something going wrong") client.disconnect() raise InvalidData("Invalid data response") if data == (Atom('io'), (Atom('error'), Atom('permission_denied')), b''): log.error("Something going wrong") client.disconnect() raise PermissionDenied("No permission")
def parser(client, payload, name, main_number, friend_phone, avatar=False, alias_check=False, group_avatar=None): data = bert.decode(bytes(payload)) global user_id global main_id global main_first_name global main_last_name global main_alias global friend_id global friend_first_name global friend_last_name global friend_alias if data[0] == Atom('Profile') and data[8] == 'init': contacts = data[3][0][6] for field in contacts: if field[0] == Atom('Contact') and field[1].split(b'_')[0] == string_to_bytes(main_number): log.debug('Main profile found') user_id = main_id = field[1] main_first_name = field[3] main_last_name = field[4] main_alias = [] if field[5]: main_alias = field[5] if field[0] == Atom('Contact') and field[-1] == Atom('friend') and \ field[1].split(b'_')[0] == string_to_bytes(friend_phone): friend_id = field[1] friend_first_name = field[3] friend_last_name = field[4] friend_alias = [] if field[5]: friend_alias = field[5] room_id = 'Autotest_group_id'+str(time.time()).split('.')[0] friend_member = member(container=Atom('chain'), phone_id=friend_id, names=friend_first_name, surnames=friend_last_name, alias=friend_alias, status=Atom('member')) main_admin = member(container=Atom('chain'), phone_id=main_id, names=main_first_name, surnames=main_last_name, alias=main_alias, status=Atom('admin')) room_data = [] if group_avatar: avatar_module = Atom('Desc') avatar_id = 'Autotest_avatar' + str(time.time()).split('.')[0] mime = 'image' avatar_payload = "https://s3-us-west-2.amazonaws.com/nynja-defaults/Image_" \ "153310818583129_86FC1EF5-C297-4A1A-9FA1-A7D3C5E27E0E1533108186.jpg" parentid = [] avatar_data = [] room_data = [(avatar_module, avatar_id, mime, avatar_payload, parentid, avatar_data)] client.publish(topic="events/1//api/anon//", payload=bytearray( room(room_id=room_id,name=name,members=[bert.decode(friend_member)], admins=[bert.decode(main_admin)], data=room_data, room_status=Atom('create'))), qos=2, retain=False) if data[0] == Atom('Room') and alias_check: log.info('Verify group created and alias exist') Verify.true((data[15][10][0][3] == user_id + b' created the group' and ([field[0][11] for field in data if field and list == type(field) and int != type(field[0]) and field[0][-1] == Atom("admin")][0] == main_first_name + main_last_name)), "No message about creation") client.disconnect() elif data[0] == Atom('Room'): log.info("Verify group creation") Verify.true((data[15][10][0][3] == user_id + b' created the group' and (data[8] != [] if avatar else True)), "No message about creation") client.disconnect() elif data == (Atom('io'), (Atom('error'), Atom('invalid_data')), b''): log.error("Something going wrong") client.disconnect() raise InvalidData("Invalid data response") elif data == (Atom('io'), (Atom('error'), Atom('permission_denied')), b''): log.error("Something going wrong") client.disconnect() raise PermissionDenied("No permission")