Example #1
0
 def get(self):
     #print os.environ["HTTP_HOST"]
     #print os.environ['REMOTE_ADDR']
     callback_url = "http://%s:8080/" % os.environ["REMOTE_ADDR"]
     """for k, v in os.environ.items():
         print "%s=%s" % (k,v)"""
     client = oauth.TwitterClient(CONSUMER_KEY, CONSUMER_SECRET_KEY, None)
     m = self.request.get("m")
     type = self.request.get("type")
     message = m
     param = {'status': message}
     message = urllib.quote(message.encode("utf-8"))
     if (m != "" and type == "update"):
         try:
             res = client.make_request(
                 'http://api.twitter.com/1/statuses/update.json',
                 token=ACCESS_TOKEN,
                 secret=ACCESS_TOKEN_SECRET,
                 additional_params=param,
                 method='POST')
         except Exception, e:
             logging.error(e)
         if res.status_code != 200:
             logging.warning('Failed to post a message to twitter. status_code: %d' \
                         % res.status_code)
             self.response.out.write('Error Status:' + res.status_code)
             self.response.headers['Content-Type'] = 'application/json'
         self.response.out.write(res.content)
Example #2
0
File: main.py Project: xwl/gtap
    def post(self, mode=''):

        callback_url = "%s/oauth/verify" % self.request.host_url
        client = oauth.TwitterClient(CONSUMER_KEY, CONSUMER_SECRET,
                                     callback_url)

        if mode == 'changekey':
            screen_name = self.request.get("name")
            old_key = self.request.get("old_key")
            new_key = self.request.get("new_key")
            user_access_token, user_access_secret = client.get_access_from_db(
                screen_name, old_key)

            if user_access_token is None or user_access_secret is None:
                logging.debug("screen_name:" + screen_name)
                logging.debug("old_key:" + old_key)
                logging.debug("new_key:" + new_key)
                self.response.out.write(
                    'Can not find user from db, or invalid old_key.')
            else:
                try:
                    client.save_user_info_into_db(username=screen_name,
                                                  password=new_key,
                                                  token=user_access_token,
                                                  secret=user_access_secret)
                    show_key_url = '%s/oauth/showkey?name=%s&key=%s' % (
                        self.request.host_url, screen_name, new_key)
                    self.redirect(show_key_url)
                except Exception, error_message:
                    logging.debug("screen_name:" + screen_name)
                    logging.debug("old_key:" + old_key)
                    logging.debug("new_key:" + new_key)
                    logging.debug(error_message)
                    self.response.out.write(error_message)
Example #3
0
 def post(self):
     self.response.headers['Content-Type'] = 'text/html'
     client = oauth.TwitterClient(dc.keys["twitter"]["CONSUMER_KEY"],
                                  dc.keys["twitter"]["CONSUMER_SECRET_KEY"],
                                  None)
     cs = CloudSQL(instance='dajaremockupdb:dajare1242',
                   database='dajare1242')
     id = self.request.cookies.get("dajare1242_id", "").encode("utf-8")
     user = cs.select(table='userdb', column='*', option='WHERE id=%s' % id)
     access_token = user[0][3]
     access_token_secret = user[0][4]
     message = self.request.get("tw")
     if message is "":
         self.redirect("/")
     param = {'status': message}
     tweet = cs.select(table='user_tweet',
                       column='*',
                       option='WHERE uid="%s" AND tweet="%s"' %
                       (id.encode("utf-8"), message.encode("utf-8")))
     if str(len(tweet)) == "0":
         data = (id.encode("utf-8"), message.encode("utf-8"))
         cs.insert(column=("uid", "tweet"), data=data)
         res = client.make_request(
             'http://api.twitter.com/1/statuses/update.json',
             token=access_token,
             secret=access_token_secret,
             additional_params=param,
             method='POST')
     else:
         self.response.out.write('投稿済み')
     self.redirect("/")
Example #4
0
 def get(self):
     cs = CloudSQL(instance='dajaremockupdb:dajare1242',
                   database='dajare1242')
     self.response.headers['Content-Type'] = 'text/html'
     callback_url = "http://%s/oauth_callback" % (os.environ["HTTP_HOST"])
     id = self.request.cookies.get("dajare1242_id", "").encode("utf-8")
     q = self.request.get("q")
     p = self.request.get("p")
     prefix = "dajare1242_"
     expires = 60 * 60 * 24
     self.response.headers.add_header(
         'Set-Cookie', '%s=%s; expires=%s; PATH=/;' %
         (prefix + "redirect_uri", '/', expires))
     tv = {}
     tv["signin"] = 0
     client = None
     if id == "":
         client = oauth.TwitterClient(
             dc.keys["twitter"]["CONSUMER_KEY"],
             dc.keys["twitter"]["CONSUMER_SECRET_KEY"], callback_url)
     else:
         tv["signin"] = 1
         tv["id"] = id
         tv["user_tmp"] = cs.select(table='userdb',
                                    column='*',
                                    option='WHERE id="%s"' % str(tv["id"]))
         tv["user"] = tv["user_tmp"][0]
     if client is not None:
         tv["oauthUrl"] = client.get_authorization_url()
     if q is "":
         if len(os.environ["PATH_INFO"].split("/")) == 3:
             q = os.environ["PATH_INFO"].split("/")[3]
         #print len(os.environ["PATH_INFO"].split("/"))
         #
     if p is "":
         p = "1"
     # self.response.out.write(q)
     url = "http://dajare-api.appspot.com/find/?size=100&keyword=" + q + "&page=" + p
     """
         POSTのみ対応、また
     """
     t = urlfetch.fetch(url=url)
     j = simplejson.loads(t.content)
     page = 0
     if j["allTotal"] is not 0 and j["total"] is not 0:
         page = j["allTotal"] / j["total"]
     tv["json"] = j
     tv["words"] = urllib2.unquote(q)
     tv["allTotal"] = j["allTotal"]
     tv["page"] = range(page)
     #self.response.out.write(page)
     # http://http://dajare-api.appspot.com/?page=1&size=20
     tmpl_path = os.path.dirname(__file__) + "/tmpl/"
     path = os.path.join(tmpl_path, 'search.tmp')
     # self.response.out.write(template.render(path, []))
     self.response.out.write(template.render(path, tv))
Example #5
0
def twitter_request(request):
    """
    Login or signup a user with twitter.
    """
    consumer_key = settings.TWITTER_CONSUMER_KEY
    consumer_secret = settings.TWITTER_CONSUMER_SECRET
    callback_url = settings.TWITTER_CALLBACK

    client = oauth.TwitterClient(consumer_key, consumer_secret, callback_url)
    return redirect(client.get_authorization_url())
Example #6
0
def try_request(url='http://api.twitter.com/1/statuses/friends_timeline.json'):
    """Send request to twitter url"""

    # request.content holds json response
    # request.headers holds http headers

    client = oauth.TwitterClient(CONSUMER_KEY, CONSUMER_SECRET, CALLBACK_URL)
    result = client.make_request(url, token=USER_TOKEN, secret=USER_SECRET,
                                additional_params=None, method=urlfetch.GET)
    return json.loads(result.content)
Example #7
0
def twitter_signin(request):
    """Signin a user through twitter."""
    consumer_key = settings.TWITTER_CONSUMER_KEY
    consumer_secret = settings.TWITTER_CONSUMER_SECRET
    callback_url = settings.TWITTER_CALLBACK

    if request.user.is_authenticated():
        return redirect(settings.LOGIN_REDIRECT_URL)

    client = oauth.TwitterClient(consumer_key, consumer_secret, callback_url)
    return redirect(client.get_authenticate_url())
Example #8
0
    def get(self):
        cs = CloudSQL(instance='dajaremockupdb:dajare1242',
                      database='dajare1242')
        self.response.headers['Content-Type'] = 'text/html'
        callback_url = "http://%s/oauth_callback" % (os.environ["HTTP_HOST"])
        id = self.request.cookies.get("dajare1242_id", "").encode("utf-8")
        prefix = "dajare1242_"
        expires = 60 * 60 * 24
        self.response.headers.add_header(
            'Set-Cookie', '%s=%s; expires=%s; PATH=/;' %
            (prefix + "redirect_uri", urllib2.quote(
                os.environ["PATH_INFO"]), expires))
        # print self.request.cookies.get("dajare1242_redirect_uri", "").encode("utf-8")
        """
        for k, v in os.environ.items():
            print "%s=%s" % (k,v)
        """
        client = None
        user = None
        tv = {}
        tv["signin"] = 0
        if id == "":
            client = oauth.TwitterClient(
                dc.keys["twitter"]["CONSUMER_KEY"],
                dc.keys["twitter"]["CONSUMER_SECRET_KEY"], callback_url)
        else:
            tv["signin"] = 1
            tv["id"] = id
            tbl = 'userdb'
            tv["user_tmp"] = cs.select(table=tbl,
                                       column='*',
                                       option='WHERE id="%s"' % str(tv["id"]))
            tv["user"] = tv["user_tmp"][0]
        if client is not None:
            tv["oauthUrl"] = client.get_authorization_url()
        pid = None
        #id=self.request.get("id")
        if pid is None:
            pid = os.environ["PATH_INFO"].split("/")[2]
        url = "http://dajare-api.appspot.com/find/" + pid
        t = urlfetch.fetch(url=url)
        j = simplejson.loads(t.content)

        tv["invild_flag"] = False
        if type(j["results"]) is types.DictionaryType:
            tv["json"] = j["results"]
            tv["invild_flag"] = True
            tv["host"] = "http://%s%s" % (os.environ["HTTP_HOST"],
                                          os.environ["PATH_INFO"])
            tv["fb"] = urllib2.unquote(tv["host"])
        tmpl_path = os.path.dirname(__file__) + "/tmpl/"
        fileName = 'frame.tmp'
        path = os.path.join(tmpl_path, fileName)
        self.response.out.write(template.render(path, tv))
Example #9
0
    def get(self, mode=""):
        callback_url = "%s/oauth/verify" % self.request.host_url
        client = oauth.TwitterClient(CONSUMER_KEY, CONSUMER_SECRET, callback_url)

        if mode=='session':
            # step C Consumer Direct User to Service Provider
            try:
                url = client.get_authorization_url()
                self.redirect(url)
            except Exception,error_message:
                self.response.out.write( error_message )
Example #10
0
    def do_proxy(self, method):
        orig_url = self.request.url
        orig_body = self.request.body

        new_url, new_path = self.conver_url(orig_url)

        if new_path == '/' or new_path == '':
            user = users.get_current_user()
            if user == None:
                self.redirect(users.create_login_url('/'))
            else:
                if not users.is_current_user_admin():
                    self.error(403)
                    path = os.path.join(os.path.dirname(__file__), '403.html')
                    self.response.out.write(template.render(path, {}))
                    return
                else:
                    global gtap_message
                    gtap_message = gtap_message.replace(
                        '#gtap_version#', gtap_version)
                    return success_output(self, gtap_message)

        username, password = self.parse_auth_header(self.request.headers)
        user_access_token = None

        consumer_key, consumer_secret = oauth.get_consumer_info()
        callback_url = "%s/oauth/verify" % self.request.host_url
        client = oauth.TwitterClient(consumer_key, consumer_secret,
                                     callback_url)

        if username is None:
            protected = False
            user_access_token, user_access_secret = '', ''
        else:
            protected = True
            user_access_token, user_access_secret = client.get_access_from_db(
                username, password)
            if user_access_token is None:
                return error_output(self, 'Can not find this user from db')

        additional_params = dict([(k, v) for k, v in parse_qsl(orig_body)])

        use_method = urlfetch.GET if method == 'GET' else urlfetch.POST

        try:
            data = client.make_request(url=new_url,
                                       token=user_access_token,
                                       secret=user_access_secret,
                                       method=use_method,
                                       protected=protected,
                                       additional_params=additional_params)
        except Exception, error_message:
            logging.debug(error_message)
            error_output(self, content=error_message)
Example #11
0
def twit(message):
    """
	Отправляет в твиттер произвольное сообщение.
	"""
    client = oauth.TwitterClient(config.TWITTER_CONSUMER_KEY,
                                 config.TWITTER_CONSUMER_SECRET,
                                 'http://%s/verify' % config.HOSTNAME)
    result = client.make_request('http://twitter.com/statuses/update.json',
                                 token=config.TWITTER_ACCESS_TOKEN_KEY,
                                 secret=config.TWITTER_ACCESS_TOKEN_SECRET,
                                 additional_params={'status': message},
                                 method=urlfetch.POST)
Example #12
0
    def authenticate(self, auth_token=None, auth_verifier=None):
        import oauth
        consumer_key = settings.TWITTER_CONSUMER_KEY
        consumer_secret = settings.TWITTER_CONSUMER_SECRET
        callback_url = settings.TWITTER_CALLBACK

        client = oauth.TwitterClient(consumer_key, consumer_secret,
                                     callback_url)
        user_info = client.get_user_info(auth_token,
                                         auth_verifier=auth_verifier)

        return self.user_from_info(self._parse_info(user_info))
Example #13
0
    def get(self):
        cs = CloudSQL(instance='dajaremockupdb:dajare1242',
                      database='dajare1242')
        (oauth_token, oauth_verifier) = (self.request.get("oauth_token"),
                                         self.request.get("oauth_verifier"))
        if self.request.get("denied") is not "":
            #print self.request.get("denied")
            self.redirect("/")
            return False
        client = oauth.TwitterClient(dc.keys["twitter"]["CONSUMER_KEY"],
                                     dc.keys["twitter"]["CONSUMER_SECRET_KEY"],
                                     None)
        user_info = client.get_user_info(oauth_token, oauth_verifier)
        prefix = "dajare1242_"

        self.response.headers.add_header(
            'Set-Cookie', '%s=%s;' % (prefix + "id", user_info["id"]))
        #cs.create('userdb', ['user_name VARCHAR(255)', 'service VARCHAR(255)', 'picture TEXT', 'token TEXT', 'secret TEXT', 'id VARCHAR(255)'])
        op = 'WHERE id="%s"' % user_info["id"]
        tbl = 'userdb'
        user = cs.select(table=tbl, column='*', option=op)
        #self.response.out.write(user)
        #return False
        if str(len(user)) is "0":
            # Add User
            data = (user_info["username"], user_info["service"],
                    user_info["picture"], user_info["token"],
                    user_info["secret"], str(user_info["id"]))
            cs.insert(column=("user_name", "service", "picture", "token",
                              "secret", "id"),
                      data=data)
        elif str(len(user)) is "1":
            '''
                Update Profile
            '''
            sql = cs.update(column=["user_name", "token", "secret"],
                            data=[
                                user_info["username"], user_info["token"],
                                user_info["secret"]
                            ],
                            option=' WHERE id="%s"' % (str(user_info["id"])))
        AuthTokenDelete()
        uri = self.request.cookies.get("dajare1242_redirect_uri", "")
        #print uri
        if uri is not "":
            search_word = self.request.cookies.get("dajare1242_search_word",
                                                   "")
            if search_word is not "":
                uri = uri + '?q=' + search_word
            self.redirect(uri)
        else:
            self.redirect("/")
 def _doTweet(self, masterData, botData):
   import oauth
   client = oauth.TwitterClient(masterData.cKey,
                                masterData.cSecret, None)
   run_on_appengine(client, store_tokens=False, single_user_mode=True)
   param = {'status': botData.status}
   client.make_request('https://api.twitter.com/1.1/statuses/update.json',
                       token=masterData.aToken,
                       secret=masterData.aTokenSecret,
                       additional_params=param,
                       protected=True,
                       method='POST')
   logging.info(botData.status)
Example #15
0
    def get(self):
        consumer_key = self.request.get("consumer_key", default_value="")
        consumer_secret = self.request.get("consumer_secret", default_value="")
        access_token = self.request.get("access_token", default_value="")
        secret_token = self.request.get("secret_token", default_value="")
        count = self.request.get("count", default_value="200")

        client = oauth.TwitterClient(consumer_key, consumer_secret, "oob")

        respuesta = client.make_request(
            "https://api.twitter.com/1.1/statuses/home_timeline.json",
            token=access_token, secret=secret_token,additional_params={"count": count}, protected=True)
        
        self.response.write(respuesta.content)
Example #16
0
    def get(self):
        consumer_key = self.request.get("consumer_key", default_value="")
        consumer_secret = self.request.get("consumer_secret", default_value="")
        access_token = self.request.get("access_token", default_value="")
        secret_token = self.request.get("secret_token", default_value="")
        count = self.request.get("count", default_value="200")

        client = oauth.TwitterClient(consumer_key, consumer_secret, "oob")

        respuesta = client.make_request(
            "https://api.twitter.com/1.1/statuses/home_timeline.json",
            token=access_token,
            secret=secret_token,
            additional_params={"count": count},
            protected=True)
        self.response.headers.add_header('Access-Control-Allow-Origin', '*')
        self.response.headers['Content-Type'] = 'application/json'
        self.response.write(respuesta.content)
Example #17
0
    def get(self):
        consumer_key = self.request.get('consumer_key', default_value='')
        consumer_secret = self.request.get('consumer_secret', default_value='')
        access_token = self.request.get('access_token', default_value='')
        secret_token = self.request.get('secret_token', default_value='')
        count = self.request.get('count', default_value='20')

        client = oauth.TwitterClient(consumer_key, consumer_secret, 'oob')

        respuesta = \
            client.make_request('https://api.twitter.com/1.1/statuses/home_timeline.json'
                                , token=access_token,
                                secret=secret_token,
                                additional_params={'count': count},
                                protected=True)
        self.response.headers.add_header('Access-Control-Allow-Origin', '*')
        self.response.headers['Content-Type'] = 'application/json'
        self.response.write(respuesta.content)
Example #18
0
File: main.py Project: xwl/gtap
    def do_proxy(self, method):
        orig_url = self.request.url
        orig_body = self.request.body

        new_url, new_path = self.convert_url(orig_url)

        if new_path == '/' or new_path == '':
            global gtap_message
            gtap_message = gtap_message.replace('#gtap_version#', gtap_version)
            return success_output(self, gtap_message)

        username, password = self.parse_auth_header(self.request.headers)
        user_access_token = None

        callback_url = "%s/oauth/verify" % self.request.host_url
        client = oauth.TwitterClient(CONSUMER_KEY, CONSUMER_SECRET,
                                     callback_url)

        if username is None:
            protected = False
            user_access_token, user_access_secret = '', ''
        else:
            protected = True
            user_access_token, user_access_secret = client.get_access_from_db(
                username, password)
            if user_access_token is None:
                return error_output(self, 'Can not find this user from db')

        additional_params = dict([(k, v) for k, v in parse_qsl(orig_body)])

        use_method = urlfetch.GET if method == 'GET' else urlfetch.POST

        try:
            data = client.make_request(url=new_url,
                                       token=user_access_token,
                                       secret=user_access_secret,
                                       method=use_method,
                                       protected=protected,
                                       additional_params=additional_params)
        except Exception, error_message:
            logging.debug(error_message)
            error_output(self, content=error_message)
Example #19
0
    def get(self, mode=""):

        # Your application Twitter application ("consumer") key and secret.
        # You'll need to register an application on Twitter first to get this
        # information: http://www.twitter.com/oauth
        application_key = "FILL_IN"
        application_secret = "FILL_IN"

        # Fill in the next 2 lines after you have successfully logged in to
        # Twitter per the instructions above. This is the *user's* token and
        # secret. You need these values to call the API on their behalf after
        # they have logged in to your app.
        user_token = "FILL_IN"
        user_secret = "FILL_IN"

        # In the real world, you'd want to edit this callback URL to point to your
        # production server. This is where the user is sent to after they have
        # authenticated with Twitter.
        callback_url = "%s/verify" % self.request.host_url

        client = oauth.TwitterClient(application_key, application_secret,
                                     callback_url)

        if mode == "login":
            return self.redirect(client.get_authorization_url())

        if mode == "verify":
            auth_token = self.request.get("oauth_token")
            auth_verifier = self.request.get("oauth_verifier")
            user_info = client.get_user_info(auth_token,
                                             auth_verifier=auth_verifier)
            return self.response.out.write(user_info)

        if mode == "timeline":
            timeline_url = "http://twitter.com/statuses/user_timeline.xml"
            result = client.make_request(url=timeline_url,
                                         token=user_token,
                                         secret=user_secret)
            return self.response.out.write(result.content)

        self.response.out.write("<a href='/login'>Login via Twitter</a>")
Example #20
0
    def get(self):
        import random
        client = oauth.TwitterClient(self.CONSUMER_KEY,
                                     self.CONSUMER_SECRET_KEY, None)
        t = urlfetch.fetch(url=self.url)
        j = simplejson.loads(t.content)
        r = random.randint(1, len(j["results"]) - 1)
        str = u"%s %s 「%s」" % (
            u"", u"ダジャレで人を幸せにすることを目指し、日々収集中〜 http://goo.gl/KIVPF",
            j["results"][r]["text"])
        str = str[0:145]
        #j["results"][r]["idText"]

        param = {'status': str.encode("utf-8")}
        res = client.make_request(
            'http://api.twitter.com/1/statuses/update.json',
            token=self.ACCESS_TOKEN,
            secret=self.ACCESS_TOKEN_SECRET,
            additional_params=param,
            method='POST')
        self.response.out.write('')
Example #21
0
    def get(self):
        try:

            # Check if the validation was denied
            if self.request.get('denied'):
                self.redirect("/?denied=True")
                return

            client = oauth.TwitterClient(config.CONSUMER_KEY,
                                         config.CONSUMER_SECRET,
                                         config.CALLBACK)

            authToken = self.request.get("oauth_token")
            authVerifier = self.request.get("oauth_verifier")
            userInfo = client.get_user_info(authToken,
                                            auth_verifier=authVerifier)

            theUserRecord = TwitterUser(key_name=str(userInfo['id']),
                                        username=userInfo['username'],
                                        accessCode=self.getAccessCodeFromToken(
                                            userInfo['token']),
                                        accessToken=userInfo['token'],
                                        accessSecret=userInfo['secret'])

            theUserRecord.put()

            session = get_current_session()

            session.regenerate_id()

            session['twitter_user'] = userInfo
            session['user_record'] = theUserRecord

            self.redirect("/builder")

        except Exception as e:
            logging.exception(e)
            self.response.clear()
            self.response.set_status(500)
            self.response.out.write("Error validating Twitter's response")
Example #22
0
    def makeTwitterRequest(self, user, api, params):

        # Check if user has been disabled
        if user.accessSecret[:8] == 'DISABLED':
            self.abort(
                403,
                detail=
                "Your account has been disabled due to quota restrictions. Please contact @Tweet_2_RSS to get reinstated"
            )

        url = "https://api.twitter.com/1.1/{0}".format(api)

        client = oauth.TwitterClient(config.CONSUMER_KEY,
                                     config.CONSUMER_SECRET, config.CALLBACK)

        resp = client.make_request(url,
                                   user.accessToken,
                                   user.accessSecret,
                                   additional_params=params,
                                   protected=True)

        if resp.status_code == 200:
            return json.loads(resp.content)
Example #23
0
    def get(self):

        # Obtención de datos desde fichero en sistema
        #      fich = open("tweets.json")
        #      fich = fich.read()
        #      self.response.write(fich)

        #Obtención de datos desde servidor red social
        consumer_key = self.request.get("consumer_key", default_value="")
        consumer_secret = self.request.get("consumer_secret", default_value="")
        access_token = self.request.get("access_token", default_value="")
        secret_token = self.request.get("secret_token", default_value="")
        count = self.request.get("count", default_value="200")

        client = oauth.TwitterClient(consumer_key, consumer_secret, "oob")

        respuesta = client.make_request(
            "https://api.twitter.com/1.1/statuses/home_timeline.json",
            token=access_token,
            secret=secret_token,
            additional_params={"count": count},
            protected=True)

        self.response.write(respuesta.content)
Example #24
0
    def get(self, mode=""):

        client = oauth.TwitterClient(CONSUMER_KEY, CONSUMER_SECRET,
                                     "%s/app" % self.request.host_url)

        # The /app context displays the main catalog page

        if mode == "app":

            # Pull out auth token/verifier in order to get an access token
            # and in order to get some basic information about the user.

            auth_token = self.request.get("oauth_token")
            auth_verifier = self.request.get("oauth_verifier")
            user_info = client.get_user_info(auth_token,
                                             auth_verifier=auth_verifier)

            twitter_username = user_info['username']

            # Has a user already used this webapp with twitter_username?

            query = User.all().filter("twitter_username ="******"twitter_username ="******"login":

            return self.redirect(client.get_authorization_url())

        # /purchases is used to allow the user to access their digital goods purchases. When users login (or
        # immediately after they complete a purchase), they'll be able to click on a "already purchased" link
        # that takes them to the template that they purchased.

        elif mode == "purchases":

            sid = self.request.get('sid')
            if memcache.get(
                    sid
            ) is not None:  # Without an account reference, we can't credit the purchase

                item_id = self.request.get('item_id')

                # Verify that the user purchased the item by checking the account information

                user_info = memcache.get(sid)
                twitter_username = user_info['username']
                query = User.all().filter("twitter_username ="******"User %s has not purchased %s" % (
                        twitter_username,
                        item_id,
                    ))

                    self.response.out.write(
                        render_to_string(
                            'unknown_error.html', {
                                'title': 'Invalid Access',
                                'operation': 'document access'
                            }))

            else:
                logging.error("Invalid/expired session in /purchases")

                self.response.out.write(
                    render_to_string('session_expired.html', {
                        'title': 'Session Expired',
                    }))

        else:  # root URL context which is used for setting up the login flow

            self.response.out.write(
                render_to_string('root.html', {
                    'title': 'Legal Templates',
                }))
Example #25
0
    def get(self):
        cs = CloudSQL(instance='dajaremockupdb:dajare1242',
                      database='dajare1242')
        self.response.headers['Content-Type'] = 'text/html'
        url = "http://dajare-api.appspot.com/find/?page=1&size=20"
        callback_url = "http://%s/oauth_callback" % (os.environ["HTTP_HOST"])
        id = self.request.cookies.get("dajare1242_id", "").encode("utf-8")
        prefix = "dajare1242_"
        expires = 60 * 60 * 24
        self.response.headers.add_header(
            'Set-Cookie', '%s=%s; expires=%s; PATH=/;' %
            (prefix + "redirect_uri", urllib2.quote(
                os.environ["PATH_INFO"]), expires))
        client = None
        user = None
        tv = {}
        '''
        
        '''
        # http://kizasi.jp/rss.xml
        # xml=urlfetch.fetch(url='http://kizasi.jp/rss.xml')
        t = {}
        j = {}
        try:
            t = urlfetch.fetch(url=url)
            j = simplejson.loads(t.content)
        except DeadlineExceededError:
            self.response.out.write("DeadlineExceededError")
            return False
        if len(t.content) <= 1:
            return False

        tv["json"] = j
        tv["signin"] = 0
        if id == "":
            client = oauth.TwitterClient(
                dc.keys["twitter"]["CONSUMER_KEY"],
                dc.keys["twitter"]["CONSUMER_SECRET_KEY"], callback_url)
        else:
            tv["signin"] = 1
            tv["id"] = id
            op = 'WHERE id="%s"' % (id)
            tbl = 'userdb'
            tv["user_tmp"] = cs.select(table=tbl, column='*', option=op)
            tv["user"] = tv["user_tmp"][0]
        if client is not None:
            tv["oauthUrl"] = client.get_authorization_url()
        #
        """
            ランキング処理
        """
        url = "http://dajare-api.appspot.com/rank/?page=1&size=5"
        t = {}
        j = {}
        try:
            t = urlfetch.fetch(url=url)
            j = simplejson.loads(t.content)
            results = j["results"][0:10]
            j["results"] = results
            tv["rank"] = j
        except DeadlineExceededError:
            self.response.out.write("DeadlineExceededError")
            return
        #self.response.out.write(results[0:20]["createDate"])
        tv["rank"] = j
        # self.response.out.write(t.content)
        # http://http://dajare-api.appspot.com/?page=1&size=20
        tmpl_path = os.path.dirname(__file__) + "/tmpl/"
        path = os.path.join(tmpl_path, 'index.tmp')
        #self.response.out.write(template.render(path, []))
        self.response.out.write(template.render(path, tv))
    def get(self):
        client = oauth.TwitterClient(config.CONSUMER_KEY,
                                     config.CONSUMER_SECRET, config.CALLBACK)

        self.redirect(client.get_authenticate_url())
Example #27
0
import urllib

sys.path.insert(0, os.path.dirname(__file__) + '/lib/')
TEMPLATEDIR = os.path.dirname(__file__) + '/template/'

import oauth
import logging

import config

# dev
APPLICATION_KEY = config.APPLICATION_KEY
APPLICATION_SECRET = config.APPLICATION_SECRET
OAUTH_CALLBACK_URL = "%s/oauth/verify" % config.OAUTH_CALLBACK_URL

client = oauth.TwitterClient(APPLICATION_KEY, APPLICATION_SECRET,
                             OAUTH_CALLBACK_URL)

api_base_url = "http://api.twitter.com/1/"
api_search_url = "http://search.twitter.com/"


class Users(db.Model):
    user = db.UserProperty(required=True)
    oauth_token = db.StringProperty(required=True)  # TextProperty()
    oauth_secret = db.StringProperty(required=True)  # TextProperty()
    onetime_token = db.StringProperty(required=False)
    date = db.DateTimeProperty(auto_now_add=True)
    setting = db.StringProperty(required=False)


class Error(webapp.RequestHandler):
Example #28
0
# -*- coding: utf-8 -*-

import sys, os

to_add = os.path.join(os.path.dirname(__file__), "astral")
sys.path.append(to_add)
to_add = os.path.join(os.path.dirname(__file__), "pytz-2012f")
sys.path.append(to_add)

import oauth
import datetime
import pytz
from astral import *
import moonphase_bot.tokens as tokens

client = oauth.TwitterClient(tokens.application_key, tokens.application_secret, None)
url = 'https://api.twitter.com/1/statuses/update.json'

a = Astral()
city_name = 'Tokyo'
a.solar_depression = 'civil'
city = a[city_name]
timezone = city.timezone

one_day = datetime.timedelta(days=1)
tomorrow = datetime.datetime.now() + one_day

sun = city.sun(date=datetime.datetime.now(), local=True)
sun1 = city.sun(date=tomorrow, local=True)

moonphase = a.moon_phase(datetime.datetime.now(), None)
Example #29
0
    def get(self, mode=""):

        client = oauth.TwitterClient(twitter_config.TWITTER_CONSUMER_KEY,
                                     twitter_config.TWITTER_CONSUMER_SECRET,
                                     "%s/app" % self.request.host_url)

        # The /app context ensures that the user's account is in good standing in
        # terms of payment, computes relevance for tweets from their home timeline,
        # stashes the data and serves up the app. The app then requests the stashed
        # data via /data.

        if mode == "app":

            # Pull out auth token/verifier in order to get an access token
            # and in order to get some basic information about the user.
            # Subsequent requests will be performed via client.make_request

            auth_token = self.request.get("oauth_token")
            auth_verifier = self.request.get("oauth_verifier")
            user_info = client.get_user_info(auth_token,
                                             auth_verifier=auth_verifier)

            twitter_username = user_info['username']

            # Has a user already used this webapp with twitter_username?

            query = User.all().filter("twitter_username ="******"home_timeline":
                    "http://api.twitter.com/1/statuses/home_timeline.json",
                    "favorites_timeline":
                    "http://api.twitter.com/1/favorites.json",
                }

                # Fetch the first 5 pages of results for the data urls. (More pages could be requested.)
                # By default, there are 20 tweets per page for favorites and the home timeline

                num_pages = 5
                data = {}
                for name, url in data_urls.items():
                    data[name] = []
                    for page in range(1, num_pages + 1):
                        result = client.make_request(
                            url=url,
                            token=user_info['token'],
                            secret=user_info['secret'],
                            additional_params={'page': page})
                        if result.status_code == 200:
                            data[name] += json.loads(result.content)
                        else:
                            # Could do any number of useful things to actually handle this error
                            logging.error((
                                "Expected 200 response but received %d for request "
                                + url) % (
                                    result.status_code,
                                    page,
                                ))

                # Split out the text of the tweets, remove some leading/trailing punctuation, and filter
                # common stopwords

                terms = [
                    self._cleanupTerm(term.lower())
                    for tweet in data['favorites_timeline']
                    for term in tweet['text'].split() if self._cleanupTerm(
                        term.lower()) not in self._getStopwords()
                ]

                # Build a frequency map and sort by value

                freqs = {}
                for term in terms:
                    freqs[term] = freqs.get(term, 0) + 1

                sorted_terms = sorted(freqs.iteritems(),
                                      key=operator.itemgetter(1),
                                      reverse=True)

                # Iterate through each tweet in the home_timeline and assign a relevance score based upon
                # the ratio of how many of the top N frequent terms from the favorities appeared in the tweet

                n = 200
                top_n_terms = set([term for (term, freq) in sorted_terms[:n]])

                # Useful for gaining intuition into how the trivial algorithm works

                logging.info("\n\nTOP N TERMS FROM FAVORITES:")
                logging.info(top_n_terms)
                logging.info("\n\n")

                for tweet in data['home_timeline']:
                    tweet_terms = set([
                        self._cleanupTerm(term.lower())
                        for term in tweet['text'].split() if self._cleanupTerm(
                            term.lower()) not in self._getStopwords()
                    ])

                    num_frequent_terms = len(
                        tweet_terms.intersection(top_n_terms))

                    tweet['relevance'] = 1.0 * num_frequent_terms / len(
                        tweet_terms)

                    # You could optionally do any number of other things like normalize tweet scores at this point,
                    # boost relevance scores based upon additional criteria, throw in a random amount of serendipity
                    # into scores, etc. We'll just be boring  and filter out any tweet with a relevance greater than 0.0
                    # so that only tweets with a relevance of 0.0 or higher are returned in the final response
                    # The sky is the limit

                user_info['relevant_tweets'] = [
                    tweet for tweet in data['home_timeline']
                    if tweet['relevance'] > 0
                ]

                # For purposes of not frustrating users of this sample code who don't have any favorites (and would
                # hence not have any "relevant tweets", check to make sure at least one relevant tweet exists and
                # if it doesn't, just go ahead and assign all tweets as relevant since we have no information to
                # otherwise make a decision

                if len(user_info['relevant_tweets']) == 0:
                    user_info['relevant_tweets'] = data['home_timeline']

                # Store the ranked tweets as to user_info as "relevant_tweets" and
                # stash the latest results from relevance algorithm so the client app can grab them
                # from a subsequent request to /data

                memcache.set(sid, user_info, time=60 * 10)  # seconds

                db.put(user)

                # Redirect to a mobile client application that will use sid to make a request for the
                # tweets we just filtered and stashed away

                return self.redirect('/tweetview/index.html?sid=' + sid)

            # If an account exists but no logins are remaining, then direct the user to ante up
            # via a PayPal Express Checkout pay flow

            else:

                # Store the user_info so we can retrieve it in the next request

                memcache.set(sid, user_info, time=60 * 10)  # seconds

                product = Product.getProduct()

                template_values = {
                    'title':
                    'Payment Required',
                    'msg':
                    'Get unlimited access to Tweet Relevance for %s %s for a one-time charge of only $%s!'
                    % (product['quantity'], product['units'],
                       str(product['price'])),
                    'sid':
                    sid
                }

                path = os.path.join(os.path.dirname(__file__), '..',
                                    'templates', 'checkout.html')
                self.response.out.write(template.render(path, template_values))

        # Serves up stashed data (which takes place in a prior request to /app). A ?refresh=true parameter could
        # be built in to the /data request to charge the user for another request handle associated details if so
        # desired. This /data implementation simply returns the most previously calculated data

        elif mode == "data":

            user_info = memcache.get(self.request.get("sid"))
            self.response.headers.add_header('content-type',
                                             'application/json',
                                             charset='utf-8')
            self.response.out.write(
                json.dumps(user_info['relevant_tweets'], indent=2))

        elif mode == "login":

            return self.redirect(client.get_authorization_url())

        else:  # root URL context

            template_values = {
                'title': 'Tweet Relevance',
            }

            path = os.path.join(os.path.dirname(__file__), '..', 'templates',
                                'root.html')
            self.response.out.write(template.render(path, template_values))