Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- import json
- import time
- import sys
- from cmd_utils import command_client
- from log_config import client_log
- HOST = '127.0.0.1'
- PORT = 7777
- CODING = 'utf-8'
- ACTION = 'presence'
- TIME = time.time()
- USERNAME = 'Evgeny'
- PASSWORD = 1
- TEST_MESSAGE = 'Hello, server!'
- TEMPLATE = {'action': ACTION,
- 'time': TIME,
- 'type': '',
- 'to': '',
- 'from': '',
- 'message': '',
- 'encoding': CODING,
- 'user': {
- 'account_name': USERNAME,
- 'password': PASSWORD
- }
- }
- # делает сообщение
- @client_log
- def make_request(text, type='msg', to='', from_=''):
- '''
- возвращает словарь по шаблону TEMPLATE
- :param text: текст сообщения в поле 'message'
- :param type: по умолчанию - текстовое сообщение
- :param to: кому адресовано сообщение (# - для группы)
- :param from_: от кого 7??
- :return:
- '''
- message = TEMPLATE
- message['message'] = text
- return message
- # отправляет сообщение(request) на сервер
- @client_log
- def send_request(sock, message):
- if isinstance(sock, socket.socket):
- try:
- message_ = json.dumps(message).encode(CODING)
- sock.send(message_)
- return True
- except socket.error:
- print('Возникла ошибка при попытке отправить сообщение на сервер')
- return False
- # определиться, что передавать в аргументы
- # принимает ответ(response) от сервера
- @client_log
- def get_response(sock, size=1024):
- if isinstance(sock, socket.socket):
- try:
- message = sock.recv(size)
- return message
- except socket.error:
- print('Возникла ошибка при получении сообщений от сервера')
- return False
- # разбирает ответ с сервера
- # определиться, что будет возвращать
- @client_log
- def parse_response(message):
- '''
- разбирает полученное с сервера сообщение
- :param message: сообщение в byte
- :return: ???сообщение в dict, или кортеж со значениями по определенным ключам из dict???
- '''
- if isinstance(message, bytes):
- try:
- parse_message = json.loads(message.decode(CODING))
- p_time = time.localtime(parse_message['time'])
- parse_message['time'] = time.strftime('%d.%m.%Y - %H:%M:%S', p_time)
- if 'alert' in parse_message:
- print('{} {} / {}'.format(parse_message['response'], parse_message['alert'], parse_message['time']))
- return parse_message['response'], parse_message['alert'], parse_message['time']
- elif 'error' in parse_message:
- print('{} {} / {}'.format(parse_message['response'], parse_message['error'], parse_message['time']))
- return parse_message['response'], parse_message['error'], parse_message['time']
- except:
- print('Возникла ошибка при обработке ответа от сервера')
- # здесь код
- def client_action(params):
- sock = socket.socket()
- sock.connect(params)
- request = make_request(TEST_MESSAGE, from_=USERNAME, to=USERNAME)
- send_request(sock, request)
- response = get_response(sock)
- parse_response(response)
- sock.close()
- if __name__ == '__main__':
- client_action(command_client(sys.argv))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement