def testAuthentication(self): """ Tests the parameters the user has provided in the ui to see if they are correct """ try: self.response = self.session.get(self.url, timeout=120, verify=False) except Exception: pass try: self._get_auth() if not self.response: raise HTTPError(404, 'Not Found') self.response.raise_for_status() if self.auth: return True, 'Success: Connected and Authenticated' else: return False, 'Failed to authenticate with {0}'.format( self.name) except Exception as error: helpers.handle_requests_exception(error) return False, '{0}'.format(error)
def _get_auth(self): client = PutioClient(self.password) try: client.Account.info() except ClientError as error: helpers.handle_requests_exception(error) self.auth = None else: self.auth = client return self.auth
def _get_auth(self): """ Makes a request to the token url to get a CSRF token """ try: self.response = self.session.get(urljoin(self.url, 'token.html'), verify=False) self.response.raise_for_status() self.auth = re.findall("<div.*?>(.*?)</", self.response.text)[0] except Exception as error: helpers.handle_requests_exception(error) self.auth = None return self.auth
def _request(self, method='get', params=None, data=None, files=None, cookies=None): """ Makes the actual request for the client, for everything except auth """ if time.time() > self.last_time + 1800 or not self.auth: self.last_time = time.time() self._get_auth() log_string = '{0}: Requested a {1} connection to url {2}'.format( self.name, method.upper(), self.url) if params: log_string += '?{0}'.format(urlencode(params)) if data: log_string += ' and data: {0}{1}'.format( str(data)[0:99], '...' if len(str(data)) > 100 else '') logger.debug(log_string) if not (self.auth or self._get_auth()): logger.warning('{0}: Authentication Failed'.format(self.name)) return False try: self.response = self.session.request(method.upper(), self.url, params=params, data=data, files=files, cookies=cookies, timeout=120, verify=False) self.response.raise_for_status() except Exception as error: helpers.handle_requests_exception(error) return False logger.debug('{0}: Response to the {1} request is {2}'.format( self.name, method.upper(), self.response.text)) return True