示例#1
0
	def post(self,*args,**kwargs):
		#RESTRICTED
		try:
			#check token
			facebook_token	= kwargs.get('remoteToken',None)
			
#			user = levr.Customer.all().filter('facebook_id',facebook_id).get()
			
			user = social.Facebook(None,'verbose',facebook_token=facebook_token)
			try:
				new_user, new_user_details, new_friends = user.first_time_connect(
											facebook_token	= facebook_token,
											)
			except Exception,e:
				levr.log_error()
				assert False, 'Could not connect with facebook.'
			
			#return the user
			response = {
					'user':api_utils.package_user(new_user,True,send_token=True),
					'new_friends'		: [enc.encrypt_key(f) for f in new_friends],
					'new_user_details'	: new_user_details
					}
			
			try:
				levr.text_notify(new_user.display_name + 'from Facebook')
			except:
				levr.log_error()
			
			api_utils.send_response(self,response,new_user)
示例#2
0
    def post(self, *args, **kwargs):
        #RESTRICTED
        try:
            #check token
            facebook_token = kwargs.get('remoteToken', None)

            #			user = levr.Customer.all().filter('facebook_id',facebook_id).get()

            user = social.Facebook(None,
                                   'verbose',
                                   facebook_token=facebook_token)
            try:
                new_user, new_user_details, new_friends = user.first_time_connect(
                    facebook_token=facebook_token, )
            except Exception, e:
                levr.log_error()
                assert False, 'Could not connect with facebook.'

            #return the user
            response = {
                'user': api_utils.package_user(new_user, True,
                                               send_token=True),
                'new_friends': [enc.encrypt_key(f) for f in new_friends],
                'new_user_details': new_user_details
            }

            try:
                levr.text_notify(new_user.display_name + 'from Facebook')
            except:
                levr.log_error()

            api_utils.send_response(self, response, new_user)
示例#3
0
	def post(self,*args,**kwargs):
		try:
			twitter_id				= kwargs.get('remoteID',None)
			twitter_token			= kwargs.get('remoteToken',None)
			twitter_token_secret	= kwargs.get('remoteTokenSecret',None)
			
			
			logging.debug('\n\n{}\n{}\n{}\n\n'.format(
											twitter_id,
											twitter_token,
											twitter_token_secret
											)
						)
			user = levr.Customer.all().filter('twitter_id',twitter_id).get()
			logging.debug(user)
			if user:
				#fallback to login
				logging.debug('User exists!')
				response = {
						'user':api_utils.package_user(user,True,send_token=True)
						}
			else:
				#create new user
				user = social.Twitter(
									twitter_id = twitter_id
									)
				try:
					user, new_user_details, new_friends = user.first_time_connect(
													twitter_id			= twitter_id,
													twitter_token			= twitter_token,
													twitter_token_secret	= twitter_token_secret
													)
				except Exception,e:
					levr.log_error()
					assert False, 'Could not connect with twitter. '.format('')
				#return the user
				response = {
						'user':api_utils.package_user(user,True,send_token=True),
						'new_friends'		: [enc.encrypt_key(f) for f in new_friends],
						'new_user_details'	: new_user_details
						}
			try:
				if user.display_name == 'Jason K.':
					from google.appengine.api import mail
					mail.send_mail(sender="*****@*****.**",
					to="*****@*****.**",
					subject="Signup",
					body='Jason signed up')
				else:
					levr.text_notify(user.display_name+' from Twitter!')
			except:
				levr.log_error()
				
				
			api_utils.send_response(self,response,user)
示例#4
0
    def post(self, *args, **kwargs):
        try:
            twitter_id = kwargs.get('remoteID', None)
            twitter_token = kwargs.get('remoteToken', None)
            twitter_token_secret = kwargs.get('remoteTokenSecret', None)

            logging.debug('\n\n{}\n{}\n{}\n\n'.format(twitter_id,
                                                      twitter_token,
                                                      twitter_token_secret))
            user = levr.Customer.all().filter('twitter_id', twitter_id).get()
            logging.debug(user)
            if user:
                #fallback to login
                logging.debug('User exists!')
                response = {
                    'user': api_utils.package_user(user, True, send_token=True)
                }
            else:
                #create new user
                user = social.Twitter(twitter_id=twitter_id)
                try:
                    user, new_user_details, new_friends = user.first_time_connect(
                        twitter_id=twitter_id,
                        twitter_token=twitter_token,
                        twitter_token_secret=twitter_token_secret)
                except Exception, e:
                    levr.log_error()
                    assert False, 'Could not connect with twitter. '.format('')
                #return the user
                response = {
                    'user': api_utils.package_user(user, True,
                                                   send_token=True),
                    'new_friends': [enc.encrypt_key(f) for f in new_friends],
                    'new_user_details': new_user_details
                }
            try:
                if user.display_name == 'Jason K.':
                    from google.appengine.api import mail
                    mail.send_mail(sender="*****@*****.**",
                                   to="*****@*****.**",
                                   subject="Signup",
                                   body='Jason signed up')
                else:
                    levr.text_notify(user.display_name + ' from Twitter!')
            except:
                levr.log_error()

            api_utils.send_response(self, response, user)
示例#5
0
	def post(self,*args,**kwargs):
		#RESTRICTED
		try:
			logging.debug(kwargs)
			email = kwargs.get('email',None)
			alias = kwargs.get('alias',None)
			pw = kwargs.get('pw',None)
			
			'''Check availability of username+pass, create and login if not taken'''
			#check availabilities
			r_email = levr.Customer.gql('WHERE email = :1',email).get()
			r_alias  = levr.Customer.gql('WHERE alias = :1',alias).get()
			
			#if taken, send error
			if r_email:
				api_utils.send_error(self,'That email is already registered.')
				return
			if r_alias:
				api_utils.send_error(self,'That alias is already registered.')
				return
			
			#still here? create a customer, then.
			user = levr.create_new_user(
									email=email,
									alias=alias,
									pw=enc.encrypt_password(pw))
			#put and reply
			
			#create or refresh the alias
			user = levr.build_display_name(user)
			
			try:
				levr.text_notify(user.display_name+' from Levr!')
			except:
				levr.log_error()
			
			
			#put and reply
			user.put()
			
			
			response = {'user':api_utils.package_user(user,True,send_token=True)}
			api_utils.send_response(self,response,user)
		except:
			levr.log_error()
			api_utils.send_error(self,'Server Error')
示例#6
0
    def post(self, *args, **kwargs):
        #RESTRICTED
        try:
            logging.debug(kwargs)
            email = kwargs.get('email', None)
            alias = kwargs.get('alias', None)
            pw = kwargs.get('pw', None)
            '''Check availability of username+pass, create and login if not taken'''
            #check availabilities
            r_email = levr.Customer.gql('WHERE email = :1', email).get()
            r_alias = levr.Customer.gql('WHERE alias = :1', alias).get()

            #if taken, send error
            if r_email:
                api_utils.send_error(self, 'That email is already registered.')
                return
            if r_alias:
                api_utils.send_error(self, 'That alias is already registered.')
                return

            #still here? create a customer, then.
            user = levr.create_new_user(email=email,
                                        alias=alias,
                                        pw=enc.encrypt_password(pw))
            #put and reply

            #create or refresh the alias
            user = levr.build_display_name(user)

            try:
                levr.text_notify(user.display_name + ' from Levr!')
            except:
                levr.log_error()

            #put and reply
            user.put()

            response = {
                'user': api_utils.package_user(user, True, send_token=True)
            }
            api_utils.send_response(self, response, user)
        except:
            levr.log_error()
            api_utils.send_error(self, 'Server Error')
示例#7
0
	def post(self,*args,**kwargs):
		try:
			#check token
			foursquare_token = kwargs.get('remoteToken',None)
			
			user = levr.Customer.all().filter('foursquare_token',foursquare_token).get()
			if user:
				#fallback to login
				response = {
						'user':api_utils.package_user(user,True,send_token=True)
						}
			else:
				#===============================================================
				# NOTE: there is a remote chance that the users foursquare oauth_token would change.
				# this would not recognize that
				#===============================================================
				
				
				try:
					#create new user
					user = social.Foursquare(
										foursquare_token = foursquare_token
										)
					user, new_user_details, new_friends = user.first_time_connect(
													foursquare_token = foursquare_token,
													)
				except Exception,e:
					levr.log_error()
					assert False, 'Could not connect with foursquare. '.format('')
				#return the user
				response = {
						'user':api_utils.package_user(user,True,send_token=True),
						'new_friends'		: [enc.encrypt_key(f) for f in new_friends],
						'new_user_details'	: new_user_details
						}
			try:
				levr.text_notify(user.display_name+' from Foursquare!')
			except:
				levr.log_error()
				
			api_utils.send_response(self,response,user)
示例#8
0
    def post(self, *args, **kwargs):
        try:
            #check token
            foursquare_token = kwargs.get('remoteToken', None)

            user = levr.Customer.all().filter('foursquare_token',
                                              foursquare_token).get()
            if user:
                #fallback to login
                response = {
                    'user': api_utils.package_user(user, True, send_token=True)
                }
            else:
                #===============================================================
                # NOTE: there is a remote chance that the users foursquare oauth_token would change.
                # this would not recognize that
                #===============================================================

                try:
                    #create new user
                    user = social.Foursquare(foursquare_token=foursquare_token)
                    user, new_user_details, new_friends = user.first_time_connect(
                        foursquare_token=foursquare_token, )
                except Exception, e:
                    levr.log_error()
                    assert False, 'Could not connect with foursquare. '.format(
                        '')
                #return the user
                response = {
                    'user': api_utils.package_user(user, True,
                                                   send_token=True),
                    'new_friends': [enc.encrypt_key(f) for f in new_friends],
                    'new_user_details': new_user_details
                }
            try:
                levr.text_notify(user.display_name + ' from Foursquare!')
            except:
                levr.log_error()

            api_utils.send_response(self, response, user)
示例#9
0
    def get(self):
        try:
            logging.debug('Hit the Authorize Complete Handler')
            client_id = 'UNHLIF5EYXSKLX50DASZ2PQBGE2HDOIK5GXBWCIRC55NMQ4C'
            secret = 'VLKDNIT0XSA5FK3XIO05DAWVDVOXTSUHPE4H4WOHNIZV14G3'
            redirect = 'https://levr-production.appspot.com/foursquare/authorize/complete'

            try:
                logging.info(levr.log_dir(self.request))
            except:
                logging.info(self.request)

            code = self.request.get('code', None)
            #if no code was passed, then the authorization is happening through the phone.
            NO_CODE_MESSAGE = 'Code was not passed. Authorization is happening on phone.'
            assert code, NO_CODE_MESSAGE

            logging.info(code)

            #make request for token
            url = "https://foursquare.com/oauth2/access_token?client_id=" + client_id + "&client_secret=" + secret + "&grant_type=authorization_code&redirect_uri=" + redirect + "&code=" + code
            result = urlfetch.fetch(url=url)
            logging.debug(result.content)
            foursquare_token = json.loads(result.content)['access_token']
            logging.info(foursquare_token)

            #			#grab more user details
            #			url = 'https://api.foursquare.com/v2/users/self?v=20120920&oauth_token='+token
            #			result = urlfetch.fetch(url=url)
            #			response_dict = json.loads(result.content)
            #
            #			logging.debug(levr.log_dict(response_dict))

            #let the foursquare parsing code do its thing
            user = social.Foursquare(foursquare_token=foursquare_token)

            user, new_details, new_friends = user.first_time_connect(
                foursquare_token=foursquare_token)
            #			user.connect_with_content(response_dict,True,foursquare_token=token)

            logging.debug(levr.log_model_props(user))
            logging.debug(levr.log_dict(new_details))
            logging.debug(levr.log_dict(new_friends))

            #send the founders a text
            levr.text_notify(user.first_name + ' ' + user.last_name +
                             ' from foursquare')

            #launch the jinja environment
            jinja_environment = jinja2.Environment(
                loader=jinja2.FileSystemLoader(os.path.dirname(__file__)))
            #set up the jinja template and echo out
            template = jinja_environment.get_template('templates/landing.html')
            self.response.out.write(template.render())

            logging.debug(levr.log_dict(user))
        except AssertionError, e:
            if e.message == NO_CODE_MESSAGE:
                #this is an expected case. Authorization is happening on the phone
                self.response.out.write('Please wait...')
            else:
                levr.log_error(e)
                self.response.out.write('Could not connect with Foursquare.')
示例#10
0
	def get(self):
		try:
			logging.debug('Hit the Authorize Complete Handler')
			
			client_id = facebook_auth['client_id']
			client_secret = facebook_auth['client_secret']
			
			#=======================================================================
			# Fetch access_token from facebook
			#=======================================================================
			
			#check for error
			error = self.request.get('error',None)
			assert error == None, 'User denied request'
			
			state = self.request.get('state',None)
			code = self.request.get('code',None)
			logging.debug(state)
			logging.debug(code)
			
			
			redirect_uri = 'http://levr-production.appspot.com/facebook/authorize/complete'
			
			url = 'https://graph.facebook.com/oauth/access_token?client_id={client_id}&redirect_uri={redirect_uri}&client_secret={client_secret}&code={code}'.format(
																 client_id= client_id, redirect_uri= redirect_uri, client_secret= client_secret, code= code)
			
			# Fetch the access token from facebook
			result = urlfetch.fetch(url=url)
			logging.debug(result.content)
			logging.debug(type(result.content))
			logging.debug(levr.log_dir(result.content))
			
			facebook_token = result.content.split('&')[0].split('=')[1]
			logging.debug(facebook_token)
			
			
			
			#=======================================================================
			# Create User and connect them with levr
			#=======================================================================
			
			#wrap the user in the social class - creates new user if user doesnt exist
			user = social.Facebook(facebook_token=facebook_token)
			
			user,new_details,new_friends = user.first_time_connect(facebook_token=facebook_token)
			
			logging.debug(levr.log_model_props(user))
			logging.debug(levr.log_dict(new_details))
			logging.debug(levr.log_dict(new_friends))
			try:
				logging.debug(user.display_name)
				logging.debug(user.first_name)
				logging.debug(user.last_name)
				logging.debug(user.facebook_id)
			except:
				levr.log_error()
			#send the founders a text
			levr.text_notify(user.first_name + ' ' + user.last_name + ' from facebook')
			
			#set up the jinja template and echo out
	#		template = jinja_environment.get_template('templates/deal.html')
	#		self.response.out.write(template.render(template_values))
			self.response.out.write('Hooray! you are connected with levr!')
			logging.debug(levr.log_dict(user))
		except:
			levr.log_error()
			self.response.out.write('Could not connect with Facebook')
示例#11
0
    def get(self):
        try:
            logging.debug('Hit the Authorize Complete Handler')

            client_id = facebook_auth['client_id']
            client_secret = facebook_auth['client_secret']

            #=======================================================================
            # Fetch access_token from facebook
            #=======================================================================

            #check for error
            error = self.request.get('error', None)
            assert error == None, 'User denied request'

            state = self.request.get('state', None)
            code = self.request.get('code', None)
            logging.debug(state)
            logging.debug(code)

            redirect_uri = 'http://levr-production.appspot.com/facebook/authorize/complete'

            url = 'https://graph.facebook.com/oauth/access_token?client_id={client_id}&redirect_uri={redirect_uri}&client_secret={client_secret}&code={code}'.format(
                client_id=client_id,
                redirect_uri=redirect_uri,
                client_secret=client_secret,
                code=code)

            # Fetch the access token from facebook
            result = urlfetch.fetch(url=url)
            logging.debug(result.content)
            logging.debug(type(result.content))
            logging.debug(levr.log_dir(result.content))

            facebook_token = result.content.split('&')[0].split('=')[1]
            logging.debug(facebook_token)

            #=======================================================================
            # Create User and connect them with levr
            #=======================================================================

            #wrap the user in the social class - creates new user if user doesnt exist
            user = social.Facebook(facebook_token=facebook_token)

            user, new_details, new_friends = user.first_time_connect(
                facebook_token=facebook_token)

            logging.debug(levr.log_model_props(user))
            logging.debug(levr.log_dict(new_details))
            logging.debug(levr.log_dict(new_friends))
            try:
                logging.debug(user.display_name)
                logging.debug(user.first_name)
                logging.debug(user.last_name)
                logging.debug(user.facebook_id)
            except:
                levr.log_error()
            #send the founders a text
            levr.text_notify(user.first_name + ' ' + user.last_name +
                             ' from facebook')

            #set up the jinja template and echo out
            #		template = jinja_environment.get_template('templates/deal.html')
            #		self.response.out.write(template.render(template_values))
            self.response.out.write('Hooray! you are connected with levr!')
            logging.debug(levr.log_dict(user))
        except:
            levr.log_error()
            self.response.out.write('Could not connect with Facebook')
示例#12
0
	def get(self):
		try:
			logging.debug('Hit the Authorize Complete Handler')
			client_id = 'UNHLIF5EYXSKLX50DASZ2PQBGE2HDOIK5GXBWCIRC55NMQ4C'
			secret = 'VLKDNIT0XSA5FK3XIO05DAWVDVOXTSUHPE4H4WOHNIZV14G3'
			redirect = 'https://levr-production.appspot.com/foursquare/authorize/complete'
			
			
			try:
				logging.info(levr.log_dir(self.request))
			except:
				logging.info(self.request)
			
			
			code = self.request.get('code',None)
			#if no code was passed, then the authorization is happening through the phone.
			NO_CODE_MESSAGE = 'Code was not passed. Authorization is happening on phone.'
			assert code, NO_CODE_MESSAGE
			
			logging.info(code)
			
			#make request for token
			url = "https://foursquare.com/oauth2/access_token?client_id="+client_id+"&client_secret="+secret+"&grant_type=authorization_code&redirect_uri="+redirect+"&code="+code
			result = urlfetch.fetch(url=url)
			logging.debug(result.content)
			foursquare_token = json.loads(result.content)['access_token']
			logging.info(foursquare_token)
			
#			#grab more user details
#			url = 'https://api.foursquare.com/v2/users/self?v=20120920&oauth_token='+token
#			result = urlfetch.fetch(url=url)
#			response_dict = json.loads(result.content)
#			
#			logging.debug(levr.log_dict(response_dict))
			
			#let the foursquare parsing code do its thing
			user = social.Foursquare(foursquare_token=foursquare_token)
			
			user,new_details,new_friends = user.first_time_connect(
																foursquare_token = foursquare_token
																)
#			user.connect_with_content(response_dict,True,foursquare_token=token)
			
			logging.debug(levr.log_model_props(user))
			logging.debug(levr.log_dict(new_details))
			logging.debug(levr.log_dict(new_friends))
			
			
			#send the founders a text
			levr.text_notify(user.first_name + ' ' + user.last_name + ' from foursquare')
			
			#launch the jinja environment
			jinja_environment = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(__file__)))
			#set up the jinja template and echo out
			template = jinja_environment.get_template('templates/landing.html')
			self.response.out.write(template.render())
			
			logging.debug(levr.log_dict(user))
		except AssertionError,e:
			if e.message == NO_CODE_MESSAGE:
				#this is an expected case. Authorization is happening on the phone
				self.response.out.write('Please wait...')
			else:
				levr.log_error(e)
				self.response.out.write('Could not connect with Foursquare.')