Esempio n. 1
0
 def request(self, endpoint, **params):
     """Basic request method utilized by #query and #flag.
     
     Args:
         endpoint (str): Currently, either an empty string or "/flag".
         **params: Non-general GET request params.
         
     Returns:
         dict: Original Emailage API's JSON body.
     """
     url = self.domain + '/emailagevalidator' + endpoint + '/'
     params = dict(
         format='json',
         oauth_consumer_key=self.secret,
         oauth_nonce=uuid4(),
         oauth_signature_method='HMAC-SHA1',
         oauth_timestamp=int(time.time()),
         oauth_version=1.0,
         **params
     )
     params['oauth_signature'] = signature.create('GET', url, params, self.hmac_key)
   
     res = self.session.get(url, params=params)
   
     # Remove any unreadable characters from response payload
     json_data = re.sub(r'^[^{]+', '', res.text)
     return json.loads(json_data)
Esempio n. 2
0
 def request(self, endpoint, **params):
     """Basic request method utilized by #query and #flag.
     
     Args:
         endpoint (str): Currently, either an empty string or "/flag".
         **params: Non-general GET request params.
         
     Returns:
         dict: Original Emailage API's JSON body.
     """
     url = self.domain + '/emailagevalidator' + endpoint + '/'
     params = dict(
         format = 'json', 
         oauth_consumer_key = self.secret,
         oauth_nonce = uuid4(),
         oauth_signature_method = 'HMAC-SHA1',
         oauth_timestamp = int(time.time()),
         oauth_version = 1.0,
         **params
     )
     params['oauth_signature'] = signature.create('GET', url, params, self.hmac_key)
   
     res = self.session.get(url, params=params)
   
     # For whatever reason Emailage dispatches JSON with unreadable symbols at the start, like \xEF\xBB\xBF.
     json_data = re.sub(r'^[^{]+', '', res.text)
     return json.loads(json_data)
Esempio n. 3
0
    def request(self, endpoint, **params):
        """ Base method to generate requests for the Emailage validator and flagging APIs

            :param endpoint: API endpoint to send the request ( '' | '/flag' )
            :param params: keyword-argument list of parameters to send with the request
            :return: JSON dict of the response generated by the API

            :type endpoint: str
            :type params: kwargs

            :Example:

            >>> from emailage.client import EmailageClient
            >>> client = EmailageClient('consumer_secret', 'consumer_token')
            >>> response = client.request('/flag', email='*****@*****.**', flag='good')
            >>> response['query']['email']
            u'user20180830001%40domain20180830001.com'
        """
        url = self.domain + '/emailagevalidator' + endpoint + '/'

        params = dict(format='json', **params)
        params = signature.add_oauth_entries_to_fields_dict(
            self.secret, params)
        params['oauth_signature'] = signature.create('GET', url, params,
                                                     self.hmac_key)
        params_qs = _url_encode_dict(params)

        res = self.session.get(url, params=params_qs)

        # Explicit encoding is necessary because the API returns a Byte Order Mark at the beginning of the contents
        json_data = res.content.decode(encoding='utf_8_sig')
        return json.loads(json_data)
Esempio n. 4
0
    def request(self, endpoint, **params):
        """ Base method to generate requests for the Emailage validator and flagging APIs

            :param endpoint: API endpoint to send the request ( '' | '/flag' )
            :param params: keyword-argument list of parameters to send with the request
            :return: JSON dict of the response generated by the API

            :type endpoint: str
            :type params: kwargs

            :Example:

            >>> from emailage.client import EmailageClient
            >>> client = EmailageClient('consumer_secret', 'consumer_token')
            >>> response = client.request('/flag', email='*****@*****.**', flag='good')
            >>> response['query']['email']
            u'user20180830001%40domain20180830001.com'
        """
        url = self.domain + '/emailagevalidator' + endpoint + '/'

        params = dict(
            format='json',
            **params
        )
        params = signature.add_oauth_entries_to_fields_dict(self.secret, params)
        params['oauth_signature'] = signature.create('GET', url, params, self.hmac_key)
        params_qs = _url_encode_dict(params)

        res = self.session.get(url, params=params_qs)
      
        # Explicit encoding is necessary because the API returns a Byte Order Mark at the beginning of the contents
        json_data = res.content.decode(encoding='utf_8_sig')
        return json.loads(json_data)
Esempio n. 5
0
    def _perform_get_request(self, url, api_params, request_params=None):

        api_params = signature.add_oauth_entries_to_fields_dict(
            self.secret, api_params)
        api_params['oauth_signature'] = signature.create(
            HttpMethods.GET, url, api_params, self.hmac_key)

        params_qs = _url_encode_dict(api_params)
        request_params = request_params or {}

        res = self.session.get(url, params=params_qs, **request_params)
        return res
Esempio n. 6
0
    def _perform_post_request(self, url, api_params, request_params=None):
        signature_fields = dict(format='json')

        signature_fields = signature.add_oauth_entries_to_fields_dict(
            self.secret, signature_fields)

        signature_fields['oauth_signature'] = signature.create(
            HttpMethods.POST, url, signature_fields, self.hmac_key)
        url = url + '?' + _url_encode_dict(signature_fields)

        payload = bytes(self._assemble_quoted_pairs(api_params),
                        encoding='utf_8')

        res = self.session.post(url, data=payload, **request_params)
        return res
Esempio n. 7
0
 def test_calculates_signature_value(self):
     result = signature.create(self.method, self.url, self.params,
                               self.hmac_key)
     self.assertEqual(result, 'tR3+Ty81lMeYAr/Fid0kMTYa/WM=')
Esempio n. 8
0
 def test_calculates_signature_value(self):
     result = signature.create(self.method, self.url, self.params, self.hmac_key)
     self.assertEqual(result, 'tR3+Ty81lMeYAr/Fid0kMTYa/WM=')