|  | @@ -0,0 +1,94 @@
 | 
	
		
			
				|  |  | +import asyncio
 | 
	
		
			
				|  |  | +from webbot.webbot import Browser
 | 
	
		
			
				|  |  | +import time
 | 
	
		
			
				|  |  | +import requests
 | 
	
		
			
				|  |  | +from requests_futures import sessions
 | 
	
		
			
				|  |  | +import re
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class RRBotException(Exception):
 | 
	
		
			
				|  |  | +    pass
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class Client:
 | 
	
		
			
				|  |  | +    def __init__(self, login_method, username, password, expires=None):
 | 
	
		
			
				|  |  | +        self.login_method = login_method
 | 
	
		
			
				|  |  | +        self.username = username
 | 
	
		
			
				|  |  | +        self.password = password
 | 
	
		
			
				|  |  | +        self.expires = expires
 | 
	
		
			
				|  |  | +        self.session_id = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if login_method in ["g", "google", "v", "vk", "f", "facebook"]:
 | 
	
		
			
				|  |  | +            self.login()
 | 
	
		
			
				|  |  | +        else:
 | 
	
		
			
				|  |  | +            raise RRBotException("Not a valid login method.")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def login(self):
 | 
	
		
			
				|  |  | +        login_method = self.login_method
 | 
	
		
			
				|  |  | +        self.s = sessions.FuturesSession()
 | 
	
		
			
				|  |  | +        auth_text = requests.get("http://rivalregions.com").text
 | 
	
		
			
				|  |  | +        web = Browser(showWindow=False)
 | 
	
		
			
				|  |  | +        if login_method == ("g" or "google"):
 | 
	
		
			
				|  |  | +            auth_text1 = auth_text.split('\t<a href="')
 | 
	
		
			
				|  |  | +            auth_text2 = auth_text1[1].split('" class="sa')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            web.go_to(auth_text2[0])
 | 
	
		
			
				|  |  | +            web.type(self.username, into='Email')
 | 
	
		
			
				|  |  | +            web.click('Next')
 | 
	
		
			
				|  |  | +            time.sleep(5)
 | 
	
		
			
				|  |  | +            web.type(self.password, into='Password')
 | 
	
		
			
				|  |  | +            web.click('Next')
 | 
	
		
			
				|  |  | +            time.sleep(5)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            web.click(css_selector=".sa_sn.float_left.imp.gogo")
 | 
	
		
			
				|  |  | +            time.sleep(5)
 | 
	
		
			
				|  |  | +        elif login_method == ("v" or "vk"):
 | 
	
		
			
				|  |  | +            auth_text1 = auth_text.split("(\'.vkvk\').attr(\'url\', \'")
 | 
	
		
			
				|  |  | +            auth_text2 = auth_text1[1].split('&response')
 | 
	
		
			
				|  |  | +            web = Browser(showWindow=False)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            web.go_to(auth_text2[0])
 | 
	
		
			
				|  |  | +            web.type(self.username, into='email')
 | 
	
		
			
				|  |  | +            web.type(self.password, xpath="/html/body/div/div/div/div[2]/form/div/div/input[7]")
 | 
	
		
			
				|  |  | +            web.click('Log in')
 | 
	
		
			
				|  |  | +            time.sleep(5)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        elif login_method == ("f" or "facebook"):
 | 
	
		
			
				|  |  | +            auth_text1 = auth_text.split('">\r\n\t\t\t\t<div class="sa_sn imp float_left" ')
 | 
	
		
			
				|  |  | +            auth_text2 = auth_text1[0].split('200px;"><a class="sa_link" href="')
 | 
	
		
			
				|  |  | +            url = auth_text2[1]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            web.go_to(url)
 | 
	
		
			
				|  |  | +            web.type(self.username, into='Email')
 | 
	
		
			
				|  |  | +            web.type(self.password, into='Password')
 | 
	
		
			
				|  |  | +            web.click('Log In')
 | 
	
		
			
				|  |  | +            time.sleep(5)
 | 
	
		
			
				|  |  | +            web.click(css_selector='.sa_sn.imp.float_left')
 | 
	
		
			
				|  |  | +            time.sleep(5)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        sessid = web.get_cookie('PHPSESSID')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        expires = sessid.get('expiry', None)
 | 
	
		
			
				|  |  | +        sessid.pop('expiry', None)
 | 
	
		
			
				|  |  | +        sessid.pop('httpOnly', None)
 | 
	
		
			
				|  |  | +        sessid['expires'] = expires
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        web.close_current_tab()
 | 
	
		
			
				|  |  | +        self.expires = expires
 | 
	
		
			
				|  |  | +        self.session_id = sessid
 | 
	
		
			
				|  |  | +        self.s.cookies.set(**sessid)
 | 
	
		
			
				|  |  | +        self.set_c()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def set_c(self):
 | 
	
		
			
				|  |  | +        r = self.s.get('http://rivalregions.com/#overview')
 | 
	
		
			
				|  |  | +        response = r.result()
 | 
	
		
			
				|  |  | +        lines = response.text.split("\n")
 | 
	
		
			
				|  |  | +        for line in lines:
 | 
	
		
			
				|  |  | +            if re.match("(.*)var c_html(.*)", line):
 | 
	
		
			
				|  |  | +                self.c = line.split("'")[-2]
 | 
	
		
			
				|  |  | +                return
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    async def do_something(self):
 | 
	
		
			
				|  |  | +        #TODO Get some request done
 | 
	
		
			
				|  |  | +        pass
 | 
	
		
			
				|  |  | +
 |