def render_GET(self, request): shared.SharedPath().response_headers(request, 'application/json') kwargs = User().get_role_args(shared.SharedPath().path_site(request), keys.entity_twitter) print 'get curator:', kwargs deferred_user(request, kwargs) return server.NOT_DONE_YET
def get_secret_key(self, request): print self.consumer_secret_keys, shared.SharedPath().path_site(request) if shared.SharedPath().path_site(request) in self.consumer_secret_keys: return self.consumer_secret_keys[shared.SharedPath().path_site( request)] else: ln = request.getRequestHostname().split('.')[0] if ln not in self.consumer_secret_keys: self.consumer_secret_keys[ln] = user_secret_key( User().get_by_role(ln, keys.entity_twitter)) return self.consumer_secret_keys[ln]
def render_GET(self, request): shared.SharedPath().response_headers(request, 'application/json') l = request.postpath site = shared.SharedPath().path_site(request) print 'get:', l, request.prepath, request.args cs = '_'.join([self.prefix, site.split('.')[0]]) resp = fixed.to_json([ c for c in self.mongo_db[cs].find({}).sort(Tweet.ts_ms, -1).skip( 0 if 'skip' not in request. args else int(request.args['skip'][0])).limit(self.find_limit) ]) print 'collection name:', cs, 'response length:', len(resp) request.write(json.dumps(resp, cls=fixed.SetEncoder)) request.finish() return server.NOT_DONE_YET
def step1(request): request_token_url = 'https://api.twitter.com/oauth/request_token' site = shared.SharedPath().path_site(request) curator = User().get_by_role(site, keys.entity_twitter) app_name = curator[user_keys.user_twitter_apps].keys()[0] client_key = curator[user_keys.user_twitter_apps][app_name][user_keys.user_consumer_key] client_secret = curator[user_keys.user_twitter_apps][app_name][user_keys.user_consumer_secret] oauth = OAuth1Session(client_key, client_secret=client_secret) fetch_response = oauth.fetch_request_token(request_token_url) #{ # "oauth_token": "Z6eEdO8MOmk394WozF5oKyuAv855l4Mlqo7hhlSLik", # "oauth_token_secret": "Kd75W4OQfb2oJTV0vzGzeXftVAwgMnEK9MumzYcM" #} resource_owner_key = fetch_response.get('oauth_token') resource_owner_secret = fetch_response.get('oauth_token_secret') print 'oauth_callback_confirmed:', fetch_response.get('oauth_callback_confirmed') #oauth = OAuth1(client_key, client_secret=client_secret) #r = requests.post(url=request_token_url, auth=oauth) #r.content #"oauth_token=Z6eEdO8MOmk394WozF5oKyuAv855l4Mlqo7hhlSLik&oauth_token_secret=Kd75W4OQfb2oJTV0vzGzeXftVAwgMnEK9MumzYcM" #from urlparse import parse_qs #credentials = parse_qs(r.content) #resource_owner_key = credentials.get('oauth_token')[0] #resource_owner_secret = credentials.get('oauth_token_secret')[0] #oauth = OAuth1Session(client_key, client_secret=client_secret) request.write(json.dumps({'oauth_token': resource_owner_key})) #request.redirect("https://api.twitter.com/oauth/authorize?oauth_token=" + resource_owner_key) request.finish()
def render_GET(self, request): shared.SharedPath().response_headers(request, 'application/json') if len(request.postpath) > 0: kwargs = User().get_role_args(request.postpath[0], keys.entity_twitter) print 'get operator:', kwargs deferred_user(request, kwargs) else: site = shared.SharedPath().path_site(request) threads.deferToThread( User().get_leagues, site, keys.entity_twitter).addCallback(lambda ans: json.dumps( [shared.treat(shared.entity_filter(u._data)) for u in ans], cls=fixed.SetEncoder)).addCallback( request.write).addCallback( lambda ign: request.finish()) return server.NOT_DONE_YET
def render_GET(self, request): shared.SharedPath().response_headers(request, 'application/json') missing_key = request.prepath[-1] hs = shared.hassocial(request, social_key=missing_key, is_null=True) print 'missing key:', missing_key, 'kwargs:', hs d = self.get_missing(hs) d.addCallback(lambda ans: shared.treat([e for e in ans])) d.addCallback(json.dumps, cls=fixed.SetEncoder) d.addCallback(request.write) d.addCallback(lambda ign: request.finish()) return server.NOT_DONE_YET
def render_GET(self, request): shared.SharedPath().response_headers(request, 'application/json') match_key = 'match_' + request.prepath[-1] hs = shared.hassocial(request, match_key) print 'match key:', match_key, 'kwargs:', hs self.get_match(hs).addCallback(lambda ans: shared.treat( [e for e in ans if not isinstance(e[match_key], Decimal)])).addCallback( json.dumps, cls=fixed.SetEncoder).addCallback( request.write).addCallback(lambda ign: request.finish()) return server.NOT_DONE_YET
def render_GET(self, request): shared.SharedPath().response_headers(request, 'application/json') kwargs = { 'league': request.postpath[0], 'profile': Entity().league_profile(request.postpath[0]) } print 'get league:', kwargs threads.deferToThread( Entity().get_item, **kwargs).addCallback(lambda ans: json.dumps( shared.treat(ans), cls=fixed.SetEncoder)).addCallback( request.write).addCallback(lambda ign: request.finish()) return server.NOT_DONE_YET
def render_GET(self, request): shared.SharedPath().response_headers(request, 'application/json') kwargs = shared.hassocial(request, social_key=request.prepath[1] if len(request.prepath) > 1 else None, is_null=False) print 'get entity:', kwargs #threads.deferToThread(Entity().query_2, **kwargs).addCallback( # lambda ans: json.dumps([shared.treat(e) for e in ans],cls=fixed.SetEncoder) #).addCallback(request.write).addCallback( # lambda ign: request.finish() #).addErrback(entity_error) return server.NOT_DONE_YET
def find_by_profile(self, request, profile): if len(request.postpath) == 0 or request.postpath[0] == '': return [ e for e in Entity().query_2( index=Entity.index_site_profile, site__eq=shared.SharedPath().path_site(request), profile__eq=profile) ][0] elif len(request.postpath) == 1: return Entity().get_item( league=self.path_league(request)[keys.entity_league], profile=profile) elif len(request.postpath) == 2: return
def render_GET(self, request): shared.SharedPath().response_headers(request, 'application/json') print 'tweeters get:', request.uri step1(request) return server.NOT_DONE_YET #shared.SharedPath().response_headers(request, 'application/json') #entities = self.tweeters(request) #treated_matches = shared.treat(entities) #treated_json = json.dumps(treated_matches,cls=fixed.SetEncoder) #request.write('') #request.finish() #return server.NOT_DONE_YET
def render_GET(self, request): print 'host:', request.getRequestHostname( ), 'request args:', request.args shared.SharedPath().response_headers(request, 'application/json') if 'crc_token' in request.args: sha256_hash_digest = hmac.new(self.get_secret_key(request), msg=request.args['crc_token'][0], digestmod=hashlib.sha256).digest() request.write( json.dumps({ 'response_token': 'sha256=' + base64.b64encode(sha256_hash_digest) })) request.finish() else: request.write( json.dumps({ 'host': request.getRequestHostname(), 'path': request.path, 'args': request.args })) request.finish() return server.NOT_DONE_YET
def render_POST(self, request): shared.SharedPath().response_headers(request, 'application/json') raw_body = request.content.read() print 'body:', raw_body, 'headers:', self.requestHeaders.getAllRawHeaders( ) if 'x-twitter-webhooks-signature' in self.requestHeaders.getAllRawHeaders( ): signature = self.requestHeaders.getAllRawHeaders( )['x-twitter-webhooks-signature'][7:] print 'signature:', signature sha256_hash_digest = hmac.new(self.get_secret_key(request), msg=raw_body, digestmod=hashlib.sha256).digest() print 'sha256:', sha256_hash_digest if sha256_hash_digest == base64.b64decode(signature): print 'valid message' body = json.loads(raw_body) print 'body:', body else: print 'invalid message' request.write('') request.finish() return server.NOT_DONE_YET
def render_POST(self, request): shared.SharedPath().response_headers(request, 'application/json') body = json.loads(request.content.read()) print 'match post:', request.prepath, 'uri:', request.uri, 'body:', body try: social_key = [sk for sk in keys_league.social_keys if sk in body][0] print 'social_key:', social_key if 'block' in body and body['block']: blocks = keys_league.add_blocked( shared.SharedPath().path_site(request), social_key, body[social_key]) print 'blocks:', blocks if keys.entity_profile in body: entity = self.find_by_profile(request, body[keys.entity_profile]) del entity[social_key] del entity[getattr(keys, 'entity_match_' + social_key)] entity.partial_save() request.write( json.dumps({ 'match': 'blocked', keys.entity_profile: body[keys.entity_profile], social_key: body[social_key] })) request.finish() return server.NOT_DONE_YET elif 'no' in body and body['no']: entity = self.find_by_profile(request, body[keys.entity_profile]) del entity[getattr(keys, 'entity_match_' + social_key)] entity.partial_save() request.write( json.dumps({ 'match': 'deleted', keys.entity_profile: body[keys.entity_profile], social_key: body[social_key] })) request.finish() return server.NOT_DONE_YET elif 'remove' in body and body['remove']: entity = self.find_by_profile(request, body[keys.entity_profile]) if entity[social_key] == body[social_key]: request.write('removed: ' + entity[social_key].encode('utf-8')) del entity[social_key] differences = { social_key + '__remove': entity[social_key], time_keys.ts_remove: int(time.time()) } EntityHistory().delta(entity, differences) entity.partial_save() request.finish() return server.NOT_DONE_YET else: self.render_ERROR(400, 'Cannot Remove:' + str(body[social_key]), request) return server.NOT_DONE_YET else: entity = self.find_by_profile(request, body[keys.entity_profile]) body[social_key] = body[social_key][1:] if body[ social_key][:1] == '@' else body[social_key] if not entity[social_key] or 'overwrite' in body and body[ 'overwrite']: entity[social_key] = body[social_key] if (social_key == keys.entity_twitter and twitter_keys.validate_twitter(entity)) or ( social_key == keys.entity_instagram and instagram_keys.validate_instagram(entity)): return self.identify(social_key, entity, request) else: print 'league has:', social_key, 'value:', entity[ social_key] self.render_ERROR( 400, 'Invalid:' + entity[social_key].encode('utf-8'), request) return server.NOT_DONE_YET else: print 'already has:', social_key, 'value:', entity[ social_key] self.render_ERROR( 409, 'Already Has:' + entity[social_key].encode('utf-8'), request) return server.NOT_DONE_YET except Exception as e: print 'social key exception:', e