def get(self,user_id): # remove trailing path bits components = user_id.split( '/' ) user_id = components[0]; uq = db.Query( SFCommon.UserToken ); uq.filter( 'userid =', user_id ) res = uq.get() if( res is None ): self.response.out.write(SFCommon.SFError( "NoToken", "Couldn't find a token for this user id.", "Squarefeed doesn't have any details stored for this user." ).render()) else: api = SFCommon.SFInstagramAPI( res.token ) user = api.user() items = [] recent_media, next = api.user_recent_media(count=100) for media_item in recent_media: title = "Untitled photo" if( media_item.caption ): title = media_item.caption.text img_src = media_item.images['low_resolution'].url link = media_item.link if( link is None ): link = media_item.images['standard_resolution'].url items.append( { 'title': title, 'image_src': img_src, 'link': link, 'guid': media_item.id, 'date': rfc822( media_item.created_time ) } ) description = ( 'Instagram feed for %s' % user.username ) self_link = self.request.url build_date = rfc822( datetime.utcnow() ) template_data = { 'title' : description, 'self_link': self_link, 'description': description, 'build_date': build_date, 'items': items } template = SFCommon.get_jinja_environment().get_template('feed.rss') self.response.headers["Content-Type"] = "application/rss+xml" self.response.out.write(template.render(template_data))
def get(self): code = self.request.get("code") error = self.request.get("error") error_reason = self.request.get("error_reason") error_description = self.request.get("error_description") if( code is '' ): self.response.out.write( SFError( error, error_reason, error_description ).render() ) else: api = SFInstagramAPI() try: access_token = api.exchange_code_for_access_token(code) except OAuth2AuthExchangeError: error_body = "This usually happens if you try to reload a page during the login process: the access code Squarefeed gets from Instagram only works once." self.response.out.write( SFError( "OAuth2AuthExchangeError", "exchange_code_for_access_token failed", error_body ).render() ) return if( not access_token ): self.response.out.write( SFError( "No access token", "Didn't get an access token from Instagram", ":(" ).render() ) else : api = SFInstagramAPI( access_token ) user = api.user() user_id = user.id; uq = db.Query( UserToken ); uq.filter( 'userid =', user_id ) res = uq.get() if( res is None ): # new entity ut = UserToken( userid=user_id, token=access_token ) ut.put() else: # update existing entity ut = res ut.token = access_token ut.put() feed_url = "/feed/%s" % user_id template = SFCommon.get_jinja_environment().get_template('auth_complete.html') self.response.out.write( template.render({ 'feed_url': feed_url, 'user_name':user.username }) )
def get(self): template = SFCommon.get_jinja_environment().get_template('index.html') self.response.out.write( template.render() )