コード例 #1
0
ファイル: main_handler.py プロジェクト: ubien/feedly-glass
 def post(self):
     data = json.loads(self.request.body)
     actions  = data.get('userActions', [])
     for action in actions:
         if 'payload' in action:
             credentials = StorageByKeyName(Credentials, data['userToken'], 'credentials').get()
             token = self._get_auth_token(data['userToken'])
             if credentials and token:
                 mirror_service = util.create_service('mirror', 'v1', credentials)
                 timeline_item = mirror_service.timeline().get(id=data['itemId']).execute()
                 if  action['payload'] == 'save':
                     logging.debug('save to feedly')
                     fa = FeedlyAPI(FEEDLY_USER, FEEDLY_SECRET)
                     id_parts = self._parse_source_id(timeline_item['sourceItemId'])
                     fa.addTagSave(id_parts['userId'], id_parts['entryId'], token)
                 elif action['payload'] == 'refresh':
                     logging.debug('sourceId:'+timeline_item['sourceItemId'])
                     #refreshCard = db.GqlQuery("SELECT * FROM RefreshCards WHERE id = :1", timeline_item['sourceItemId']).get()
                     #if memcache.get(key=timeline_item['sourceItemId']):
                         #memcache.delete(timeline_item['sourceItemId'])
                     if self._del_refresh_card(timeline_item['sourceItemId']):
                         logging.debug('refresh items')
                         logging.debug(data)
                         self._refresh_stream(mirror_service, token=token)
     self.response.set_status(200)
     self.response.out.write("")
コード例 #2
0
ファイル: main_handler.py プロジェクト: ubien/feedly-glass
 def _handle_feedly_auth(self, code):
     fa = FeedlyAPI(FEEDLY_USER, FEEDLY_SECRET)
     resp = fa.getToken(code, FEEDLY_REDIRECT)
     user = db.GqlQuery("SELECT * FROM FeedlyUser WHERE id = :1", self.userid).get()
     logging.debug(resp)
     if 'access_token' in resp:
         if not user:
             user = FeedlyUser(id=self.userid)
         user.feedly_access_token=resp['access_token']
         user.feedly_refresh_token=resp['refresh_token']
         logging.debug("insert "+str(self.userid))
         user.put()
コード例 #3
0
ファイル: main_handler.py プロジェクト: ubien/feedly-glass
    def _refresh_stream(self, mirror_service, token=None):
        if not token:
            token = self._get_auth_token()
        if token:
            fa = FeedlyAPI(FEEDLY_USER, FEEDLY_SECRET)
            profile = fa.getProfile(token)
            if 'errorCode' in profile:
                refresh_token = self._get_refresh_token()
                resp = fa.refreshToken(refresh_token)
                if 'access_token' in resp:
                    token = resp['access_token']
                    self._set_auth_token(token)
                    profile = fa.getProfile(None)
            userId = profile['id']
            if hasattr(self,'userid'):
                self._subscribeTimelineEvent(mirror_service, self.userid)
            existing_cards = self._clearTimeline(mirror_service)
            batch = BatchHttpRequest()
            if not existing_cards[CARD_COVER_TITLE]:
                cardCover = self._create_bundle_cover(1)
                batch.add(
                    mirror_service.timeline().insert(body=cardCover),
                    request_id=str(userId)+'-cover'
                )
            else:
                batch.add(
                    mirror_service.timeline().update(id=existing_cards[CARD_COVER_TITLE]['id'], body=existing_cards[CARD_COVER_TITLE]),
                    request_id=str(userId)+'-cover'
                )
            if not existing_cards[CARD_REFRESH_TITLE]:
                cardRefresh = self._create_refresh_card(self._get_refresh_id(userId), 1)
                batch.add(
                    mirror_service.timeline().insert(body=cardRefresh),
                    request_id=str(userId)+'-refresh'
                )
            else:
                self._del_refresh_card(existing_cards[CARD_REFRESH_TITLE]['sourceItemId'])
                id = self._get_refresh_id(userId)
                self._set_refresh_card(id)
                existing_cards[CARD_REFRESH_TITLE]['sourceItemId'] = id
                batch.add(
                    mirror_service.timeline().update(id=existing_cards[CARD_REFRESH_TITLE]['id'], body=existing_cards[CARD_REFRESH_TITLE]),
                    request_id=str(userId)+'-refresh'
                )

            feed_content = fa.getStreamContentUser(token, userId, count=5, unreadOnly='true')
            logging.debug(feed_content)
            if feed_content['items']:
                markEntryIds = []
                for item in feed_content['items']:
                    logging.debug(item['title'])
                    image = None
                    if 'thumbnail' in item:
                        image = item['thumbnail'][0]['url']
                    elif 'visual' in item and 'url' in item['visual']:
                        image = item['visual']['url']
                    elif 'summary' in item and 'content' in item['summary'] and 'src=' in item['summary']['content']:
                        start_loc = item['summary']['content'].find('src="')
                        end_loc = item['summary']['content'].find('"', start_loc+5)
                        if start_loc != -1 and end_loc != -1:
                            image = item['summary']['content'][start_loc+5:end_loc]
                    markEntryIds.append(item['id'])
                    source_id = self._get_source_id(userId,item['id'])
                    body = self._create_card(source_id, item['title'], item['origin']['title'], image, item['alternate'][0]['href'], 1)
                    batch.add(
                        mirror_service.timeline().insert(body=body),
                        request_id=item['id']
                    )
                batch.execute(httplib2.Http())
                fa.markAsRead(token, markEntryIds)