Ejemplo n.º 1
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("/")
Ejemplo n.º 2
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("/")
Ejemplo n.º 3
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("/")
Ejemplo n.º 4
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("/")
Ejemplo n.º 5
0
    def post(self):
        import hashlib
        import hmac
        import logging
        from StringIO import StringIO
        from time import time
        from urllib2 import urlopen
        from django.utils import simplejson
        from dropbox import helper as dropbox_helper

        payload = self.request.body

        # verify payload
        signature = self.request.headers['X-Hub-Signature']
        client_secret = settings.INSTAGRAM_CONFIG['client_secret']
        hashing_obj= hmac.new(client_secret.encode("utf-8"),
            msg = payload.encode("utf-8"),
            digestmod = hashlib.sha1)
        digest = hashing_obj.hexdigest()

        if digest != signature:
            logging.info("Digest and signature differ. (%s, %s)"
                % (digest, signature))
            return

        changes = simplejson.loads(payload)
        for change in changes:
            profiles = Profile.all()
            profiles.filter("ig_user_id =", change['object_id'])
            profile = profiles.get()

            if not profile:
                logging.info("Cannot find profile %s", change['object_id'])
                continue

            instagram_client = InstagramAPI(
                    access_token = profile.ig_access_token)

            media, _ = instagram_client.user_recent_media(count = 1)
            media = media[0]

            media_file = urlopen(media.images['standard_resolution'].url)
            media_data = media_file.read()

            dropbox_file = StringIO(media_data)
            dropbox_file.name = ("%s.jpg" % int(time()))

            dropbox_client = dropbox_helper.authenticated_client(profile)
            dropbox_client.put_file(
                settings.DROPBOX_CONFIG['root'],
                "/Instagram Photos/",
                dropbox_file)
Ejemplo n.º 6
0
    def post(self):
        import hashlib
        import hmac
        import logging
        from StringIO import StringIO
        from time import time
        from urllib2 import urlopen
        from django.utils import simplejson
        from dropbox import helper as dropbox_helper

        payload = self.request.body

        # verify payload
        signature = self.request.headers['X-Hub-Signature']
        client_secret = settings.INSTAGRAM_CONFIG['client_secret']
        hashing_obj = hmac.new(client_secret.encode("utf-8"),
                               msg=payload.encode("utf-8"),
                               digestmod=hashlib.sha1)
        digest = hashing_obj.hexdigest()

        if digest != signature:
            logging.info("Digest and signature differ. (%s, %s)" %
                         (digest, signature))
            return

        changes = simplejson.loads(payload)
        for change in changes:
            profiles = Profile.all()
            profiles.filter("ig_user_id =", change['object_id'])
            profile = profiles.get()

            if not profile:
                logging.info("Cannot find profile %s", change['object_id'])
                continue

            instagram_client = InstagramAPI(
                access_token=profile.ig_access_token)

            media, _ = instagram_client.user_recent_media(count=1)
            media = media[0]

            media_file = urlopen(media.images['standard_resolution'].url)
            media_data = media_file.read()

            dropbox_file = StringIO(media_data)
            dropbox_file.name = ("%s.jpg" % int(time()))

            dropbox_client = dropbox_helper.authenticated_client(profile)
            dropbox_client.put_file(settings.DROPBOX_CONFIG['root'],
                                    "/Instagram Photos/", dropbox_file)
Ejemplo n.º 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.db_access_token_key = None
            profile.db_oauth_token_secret = None
            profile.put()

        self.redirect("/")
Ejemplo n.º 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.db_access_token_key = None
            profile.db_oauth_token_secret = None
            profile.put()

        self.redirect("/")
Ejemplo n.º 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 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"]
            })
Ejemplo n.º 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 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")
Ejemplo n.º 11
0
    def get(self):
        from oauth import oauth

        dba = dropbox_auth.Authenticator(settings.DROPBOX_CONFIG)

        token = self.request.get("oauth_token")
        profile = Profile.all().filter("db_oauth_token_key =", token).get()

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

        oauth_token = oauth.OAuthToken(key=profile.db_oauth_token_key, secret=profile.db_oauth_token_secret)

        verifier = settings.DROPBOX_CONFIG["verifier"]
        access_token = dba.obtain_access_token(oauth_token, verifier)

        profile.db_access_token_key = access_token.key
        profile.db_access_token_secret = access_token.secret
        profile.put()

        self.redirect("/connect")
Ejemplo n.º 12
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)
Ejemplo n.º 13
0
    def get(self):
        from oauth import oauth

        dba = dropbox_auth.Authenticator(settings.DROPBOX_CONFIG)

        token = self.request.get("oauth_token")
        profile = Profile.all().filter("db_oauth_token_key =", token).get()

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

        oauth_token = oauth.OAuthToken(key=profile.db_oauth_token_key,
                                       secret=profile.db_oauth_token_secret)

        verifier = settings.DROPBOX_CONFIG['verifier']
        access_token = dba.obtain_access_token(oauth_token, verifier)

        profile.db_access_token_key = access_token.key
        profile.db_access_token_secret = access_token.secret
        profile.put()

        self.redirect("/connect")
Ejemplo n.º 14
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)