예제 #1
0
파일: api.py 프로젝트: yacine15/django-htk
    def get_persons(self, emails):
        """Retrieves a batch of Person objects based on `emails`

        Returns a dictionary mapping emails to Person objects
        """
        person_api_url = self.get_resource_url('person')
        email_api_request_urls = {
            email: '%s?email=%s' % (
                person_api_url,
                email,
            )
            for email in emails
        }
        json_payload = {
            'requests': email_api_request_urls.values(),
        }
        response = self.batch(json_payload)
        persons = {}
        if response.status_code == 200:
            responses = response.json()['responses']
            for email, request_url in email_api_request_urls.iteritems():
                if request_url in responses:
                    person_response = responses[request_url]
                    if person_response['status'] == 200:
                        FullContactPerson = resolve_method_dynamically(
                            htk_setting('HTK_FULLCONTACT_PERSON_CLASS'))
                        persons[email] = FullContactPerson(
                            email, person_response)
        else:
            pass
        return persons
예제 #2
0
def find_company_emails_for_name(domain, first_name='', middle_name='', last_name=''):
    """Find a list of emails for a `domain` and `*_name` combination
    """
    email_permutations = email_permutator(
        domain,
        first_name=first_name,
        middle_name=middle_name,
        last_name=last_name
    )
    from htk.utils import htk_setting
    from htk.utils import resolve_method_dynamically
    find_valid_emails = resolve_method_dynamically(htk_setting('HTK_FIND_EMAILS_VALIDATOR'))
    emails = find_valid_emails(email_permutations)
    return emails
예제 #3
0
def find_company_emails_for_name(domain, first_name='', middle_name='', last_name=''):
    """Find a list of emails for a `domain` and `*_name` combination
    """
    email_permutations = email_permutator(
        domain,
        first_name=first_name,
        middle_name=middle_name,
        last_name=last_name
    )
    from htk.utils import htk_setting
    from htk.utils import resolve_method_dynamically
    find_valid_emails = resolve_method_dynamically(htk_setting('HTK_FIND_EMAILS_VALIDATOR'))
    emails = find_valid_emails(email_permutations)
    return emails
예제 #4
0
 def get_person(self, email):
     """
     https://www.fullcontact.com/developer/docs/person/
     """
     person = None
     params = {"email": email}
     response = self.get("person", params)
     if response.status_code == 200:
         try:
             data = response.json()
             FullContactPerson = resolve_method_dynamically(htk_setting("HTK_FULLCONTACT_PERSON_CLASS"))
             person = FullContactPerson(email, data)
         except:
             rollbar.report_exc_info(extra_data={"response": response})
     else:
         pass
     return person
예제 #5
0
    def get_person(self, email):
        """
        https://www.fullcontact.com/developer/docs/person/
        """
        person = None
        json_data = {
            'email': email,
        }
        response = self.post('person', json_data)

        try:
            response_json = response.json()
            if response.status_code == 200:
                person_data = response_json
                FullContactPerson = resolve_method_dynamically(
                    htk_setting('HTK_FULLCONTACT_PERSON_CLASS'))
                person = FullContactPerson(email, person_data, version='v3')
            elif response.status_code == 404:
                # profile not found, do nothing
                pass
            elif response.status_code == 403 and response_json[
                    'message'] == 'Usage limits for the provided API Key have been exceeded. Please try again later or contact support to increase your limits.':
                extra_data = {
                    'response':
                    response_json,
                    'redacted_api_key':
                    '{}...{}'.format(self.api_key[:5], self.api_key[-5:])
                }
                rollbar.report_message('FullContact API key usage limit error',
                                       extra_data=extra_data)
            else:
                # other FullContact API error
                rollbar.report_message('FullContact API error',
                                       extra_data={
                                           'response': response_json,
                                       })
        except ValueError:
            rollbar.report_exc_info(extra_data={
                'response': response,
            })

        return person
예제 #6
0
    def get_persons(self, emails):
        """Retrieves a batch of Person objects based on `emails`

        Returns a dictionary mapping emails to Person objects
        """
        person_api_url = self.get_resource_url("person")
        email_api_request_urls = {email: "%s?email=%s" % (person_api_url, email) for email in emails}
        json_payload = {"requests": email_api_request_urls.values()}
        response = self.batch(json_payload)
        persons = {}
        if response.status_code == 200:
            responses = response.json()["responses"]
            for email, request_url in email_api_request_urls.iteritems():
                if request_url in responses:
                    person_response = responses[request_url]
                    if person_response["status"] == 200:
                        FullContactPerson = resolve_method_dynamically(htk_setting("HTK_FULLCONTACT_PERSON_CLASS"))
                        persons[email] = FullContactPerson(email, person_response)
        else:
            pass
        return persons
예제 #7
0
파일: api.py 프로젝트: yacine15/django-htk
 def get_person(self, email):
     """
     https://www.fullcontact.com/developer/docs/person/
     """
     person = None
     params = {
         'email': email,
     }
     response = self.get('person', params)
     if response.status_code == 200:
         try:
             data = response.json()
             FullContactPerson = resolve_method_dynamically(
                 htk_setting('HTK_FULLCONTACT_PERSON_CLASS'))
             person = FullContactPerson(email, data)
         except:
             rollbar.report_exc_info(extra_data={
                 'response': response,
             })
     else:
         pass
     return person
예제 #8
0
def get_template_context_generator():
    wrap_data = resolve_method_dynamically(htk_setting('HTK_TEMPLATE_CONTEXT_GENERATOR'))
    return wrap_data
예제 #9
0
def get_renderer():
    renderer = resolve_method_dynamically(htk_setting('HTK_TEMPLATE_RENDERER'))
    return renderer
예제 #10
0
def get_template_context_generator():
    wrap_data = resolve_method_dynamically(
        htk_setting('HTK_TEMPLATE_CONTEXT_GENERATOR'))
    return wrap_data
예제 #11
0
def get_renderer():
    renderer = resolve_method_dynamically(htk_setting('HTK_TEMPLATE_RENDERER'))
    return renderer