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
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
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
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
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
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
def get_template_context_generator(): wrap_data = resolve_method_dynamically(htk_setting('HTK_TEMPLATE_CONTEXT_GENERATOR')) return wrap_data
def get_renderer(): renderer = resolve_method_dynamically(htk_setting('HTK_TEMPLATE_RENDERER')) return renderer
def get_template_context_generator(): wrap_data = resolve_method_dynamically( htk_setting('HTK_TEMPLATE_CONTEXT_GENERATOR')) return wrap_data