Exemplo n.º 1
0
    def make_request(self, url, data=None, headers=None, files=None):
        log.debug(
            " Fetching url: `%s` (data: %s, headers: `%s`)",
            str(url),
            str(data),
            str(headers),
        )

        if files:
            raise NotImplementedError(
                "Install requests package to send files.")

        if headers is None:
            headers = {}

        data_bytes = force_bytes(urlencode(data)) if data else None
        req = Request(url, data=data_bytes, headers=headers)

        try:
            with contextlib.closing(urlopen(req)) as resp:
                return force_text(resp.read())
        except HTTPError as ex:
            raise WykopAPIError(0, str(ex.code))
        except URLError as ex:
            raise WykopAPIError(0, str(ex.reason))
Exemplo n.º 2
0
    def authenticate(self, account_key=None):
        self.account_key = account_key or self.account_key

        if not self.account_key:
            raise WykopAPIError(0, 'account key not set')

        res = self.user_login(self.account_key)
        self.userkey = res['userkey']
Exemplo n.º 3
0
    def authenticate(self, login=None, accountkey=None, password=None):
        self.login = login or self.login
        self.accountkey = accountkey or self.accountkey
        self.password = password or self.password

        if not self.login or not (self.accountkey or self.password):
            raise WykopAPIError(0,
                                'Login or (password or account key) not set')

        res = self.user_login(self.login, self.accountkey, self.password)
        self.userkey = res['userkey']
    def authenticate(self, account_key=None, login=None, password=None):
        self.credentials.account_key = account_key or self.credentials.account_key
        self.credentials.login = login or self.credentials.login
        self.credentials.password = password or self.credentials.password

        if self.credentials.account_key:
            res = self.user_login_with_accountkey(self.credentials.account_key)
        elif self.credentials.login and self.credentials.password:
            appkey_type = self.credentials.appkey_type()
            if appkey_type['official']:
                res = self.user_login_with_password(self.credentials.login,
                                                    self.credentials.password)
            else:
                # TODO: implement login/connect polyfill
                raise WykopAPIError(
                    0, 'login and password provided on unofficial appkey')
        else:
            raise WykopAPIError(
                0, 'neither accountkey nor login and password are set')

        self.userkey = res['userkey']
Exemplo n.º 5
0
    def test_error(self, mock_get_response, mock_get_error,
                   mock_resolve_exception, base_parser):
        data = mock.sentinel.data
        response = mock.sentinel.response
        error = Error(mock.sentinel.code, mock.sentinel.message)
        mock_get_response.return_value = response
        mock_get_error.return_value = error
        mock_resolve_exception.side_effect = WykopAPIError()

        with pytest.raises(WykopAPIError):
            base_parser.parse(data)

        mock_get_response.assert_called_once_with(data)
        mock_get_error.assert_called_once_with(response)
        mock_resolve_exception.assert_called_once_with(error.code,
                                                       error.message,
                                                       WykopAPIError)
Exemplo n.º 6
0
 def make_request(self, url, data=None, headers=None, files=None):
     log.debug(
         " Fetching url: `%s` (data: %s, headers: `%s`)",
         str(url),
         str(data),
         str(headers),
     )
     try:
         files = self._get_files(files)
         method = self._get_method(data, files)
         resp = request(method,
                        url,
                        data=data,
                        headers=headers,
                        files=files)
         resp.raise_for_status()
         return force_text(resp.content)
     except RequestException as ex:
         raise WykopAPIError(0, str(ex))