|
|
@@ -6,12 +6,15 @@ import time
|
|
|
|
|
|
from rival_regions_wrapper import LOGGER
|
|
|
from rival_regions_wrapper.cookie_handler import CookieHandler
|
|
|
-from rival_regions_wrapper.exceptions import SessionExpireException, \
|
|
|
- NoLogginException
|
|
|
+from rival_regions_wrapper.exceptions import (
|
|
|
+ SessionExpireException,
|
|
|
+ NoLogginException,
|
|
|
+)
|
|
|
|
|
|
|
|
|
def session_handler(func):
|
|
|
"""Handle expired sessions"""
|
|
|
+
|
|
|
def wrapper(*args, **kwargs):
|
|
|
instance = args[0]
|
|
|
return try_run(instance, func, *args, **kwargs)
|
|
|
@@ -19,169 +22,189 @@ def session_handler(func):
|
|
|
def try_run(instance, func, *args, **kwargs):
|
|
|
try:
|
|
|
return func(*args, **kwargs)
|
|
|
- except (SessionExpireException, ConnectionError, ConnectionResetError):
|
|
|
+ except (
|
|
|
+ SessionExpireException,
|
|
|
+ ConnectionError,
|
|
|
+ ConnectionResetError,
|
|
|
+ ):
|
|
|
CookieHandler.remove_cookie(instance.username)
|
|
|
instance.login()
|
|
|
return try_run(instance, func, *args, **kwargs)
|
|
|
except NoLogginException:
|
|
|
instance.login()
|
|
|
return try_run(instance, func, *args, **kwargs)
|
|
|
+
|
|
|
return wrapper
|
|
|
|
|
|
+
|
|
|
def check_response(response):
|
|
|
"""Check resonse for authentication"""
|
|
|
if not isinstance(response, str):
|
|
|
response = response.text
|
|
|
- if "Session expired, please, reload the page" in response or \
|
|
|
- 'window.location="https://rivalregions.com";' in response:
|
|
|
+ if (
|
|
|
+ "Session expired, please, reload the page" in response
|
|
|
+ or 'window.location="https://rivalregions.com";' in response
|
|
|
+ ):
|
|
|
raise SessionExpireException()
|
|
|
|
|
|
+
|
|
|
@session_handler
|
|
|
def get(middleware, path, add_var_c=False):
|
|
|
"""Send get request to Rival Regions"""
|
|
|
- if path[0] == '/':
|
|
|
+ if path[0] == "/":
|
|
|
path = path[1:]
|
|
|
|
|
|
params = {}
|
|
|
if add_var_c:
|
|
|
- params['c'] = middleware.authentication_handler.var_c
|
|
|
+ params["c"] = middleware.authentication_handler.var_c
|
|
|
|
|
|
LOGGER.info(
|
|
|
- '"%s": GET: "%s" var_c: %s', middleware.username, path, add_var_c
|
|
|
- )
|
|
|
+ '"%s": GET: "%s" var_c: %s', middleware.username, path, add_var_c
|
|
|
+ )
|
|
|
if middleware.authentication_handler.session:
|
|
|
response = middleware.authentication_handler.session.get(
|
|
|
- url='https://rivalregions.com/{}'.format(path),
|
|
|
- params=params
|
|
|
+ url="https://rivalregions.com/{}".format(path), params=params
|
|
|
)
|
|
|
check_response(response)
|
|
|
else:
|
|
|
raise NoLogginException()
|
|
|
return response.text
|
|
|
|
|
|
+
|
|
|
@session_handler
|
|
|
def post(middleware, path, data=None):
|
|
|
"""Send post request to Rival Regions"""
|
|
|
- if path[0] == '/':
|
|
|
+ if path[0] == "/":
|
|
|
path = path[1:]
|
|
|
if not data:
|
|
|
data = {}
|
|
|
- data['c'] = middleware.authentication_handler.var_c
|
|
|
+ data["c"] = middleware.authentication_handler.var_c
|
|
|
|
|
|
LOGGER.info('"%s": POST: "%s"', middleware.username, path)
|
|
|
if middleware.authentication_handler.session:
|
|
|
response = middleware.authentication_handler.session.post(
|
|
|
- "https://rivalregions.com/{}".format(path),
|
|
|
- data=data
|
|
|
+ "https://rivalregions.com/{}".format(path), data=data
|
|
|
)
|
|
|
check_response(response)
|
|
|
else:
|
|
|
raise NoLogginException()
|
|
|
return response.text
|
|
|
|
|
|
+
|
|
|
@session_handler
|
|
|
def conference_message(middleware, conference_id, message):
|
|
|
"""Send conference message"""
|
|
|
browser = middleware.authentication_handler.get_browser()
|
|
|
try:
|
|
|
- browser.go_to('https://rivalregions.com/#slide/conference/{}'
|
|
|
- .format(conference_id)
|
|
|
+ browser.go_to(
|
|
|
+ "https://rivalregions.com/#slide/conference/{}".format(
|
|
|
+ conference_id
|
|
|
)
|
|
|
+ )
|
|
|
browser.refresh()
|
|
|
time.sleep(2)
|
|
|
|
|
|
character_count = 0
|
|
|
tmp_messages = []
|
|
|
- for sentence in message.split('\n'):
|
|
|
+ for sentence in message.split("\n"):
|
|
|
sentence_character_count = 0
|
|
|
tmp_sentence = []
|
|
|
- for word in sentence.split(' '):
|
|
|
+ for word in sentence.split(" "):
|
|
|
sentence_character_count += len(word) + 1
|
|
|
if sentence_character_count >= 899:
|
|
|
- message = '{}\n{}'.format('\n'.join(
|
|
|
- tmp_messages),
|
|
|
- ' '.join(tmp_sentence)
|
|
|
- )
|
|
|
- LOGGER.info('"%s": CONF "%s": next message length: %s',
|
|
|
- middleware.username, conference_id, len(message)
|
|
|
- )
|
|
|
- browser.type(message, id='message')
|
|
|
- browser.click(id='chat_send')
|
|
|
+ message = "{}\n{}".format(
|
|
|
+ "\n".join(tmp_messages), " ".join(tmp_sentence)
|
|
|
+ )
|
|
|
+ LOGGER.info(
|
|
|
+ '"%s": CONF "%s": next message length: %s',
|
|
|
+ middleware.username,
|
|
|
+ conference_id,
|
|
|
+ len(message),
|
|
|
+ )
|
|
|
+ browser.type(message, id="message")
|
|
|
+ browser.click(id="chat_send")
|
|
|
sentence_character_count = 0
|
|
|
tmp_sentence = []
|
|
|
character_count = 0
|
|
|
tmp_messages = []
|
|
|
tmp_sentence.append(word)
|
|
|
|
|
|
- sentence = ' '.join(tmp_sentence)
|
|
|
+ sentence = " ".join(tmp_sentence)
|
|
|
character_count += len(sentence) + 1
|
|
|
if character_count >= 900:
|
|
|
- message = '\n'.join(tmp_messages)
|
|
|
- LOGGER.info('"%s": CONF "%s": next message length: %s',
|
|
|
- middleware.username, conference_id, len(message)
|
|
|
- )
|
|
|
- browser.type(message, id='message')
|
|
|
- browser.click(id='chat_send')
|
|
|
+ message = "\n".join(tmp_messages)
|
|
|
+ LOGGER.info(
|
|
|
+ '"%s": CONF "%s": next message length: %s',
|
|
|
+ middleware.username,
|
|
|
+ conference_id,
|
|
|
+ len(message),
|
|
|
+ )
|
|
|
+ browser.type(message, id="message")
|
|
|
+ browser.click(id="chat_send")
|
|
|
character_count = 0
|
|
|
tmp_messages = []
|
|
|
tmp_messages.append(sentence)
|
|
|
|
|
|
if tmp_messages:
|
|
|
- message = '\n'.join(tmp_messages)
|
|
|
- LOGGER.info('"%s": CONF "%s": next message length: %s',
|
|
|
- middleware.username, conference_id, len(message)
|
|
|
- )
|
|
|
- browser.type(message, id='message')
|
|
|
- browser.click(id='chat_send')
|
|
|
-
|
|
|
- LOGGER.info('"%s": CONF "%s": finished sending message',
|
|
|
- middleware.username, conference_id
|
|
|
+ message = "\n".join(tmp_messages)
|
|
|
+ LOGGER.info(
|
|
|
+ '"%s": CONF "%s": next message length: %s',
|
|
|
+ middleware.username,
|
|
|
+ conference_id,
|
|
|
+ len(message),
|
|
|
)
|
|
|
+ browser.type(message, id="message")
|
|
|
+ browser.click(id="chat_send")
|
|
|
+
|
|
|
+ LOGGER.info(
|
|
|
+ '"%s": CONF "%s": finished sending message',
|
|
|
+ middleware.username,
|
|
|
+ conference_id,
|
|
|
+ )
|
|
|
finally:
|
|
|
browser.close_current_tab()
|
|
|
|
|
|
+
|
|
|
@session_handler
|
|
|
def conference_notification(middleware, conference_id, message, sound):
|
|
|
"""Send conference notification"""
|
|
|
data = {
|
|
|
- 'sound': 1 if sound else 0,
|
|
|
- 'text': message,
|
|
|
- 'c': middleware.authentication_handler.var_c,
|
|
|
- }
|
|
|
+ "sound": 1 if sound else 0,
|
|
|
+ "text": message,
|
|
|
+ "c": middleware.authentication_handler.var_c,
|
|
|
+ }
|
|
|
|
|
|
response = middleware.post(
|
|
|
- "https://rivalregions.com/rival/konffcm/{}/".format(
|
|
|
- conference_id
|
|
|
- ),
|
|
|
- data=data
|
|
|
- )
|
|
|
+ "https://rivalregions.com/rival/konffcm/{}/".format(conference_id),
|
|
|
+ data=data,
|
|
|
+ )
|
|
|
check_response(response)
|
|
|
- LOGGER.info('"%s": CONF: id %s send notification ',
|
|
|
- middleware.username,
|
|
|
- conference_id
|
|
|
- )
|
|
|
+ LOGGER.info(
|
|
|
+ '"%s": CONF: id %s send notification ',
|
|
|
+ middleware.username,
|
|
|
+ conference_id,
|
|
|
+ )
|
|
|
return response
|
|
|
|
|
|
+
|
|
|
@session_handler
|
|
|
def conference_change_title(middleware, conference_id, title):
|
|
|
"""Change conference title"""
|
|
|
data = {
|
|
|
- 't': title,
|
|
|
- 'c': middleware.authentication_handler.var_c,
|
|
|
- }
|
|
|
+ "t": title,
|
|
|
+ "c": middleware.authentication_handler.var_c,
|
|
|
+ }
|
|
|
response = middleware.post(
|
|
|
- "https://rivalregions.com/rival/changename/{}/".format(
|
|
|
- conference_id
|
|
|
- ),
|
|
|
- data=data
|
|
|
- )
|
|
|
+ "https://rivalregions.com/rival/changename/{}/".format(conference_id),
|
|
|
+ data=data,
|
|
|
+ )
|
|
|
check_response(response)
|
|
|
- LOGGER.info('"%s": CONF: id %s changed title',
|
|
|
- middleware.username,
|
|
|
- conference_id
|
|
|
- )
|
|
|
+ LOGGER.info(
|
|
|
+ '"%s": CONF: id %s changed title', middleware.username, conference_id
|
|
|
+ )
|
|
|
return response
|
|
|
|
|
|
+
|
|
|
@session_handler
|
|
|
def profile_message(middleware, profile_id, message):
|
|
|
"""send personal message"""
|
|
|
@@ -189,36 +212,38 @@ def profile_message(middleware, profile_id, message):
|
|
|
browser = middleware.authentication_handler.get_browser()
|
|
|
try:
|
|
|
browser.go_to(
|
|
|
- 'https://rivalregions.com/#messages/{}'.format(profile_id)
|
|
|
- )
|
|
|
+ "https://rivalregions.com/#messages/{}".format(profile_id)
|
|
|
+ )
|
|
|
browser.refresh()
|
|
|
time.sleep(2)
|
|
|
- browser.type(message, id='message')
|
|
|
- browser.click(id='chat_send')
|
|
|
- LOGGER.info('"%s:" PM: user id %s, finished sending message',
|
|
|
- middleware.username,
|
|
|
- profile_id
|
|
|
- )
|
|
|
+ browser.type(message, id="message")
|
|
|
+ browser.click(id="chat_send")
|
|
|
+ LOGGER.info(
|
|
|
+ '"%s:" PM: user id %s, finished sending message',
|
|
|
+ middleware.username,
|
|
|
+ profile_id,
|
|
|
+ )
|
|
|
finally:
|
|
|
browser.close_current_tab()
|
|
|
|
|
|
+
|
|
|
@session_handler
|
|
|
def language_message(middleware, language, message):
|
|
|
"""Send message in language chat"""
|
|
|
browser = middleware.authentication_handler.get_browser()
|
|
|
try:
|
|
|
browser.go_to(
|
|
|
- 'https://rivalregions.com/#slide/chat/lang_{}'.format(
|
|
|
- language
|
|
|
- )
|
|
|
- )
|
|
|
+ "https://rivalregions.com/#slide/chat/lang_{}".format(language)
|
|
|
+ )
|
|
|
browser.refresh()
|
|
|
time.sleep(2)
|
|
|
- browser.type(message, id='message')
|
|
|
- browser.click(id='chat_send')
|
|
|
+ browser.type(message, id="message")
|
|
|
+ browser.click(id="chat_send")
|
|
|
|
|
|
- LOGGER.info('"%s": CHAT: language %s, finished sending message',
|
|
|
- middleware.username, language
|
|
|
- )
|
|
|
+ LOGGER.info(
|
|
|
+ '"%s": CHAT: language %s, finished sending message',
|
|
|
+ middleware.username,
|
|
|
+ language,
|
|
|
+ )
|
|
|
finally:
|
|
|
browser.close_current_tab()
|