Beispiel #1
0
 def post(self):
        duser = self.request.get('duser',None)
        iuser = self.request.get('iuser',None)
        ipass = self.request.get('ipass',None)
        dpass = self.request.get('dpass',None)
        logging.info('credentials delicious %s %s instapaper %s %s' % (duser, dpass, iuser, ipass))
        if duser is None or iuser is None:
                 logging.info('bad request ')
                 self.response.out.write('Bad request!')
                 return
        if '@yahoo' in duser:
                 duser = duser[:duser.index('@')]
                 logging.info('proposed screen name %s'  %duser)
        auth_resp = 200
        try:
                 authen_url='https://www.instapaper.com/api/authenticate'
                 values = {'username':iuser, 'password':ipass}
                 data = urllib.urlencode(values)
                 result = urlfetch.fetch(
                                 url=authen_url,
                                 payload=data, 
                                 method=urlfetch.POST, 
                                 headers={'Content-Type': 'application/x-www-form-urlencoded'})
                 auth_resp = result.status_code
                 logging.info('response %s' % result.status_code)
        except:
                 logging.info('instapaper authenticate error %s %s' % (sys.exc_info()[0], sys.exc_info()[1]))
                 auth_resp = 404
        successImport = DeliciousImporter.gql('WHERE instapaper_account = :1 and delicious_account = :2 and success = True', iuser, duser).get()
        if successImport is None:
                 logging.info('initializing new import instapaper:%s delicious:%s' %(iuser, duser))
                 importStats=DeliciousImporter()
                 importStats.instapaper_account=iuser
                 importStats.instapaper_pass=ipass
                 importStats.delicious_account=duser
                 importStats.put()
        else:
                 logging.info('repeating import delicious %s instapaper %s' %(iuser, duser))
                 
        if auth_resp == 200:
                 taskqueue.add(queue_name='instapaper-import', url='/tools/import/delicious/task', 
                         params={'duser':duser, 'iuser':iuser, 'ipass':ipass})
                 resp='Import has been initialized, it can take a while. Try <a href="http://bit.ly/instaright" title="Instapaper Firefox addon">Instapaper Firefox addon</a>.'
                 
        elif auth_resp == 403:
                 logging.info('instapaper validation did not pass %s' %auth_resp)
                 resp='Invalid Instapaper credentials.'
        else:
                 logging.info('something is wrong w/ service')
                 resp='Error encountered. Please try later!'
        self.response.out.write(resp)
Beispiel #2
0
 def post(self):
        duser = self.request.get('duser',None)
        iuser = self.request.get('iuser',None)
        ipass = self.request.get('ipass',None)
        d_link='http://feeds.delicious.com/v2/json/%s'  %duser
        logging.info('fetching felicious feed %s' %d_link)
        #dpass = self.request.get('dpass',None)
        json = None
        try:
                dta = urllib2.urlopen(d_link)
                json = simplejson.load(dta)
        except:
                logging.info('can\'t fetch url %s' % d_link)
        if json is not None:
            for j in json:
                logging.info('delicious link %s %s' %(j['d'], j['u']))
                taskqueue.add(queue_name='instapaper-import', url='/tools/import/instapaper/task', 
                params={'instauser': iuser, 'instapass':ipass,'url':j['u'], 'title':j['d']})
        existing=DeliciousImporter.gql('where instapaper_account = :1 and delicious_account = :2', iuser, duser).get()
        existing.success=True
        existing.put()