Esempio n. 1
0
 def download(self):
     """
     Download last or all clips from SERVER and updates the local clipboard
     """
     log.info("downloading clips")
     url = self.SERVER + Config.API_COPY_PASTE
     try:
         res = requests.get(
             url=url,
             auth=(self.USER, self.HASH_LOGIN),
             timeout=Config.CONN_TIMEOUT,
             verify=Config.VERIFY_SSL_CERT,
             headers=Config.HEADERS,
         )
     except requests.exceptions.RequestException as e:
         log.exception("Error in download request")
         raise ApiException(e)
     else:
         if res.status_code == 200:
             clips_decrypted = self.parse_and_decrypt_response(res)
             log.info(f"Got new clips from SERVER:\n{clips_decrypted}")
             self.paste(clips_decrypted[-1])
             return clips_decrypted
         else:
             log.error(
                 f"Cannot download clips: {res.status_code} - {res.text}")
             raise ApiException(res.text[0:Config.MAX_RESPONSE_LEN])
Esempio n. 2
0
 def upload(self):
     """
     Send the copied text to SERVER
     """
     clip = self.copy()
     clip_encrypted = self.crypto.encrypt(clip)
     payload = {"text": clip_encrypted, "device": f"{Config.DEVICE_ID}"}
     try:
         res = requests.post(
             self.SERVER + Config.API_COPY_PASTE,
             data=payload,
             auth=(self.USER, self.HASH_LOGIN),
             timeout=Config.CONN_TIMEOUT,
             verify=Config.VERIFY_SSL_CERT,
             headers=Config.HEADERS,
         )
     except requests.exceptions.RequestException as e:
         log.exception("Error in upload request")
         raise ApiException(e)
     else:
         if res.status_code == 201:
             log.info("Success! Copied to Cloud-Clipboard.")
             return clip
         else:
             log.error(f"Error cannot upload clip: {res.text}")
             raise ApiException(res.text[0:Config.MAX_RESPONSE_LEN])
Esempio n. 3
0
def get_eBay_opener(username=None,
                    password=None,
                    login_url=None,
                    use_which='Chrome',
                    wait=False):
    if not use_which in ['Chrome', 'Firefox']:
        raise NotImplementedError('Given browser func not implemented. %r' %
                                  use_which)

    if username == None:
        username = '******'
    if password == None:
        password = '******'
    if login_url == None:
        login_url = 'https://signin.ebay.com.hk/ws/eBayISAPI.dll?SignIn'

    max_try_times = 3

    while max_try_times:
        max_try_times -= 1
        try:
            cookie_jar = get_eBay_cookiejar(username,
                                            password,
                                            login_url,
                                            wait=wait)
            break
        except:
            log.exception('[Login]')

    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar))
    return opener
Esempio n. 4
0
 def decrypt(self, data):
     """ Return encrypted text
     """
     data = data.encode()
     try:
         clear = self.fernet.decrypt(data)
     except InvalidToken as e:
         log.exception(f"ERROR Decrypt: {e}")
         clear = "Error: Could not decrypt received clip".encode()
     clear = clear.decode()
     return clear
Esempio n. 5
0
 def login(server, user, pw):
     """
     authenticate user using hash generated from pw
     """
     crypto = Crypt(user, pw)
     login_hash = crypto.pw_hash_login
     try:
         res = requests.get(
             server + Config.API_LOGIN,
             auth=(user, login_hash),
             timeout=Config.CONN_TIMEOUT,
             verify=Config.VERIFY_SSL_CERT,
             headers=Config.HEADERS,
         )
     except requests.exceptions.RequestException as e:
         log.exception("Error in login request")
         raise LoginException(e)
     if res.status_code >= 200 and res.status_code < 400:
         log.info("Login successful")
         return True
     else:
         log.error(f"Login failed: {res.status_code} - {res.text}")
         raise LoginException(res.text[0:Config.MAX_RESPONSE_LEN])
Esempio n. 6
0
 def register(server, user, pw):
     """
     register user on server using hash generated from pw
     """
     crypto = Crypt(user, pw)
     login_hash = crypto.pw_hash_login
     payload = {"username": user, "password": login_hash}
     try:
         res = requests.post(
             server + Config.API_REGISTER,
             data=payload,
             timeout=Config.CONN_TIMEOUT,
             verify=Config.VERIFY_SSL_CERT,
             headers=Config.HEADERS,
         )
     except requests.exceptions.RequestException as e:
         log.exception("Error in register request")
         raise RegisterException(e)
     if res.status_code == 201:
         log.info(f"Hi {user}! You are all set.")
         return True
     else:
         log.error(f"Cannot register user: {res.status_code} - {res.text}")
         raise RegisterException(res.text[0:Config.MAX_RESPONSE_LEN])