Exemplo n.º 1
0
	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))
Exemplo n.º 2
0
	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 }) )
Exemplo n.º 3
0
	def get(self):	
		template = SFCommon.get_jinja_environment().get_template('index.html')
		self.response.out.write( template.render() )