Example #1
0
class TwitterAuth(webapp.RequestHandler):
    """Handles Twitter OAuth. See oauth.py for more documentation"""

    def get(self):
        self.cookie = LilCookies(self, config.cookie_secret)
        id = self.cookie.get_secure_cookie("username")

        if self.request.get("oauth_token"):
            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)

            # Create the user in the database
            if not id:
                id = user_info["username"]
                user = User.all().filter("user ="******"tw" + id)
            else:
                user = User.get_by_key_name(id)
            user.user = user_info["username"]
            user.name = user_info["name"]
            user.picture = user_info["picture"]
            user.token = user_info["token"]
            user.secret = user_info["secret"]
            user.put()

            self.cookie.set_secure_cookie("username", user.key().name())
            self.redirect("/")

        else:
            self.redirect(client.get_authorization_url())
Example #2
0
class HomePage(webapp.RequestHandler):
    def get(self):
        """Displays the setup page for logged-in users, and home page for others."""
        self.cookie = LilCookies(self, config.cookie_secret)
        id = self.cookie.get_secure_cookie("username")
        if not id:
            self.response.out.write(template.render("template/home.html", locals()))
        else:
            user = User.get_by_key_name(id)
            emails = Email.all().filter("username ="******"template/setup.html", locals()))

    def post(self):
        """Adds or deletes e-mail addresses for a logged-in user"""
        self.cookie = LilCookies(self, config.cookie_secret)
        id = self.cookie.get_secure_cookie("username")
        email = self.request.get("email").lower()
        delete = self.request.get("delete").lower()
        if id:
            if email:
                mapping = Email.get_by_key_name(email) or Email(key_name=email)
                mapping.username = self.cookie.get_secure_cookie("username")
                mapping.subscribe = datetime.datetime.utcnow().hour
                mapping.put()
            elif delete:
                mapping = Email.get_by_key_name(delete)
                if mapping:
                    mapping.delete()

        self.redirect("/")
Example #3
0
  def get(self):

    cookies = LilCookies(self, secrets.cookie_secret)
    username = cookies.get_secure_cookie(cfg.COOKIE_USERNAME)

    if not username:
      self.error(404)
      self.response.out.write(not_found.geterr())
      return

    d = model.MarkovUserV1.get_by_key_name(username)
    if not d:
      self.error(404)
      self.response.out.write(not_found.geterr())
      return

    if d.generated is None:
      self.renderTemplate(cfg.NOTHING_TO_POST_TEMPLATE)
      return

    auth = OAuth(d.userToken, d.userSecret, consumer_key, secrets.consumer_secret)
    twitter = Twitter(auth=auth)

    result = setStatus(twitter, d.generated)
    #import example_response
    #result = example_response.response

    self.renderTemplate(cfg.POST_TEMPLATE, TIME=result['created_at'], USER=username, ID=result['id'], POST=d.generated)

    d.generated = None
    d.put()
Example #4
0
    def get(self):
        ig_user_id = self.request.get("ig_user_id")

        if not ig_user_id:
            self.redirect("/connect")

        instagram_client = InstagramAPI(**settings.INSTAGRAM_CONFIG)

        access_token = instagram_client.exchange_user_id_for_access_token(ig_user_id)

        instagram_client = InstagramAPI(access_token = access_token)

        user = instagram_client.user("self")

        profiles = Profile.all()
        profiles.filter("ig_user_id = ", user.id)
        profile = (profiles.get() or Profile())

        profile.full_name = (user.full_name or user.username)
        profile.ig_user_id = user.id
        profile.ig_username = user.username
        profile.ig_access_token = access_token
        profile.put()

        cookieutil = LilCookies(self, settings.COOKIE_SECRET)
        cookieutil.set_secure_cookie(
                name = "ig_user_id",
                value = user.id,
                expires_days = 365)

        self.redirect("/")
Example #5
0
    def get(self):
        ig_user_id = self.request.get("ig_user_id")

        if not ig_user_id:
            self.redirect("/connect")

        instagram_client = InstagramAPI(**settings.INSTAGRAM_CONFIG)

        access_token = instagram_client.exchange_user_id_for_access_token(
            ig_user_id)

        instagram_client = InstagramAPI(access_token=access_token)

        user = instagram_client.user("self")

        profiles = Profile.all()
        profiles.filter("ig_user_id = ", user.id)
        profile = (profiles.get() or Profile())

        profile.full_name = (user.full_name or user.username)
        profile.ig_user_id = user.id
        profile.ig_username = user.username
        profile.ig_access_token = access_token
        profile.put()

        cookieutil = LilCookies(self, settings.COOKIE_SECRET)
        cookieutil.set_secure_cookie(name="ig_user_id",
                                     value=user.id,
                                     expires_days=365)

        self.redirect("/")
Example #6
0
class FacebookAuth(webapp.RequestHandler):
    """Handles Facebook OAuth. See http://developers.facebook.com/docs/api"""

    def get(self):
        self.cookie = LilCookies(self, config.cookie_secret)
        id = self.cookie.get_secure_cookie("username")

        if self.request.get("code"):
            # Get the access token in exchange for the code
            url = "https://graph.facebook.com/oauth/access_token?" + urllib.urlencode(
                {
                    "client_id": config.facebook_params["app_id"],
                    "client_secret": config.facebook_params["app_secret"],
                    "redirect_uri": self.request.url.split("?")[0],
                    "code": self.request.get("code"),
                }
            )
            out = urlfetch.fetch(url)
            if out.status_code != 200:
                self.response.out.write(out.content)
                return

            data = cgi.parse_qs(out.content)
            token = data["access_token"][0]

            # Get the user profile data
            out = urlfetch.fetch("https://graph.facebook.com/me?access_token=" + token)
            if out.status_code != 200:
                self.response.out.write(out.content)
                return

            # Create the user in the database
            user_info = json.loads(out.content)
            if not id:
                id = user_info["id"]
                user = User.all().filter("fb_id =", id).get() or User(key_name="fb:" + id)
            else:
                user = User.get_by_key_name(id)
            user.name = user_info["name"]
            user.fb_id = user_info["id"]
            user.fb_token = token
            user.put()

            self.cookie.set_secure_cookie("username", user.key().name())
            self.redirect("/")

        else:
            url = "https://graph.facebook.com/oauth/authorize?" + urllib.urlencode(
                {
                    "client_id": config.facebook_params["app_id"],
                    "redirect_uri": self.request.url.split("?")[0],
                    "scope": "publish_stream,offline_access,read_stream",
                }
            )
            self.redirect(url)
Example #7
0
    def get(self):
        cookieutil = LilCookies(self, settings.COOKIE_SECRET)
        ig_user_id = cookieutil.get_secure_cookie(name = "ig_user_id")

        profiles = Profile.all()
        profiles.filter("ig_user_id =", ig_user_id)
        profile = profiles.get()

        if profile:
            profile.delete()

        self.redirect("/")
Example #8
0
    def get(self):
        cookieutil = LilCookies(self, settings.COOKIE_SECRET)
        ig_user_id = cookieutil.get_secure_cookie(name="ig_user_id")

        profiles = Profile.all()
        profiles.filter("ig_user_id =", ig_user_id)
        profile = profiles.get()

        if profile:
            profile.delete()

        self.redirect("/")
Example #9
0
    def get(self):
        cookieutil = LilCookies(self, settings.COOKIE_SECRET)
        ig_user_id = cookieutil.get_secure_cookie(name = "ig_user_id")

        profiles = Profile.all()
        profiles.filter("ig_user_id =", ig_user_id)
        profile = profiles.get()

        if profile:
            self.render_template("connected.html")
        else:
            self.render_template("not_connected.html", {
                "client_id": settings.INSTAGRAM_CONFIG["client_id"]
            })
Example #10
0
    def get(self):
        cookieutil = LilCookies(self, settings.COOKIE_SECRET)
        ig_user_id = cookieutil.get_secure_cookie(name="ig_user_id")

        profiles = Profile.all()
        profiles.filter("ig_user_id =", ig_user_id)
        profile = profiles.get()

        if profile:
            profile.db_access_token_key = None
            profile.db_oauth_token_secret = None
            profile.put()

        self.redirect("/")
Example #11
0
    def get(self):
        cookieutil = LilCookies(self, settings.COOKIE_SECRET)
        ig_user_id = cookieutil.get_secure_cookie(name="ig_user_id")

        profiles = Profile.all()
        profiles.filter("ig_user_id =", ig_user_id)
        profile = profiles.get()

        if profile:
            profile.db_access_token_key = None
            profile.db_oauth_token_secret = None
            profile.put()

        self.redirect("/")
Example #12
0
    def get(self):
        cookieutil = LilCookies(self, settings.COOKIE_SECRET)
        ig_user_id = cookieutil.get_secure_cookie(name = "ig_user_id")

        profiles = Profile.all()
        profiles.filter("ig_user_id =", ig_user_id)
        profile = profiles.get()

        if profile and profile.fully_connected():
            self.render_template("connected.html")
        else:
            self.render_template("not_connected.html", {
                "profile": profile,
                "client_id": settings.INSTAGRAM_CONFIG["client_id"]
            })
Example #13
0
  def get(self):

    cookies = LilCookies(self, secrets.cookie_secret)
    username = cookies.get_secure_cookie(cfg.COOKIE_USERNAME)

    if username is None:
      self.renderTemplate(cfg.INDEX_TEMPLATE)
      return

    d = model.MarkovUserV1.get_by_key_name(username)
    if d is None:
      cookies.clear_cookie(cfg.COOKIE_USERNAME)
      self.response.out.write(default)
      return

    self.renderTemplate(cfg.AUTHED_INDEX_TEMPLATE, USER=username)
Example #14
0
    def get(self):
        cookieutil = LilCookies(self, settings.COOKIE_SECRET)
        ig_user_id = cookieutil.get_secure_cookie(name = "ig_user_id")


        profiles = Profile.all()
        profiles.filter("ig_user_id =", ig_user_id)
        profile = profiles.get()

        if profile and profile.db_access_token_key and \
                       profile.db_access_token_secret:
            self.redirect("/")
        elif profile and not (profile.db_access_token_key or
                              profile.db_access_token_secret):
            self.redirect("/dropbox/auth")
        else:
            self.redirect("/instagram/auth")
Example #15
0
 def get(self):
     """Displays the setup page for logged-in users, and home page for others."""
     self.cookie = LilCookies(self, config.cookie_secret)
     id = self.cookie.get_secure_cookie("username")
     if not id:
         self.response.out.write(template.render("template/home.html", locals()))
     else:
         user = User.get_by_key_name(id)
         emails = Email.all().filter("username ="******"template/setup.html", locals()))
Example #16
0
    def get(self):
        cookieutil = LilCookies(self, settings.COOKIE_SECRET)
        ig_user_id = cookieutil.get_secure_cookie(name="ig_user_id")

        dba = dropbox_auth.Authenticator(settings.DROPBOX_CONFIG)
        req_token = dba.obtain_request_token()

        profiles = Profile.all()
        profiles.filter("ig_user_id =", ig_user_id)
        profile = profiles.get()

        if not profile:
            self.redirect("/connect")
            return

        profile.db_oauth_token_key = req_token.key
        profile.db_oauth_token_secret = req_token.secret
        profile.put()

        authorize_url = dba.build_authorize_url(req_token, callback=settings.DROPBOX_CALLBACK)

        self.redirect(authorize_url)
Example #17
0
  def get(self):

    cookies = LilCookies(self, secrets.cookie_secret)
    username = cookies.get_secure_cookie(cfg.COOKIE_USERNAME)

    if username is None:
      self.error(404)
      self.response.out.write(not_found.geterr())
      return

    d = model.MarkovUserV1.get_by_key_name(username)
    if not d:
      self.error(404)
      self.response.out.write(not_found.geterr())
      return

    stored_tweets = d.tweets
    if not stored_tweets:
      texts = fetch_tweets(d.userToken, d.userSecret)
      d.tweets = zlib.compress(pickle.dumps(texts))
      d.put()
    else:
      texts = pickle.loads(zlib.decompress(stored_tweets))

    order, table = 7, {}

    for text in texts:
        table = mrkvtwt.makeTableN(order, text, table)

    for generated in mrkvtwt.markov(order, table):
      continue

    tweet = ''.join(generated)[:140]

    d.generated = tweet
    d.put()

    self.renderTemplate(cfg.GENERATE_DONE_TEMPLATE, POST=d.generated)
Example #18
0
  def get(self):

    auth_token = self.request.get("oauth_token")
    auth_verifier = self.request.get("oauth_verifier")

    oauth_client = getOAuth(self.request.host_url)
    user_info = oauth_client.get_user_info(auth_token, auth_verifier=auth_verifier)

    username = user_info['username']

    d = model.MarkovUserV1(key_name=username)
    d.atName = username
    d.pictureUrl = user_info['picture']
    d.userSecret = user_info['secret']
    d.userToken = user_info['token']
    d.name = user_info['name']

    self.renderTemplate(cfg.OAUTH_TEMPLATE, USER=username)

    cookies = LilCookies(self, secrets.cookie_secret)
    cookies.set_secure_cookie(cfg.COOKIE_USERNAME, username)

    d.put()
Example #19
0
    def get(self):
        cookieutil = LilCookies(self, settings.COOKIE_SECRET)
        ig_user_id = cookieutil.get_secure_cookie(name="ig_user_id")

        dba = dropbox_auth.Authenticator(settings.DROPBOX_CONFIG)
        req_token = dba.obtain_request_token()

        profiles = Profile.all()
        profiles.filter("ig_user_id =", ig_user_id)
        profile = profiles.get()

        if not profile:
            self.redirect("/connect")
            return

        profile.db_oauth_token_key = req_token.key
        profile.db_oauth_token_secret = req_token.secret
        profile.put()

        authorize_url = dba.build_authorize_url(
            req_token, callback=settings.DROPBOX_CALLBACK)

        self.redirect(authorize_url)
Example #20
0
    def post(self):
        """Adds or deletes e-mail addresses for a logged-in user"""
        self.cookie = LilCookies(self, config.cookie_secret)
        id = self.cookie.get_secure_cookie("username")
        email = self.request.get("email").lower()
        delete = self.request.get("delete").lower()
        if id:
            if email:
                mapping = Email.get_by_key_name(email) or Email(key_name=email)
                mapping.username = self.cookie.get_secure_cookie("username")
                mapping.subscribe = datetime.datetime.utcnow().hour
                mapping.put()
            elif delete:
                mapping = Email.get_by_key_name(delete)
                if mapping:
                    mapping.delete()

        self.redirect("/")