Parcourir la source

Move login methods to own file

JoostSijm il y a 4 ans
Parent
commit
5645245083

+ 12 - 79
src/rival_regions_wrapper/authentication_handler.py

@@ -4,12 +4,11 @@ Authentication handeler module
 
 import sys
 import re
-import time
 
 import requests
 import cfscrape
 
-from rival_regions_wrapper import LOGGER
+from rival_regions_wrapper import LOGGER, login_methods
 from rival_regions_wrapper.cookie_handler import CookieHandler
 from rival_regions_wrapper.browser import Browser
 
@@ -98,20 +97,22 @@ class AuthenticationHandler:
                     self.username, self.login_method
                 )
 
-            login_methods = {
-                'g': self.login_google,
-                'google': self.login_google,
-                'v': self.login_vk,
-                'vk': self.login_vk,
-                'f': self.login_facebook,
-                'facebook': self.login_facebook,
+            login_method_dict = {
+                'g': login_methods.login_google,
+                'google': login_methods.login_google,
+                'v': login_methods.login_vk,
+                'vk': login_methods.login_vk,
+                'f': login_methods.login_facebook,
+                'facebook': login_methods.login_facebook,
             }
 
             auth_text = requests.get("https://rivalregions.com").text
             browser = Browser(showWindow=self.show_window)
 
-            if self.login_method in login_methods:
-                browser = login_methods[self.login_method](browser, auth_text)
+            if self.login_method in login_method_dict:
+                browser = login_method_dict[self.login_method](
+                        browser, auth_text, self.username, self.password
+                    )
             else:
                 LOGGER.info(
                         '"%s": Invalid login method "%s"',
@@ -180,74 +181,6 @@ class AuthenticationHandler:
                 LOGGER.debug('"%s": got var_c: %s', self.username, var_c)
                 self.var_c = line.split("'")[-2]
 
-    # This is working
-    def login_google(self, browser, auth_text):
-        """login using Google"""
-        LOGGER.info('"%s": Login method Google', self.username)
-        auth_text1 = auth_text.split('\t<a href="')
-        auth_text2 = auth_text1[1].split('" class="sa')
-        time.sleep(1)
-        browser.go_to(auth_text2[0])
-
-        LOGGER.info('"%s": Typing in username', self.username)
-        browser.type(self.username, into='Email')
-
-        LOGGER.info('"%s": pressing next button', self.username)
-        browser.click(css_selector="#next")
-        time.sleep(2)
-
-        LOGGER.info('"%s": Typing in password', self.username)
-        browser.type(self.password, css_selector="input")
-
-        LOGGER.info('"%s": pressing sign in button', self.username)
-        browser.click(css_selector="#submit")
-        time.sleep(3)
-
-        # Some why it wont click and login immediately. This seems to work
-        time.sleep(1)
-        browser.go_to(auth_text2[0])
-        time.sleep(1)
-        browser.go_to(auth_text2[0])
-        time.sleep(1)
-        browser.click(
-            css_selector="#sa_add2 > div:nth-child(4) > a.sa_link.gogo > div"
-        )
-        time.sleep(3)
-        return browser
-
-    # IDK if this is working
-    def login_vk(self, browser, auth_text):
-        """login using VK"""
-        LOGGER.info('Login method VK')
-        auth_text1 = auth_text.split("(\'.vkvk\').attr(\'url\', \'")
-        auth_text2 = auth_text1[1].split('&response')
-
-        browser.go_to(auth_text2[0])
-        browser.type(self.username, into='email')
-        browser.type(
-                self.password,
-                xpath="/html/body/div/div/div/div[2]/form/div/div/input[7]"
-        )
-        browser.click('Log in')
-        return browser
-
-    # IDK if this is working
-    def login_facebook(self, browser, auth_text):
-        """login using Facebook"""
-        LOGGER.info('Login method 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]
-
-        browser.go_to(url)
-        browser.type(self.username, into='Email')
-        browser.type(self.password, into='Password')
-        browser.click('Log In')
-        time.sleep(5)
-        browser.click(css_selector='.sa_sn.imp.float_left')
-        return browser
-
     @session_handler
     def get(self, path, add_var_c=False):
         """Send get request to Rival Regions"""

+ 76 - 0
src/rival_regions_wrapper/login_methods.py

@@ -0,0 +1,76 @@
+"""Login methods"""
+
+import time
+
+from rival_regions_wrapper import LOGGER
+
+
+# This should be working
+def login_google(browser, auth_text, username, password):
+    """login using Google"""
+    LOGGER.info('"%s": Login method Google', username)
+    auth_text1 = auth_text.split('\t<a href="')
+    auth_text2 = auth_text1[1].split('" class="sa')
+    time.sleep(1)
+    browser.go_to(auth_text2[0])
+
+    LOGGER.info('"%s": Typing in username', username)
+    browser.type(username, into='Email')
+
+    LOGGER.info('"%s": pressing next button', username)
+    browser.click(css_selector="#next")
+    time.sleep(2)
+
+    LOGGER.info('"%s": Typing in password', username)
+    browser.type(password, css_selector="input")
+
+    LOGGER.info('"%s": pressing sign in button', username)
+    browser.click(css_selector="#submit")
+    time.sleep(3)
+
+    # Some why it wont click and login immediately. This seems to work
+    time.sleep(1)
+    browser.go_to(auth_text2[0])
+    time.sleep(1)
+    browser.go_to(auth_text2[0])
+    time.sleep(1)
+    browser.click(
+        css_selector="#sa_add2 > div:nth-child(4) > a.sa_link.gogo > div"
+    )
+    time.sleep(3)
+    return browser
+
+
+# IDK if this is working
+def login_vk(browser, auth_text, username, password):
+    """login using VK"""
+    LOGGER.info('Login method VK')
+    auth_text1 = auth_text.split("(\'.vkvk\').attr(\'url\', \'")
+    auth_text2 = auth_text1[1].split('&response')
+
+    browser.go_to(auth_text2[0])
+    browser.type(username, into='email')
+    browser.type(
+            password,
+            xpath="/html/body/div/div/div/div[2]/form/div/div/input[7]"
+    )
+    browser.click('Log in')
+    return browser
+
+
+# IDK if this is working
+def login_facebook(browser, auth_text, username, password):
+    """login using Facebook"""
+    LOGGER.info('Login method 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]
+
+    browser.go_to(url)
+    browser.type(username, into='Email')
+    browser.type(password, into='Password')
+    browser.click('Log In')
+    time.sleep(5)
+    browser.click(css_selector='.sa_sn.imp.float_left')
+    return browser