def _flickr(self, email): queries = {"email": "flickr.people.findByEmail", "user": "******" } params = {"method": queries['email'], "api_key": FLICKR_KEY, "find_email": email, "format": "json" } response = http_request(email, "GET", FLICKR_HOST, FLICKR_PATH, params) if response.is_error(): return response message = response['raw_data'] # Jump over the first 14 characters and get the actual JSON message = message[RESPONSE_PREFIX_LENGTH:len(message)-1] data = simplejson.loads(message) if data['stat'] == 'fail': response['status'] = NOT_FOUND_ERROR_CODE return response user_id = data['user']['id'] params['method'] = queries['user'] params['user_id'] = str(user_id) del params['find_email'] response = http_request(email, "GET", FLICKR_HOST, FLICKR_PATH, params) if response.is_error(): return response return FlickrResponse(response)
def _google_plus(self, email): username = email[0:email.find('@')] host = email[email.find('@')+1:] domains = ['gmail', 'google'] for domain in domains: to_check = True if host.find(domain) >= 0 else False if to_check is True: break if to_check is False: return Response(NOT_FOUND_ERROR_CODE, 'Email address not matching Google\'s email naming policies', email) response = http_request(email, "GET", PICASA_HOST, "/%s" % username, {}) if response.is_error(): return response user_id = self._get_user_id(response['raw_data']) if not user_id: response['status'] = NOT_FOUND_ERROR_CODE return response params = {'key': GOOGLE_PLUS_KEY} response = http_request(email, "GET", GOOGLE_HOST, "%s%s" % (GOOGLE_PLUS_PATH, user_id), params, httplib.HTTPS_PORT) if response.is_error(): return response return GooglePlusResponse(response)
def _pinterest(self, username, email): params = {} response = http_request(email, 'GET', PINTEREST_HOST, "/%s/" % urllib.quote(username), params) if response.is_error(): return response return PinterestResponse(response, username)
def _linkedin(self, username, email): params = {} response = http_request(email, 'GET', LINKEDIN_HOST, "%s%s" % (LINKEDIN_PATH, urllib.quote(username)), params) if response.is_error(): return response return LinkedinResponse(response, username)
def _twitter(self, username, email): params = {} response = http_request(email, 'GET', TWITTER_HOST, "/%s" % urllib.quote(username), params) if response.is_error(): return response return TwitterResponse(response, username)
def _github(self, email): response = http_request(email, "GET", GITHUB_HOST, "%s%s" % (GITHUB_PATH, email), {}, httplib.HTTPS_PORT) if response.is_error(): return response return GithubResponse(response)
def _aboutme(self, username, email): params = {} response = http_request(email, 'GET', ABOUTME_HOST, "/%s" % urllib.quote(username), params) if '302 Found' in response['raw_data']: response['status'] = NOT_FOUND_ERROR_CODE return response return AboutmeResponse(response, username)
def _myspace(self, email): params = {'searchTerms': email, 'searchBy': 'email', 'format': 'json' } response = http_request(email, "GET", MYSPACE_HOST, MYSPACE_PATH, params) if response.is_error(): return response return MyspaceResponse(response)
def _jigsaw(self, email): params = {"token": JIGSAW_KEY, "email": email, } response = http_request(email, "GET", JIGSAW_HOST, JIGSAW_PATH, params, httplib.HTTPS_PORT) if response.is_error(): return response message = response['raw_data'] data = simplejson.loads(message) if data['totalHits'] == 0: response['status'] = NOT_FOUND_ERROR_CODE return response return JigsawResponse(response)
def _soundcloud(self, username, email): params = { "client_id" : SOUNDCLOUD_KEY, "q" : urllib.quote(username), "limit" : SOUNDCLOUD_LIMIT } response = http_request(email, 'GET', SOUNDCLOUD_HOST, \ SOUNDCLOUD_PATH, params) if response.is_error(): return response message = response['raw_data'] data = simplejson.loads(message) if len(data) == 0: response['status'] = NOT_FOUND_ERROR_CODE return response return SoundcloudResponse(response, username)
def _lastfm(self, username, email): params = { "method" : "user.getinfo", "user" : urllib.quote(username), "api_key" : LASTFM_KEY, "format" : "json" } response = http_request(email, 'GET', LASTFM_HOST, LASTFM_PATH, params) if response.is_error(): return response message = response['raw_data'] data = simplejson.loads(message) if 'error' in data: response['status'] = NOT_FOUND_ERROR_CODE return response return LastfmResponse(response)
def _foursquare(self, email): today = datetime.date.today() v = "%d%d%d" % (today.year, today.month, today.day) params = { 'email': email, 'oauth_token': FOURSQUARE_OAUTH, 'v': v, } response = http_request(email, "GET", FOURSQUARE_HOST, FOURSQUARE_PATH, params, httplib.HTTPS_PORT) if response.is_error() or len(response['raw_data']) == 0: response['status'] = NOT_FOUND_ERROR_CODE return response data = simplejson.loads(response['raw_data'])['response']['results'] if len(data) is 0: response['status'] = NOT_FOUND_ERROR_CODE return response return FoursquareResponse(response)
def __init__(self, response, username): super(AboutmeResponse, self).__init__(response['status'], response['raw_data'], response['email']) data = BeautifulSoup(response['raw_data']) profiles = [ABOUTME_HOST + "/" + username] self['username'] = username profile_box = data.find(id='profile_box') if profile_box: try: if profile_box.div.h1.string: self['display_name'] = profile_box.div.h1.string except: pass for website in data.find_all('a', {'class': 'website'}): profiles.append(website.get('href')) for content in ABOUTME_CONTENT: content_response = http_request(self['email'], 'GET', ABOUTME_HOST, "/content/%s/%s" % (urllib.quote(username), content), {}) data = BeautifulSoup(content_response['raw_data']) body = data.find('body', {'class':'aboutmeapp'}) try: profile = body.find('div', {'class':'top_section'}).h1.a.get('href') if profile: profiles.append(profile) except: pass if profiles: response = process_profiles(profiles) self['profiles'] = profiles if response: self.enhance_response(response)