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("/")
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("/")
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("/")
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("/")
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)
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)
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("/")
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"] })
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")
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")
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)
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")
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)