[feedly] improve login management
This commit is contained in:
parent
bc1746214c
commit
1569eb00ee
3 changed files with 26 additions and 18 deletions
|
|
@ -18,9 +18,10 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from weboob.tools.json import json
|
||||
from weboob.capabilities.base import UserError
|
||||
from weboob.capabilities.collection import Collection
|
||||
from weboob.browser import LoginBrowser, URL, need_login
|
||||
from .pages import EssentialsPage, TokenPage, ContentsPage, PreferencesPage
|
||||
from .pages import EssentialsPage, TokenPage, ContentsPage, PreferencesPage, MarkerPage
|
||||
|
||||
|
||||
__all__ = ['FeedlyBrowser']
|
||||
|
|
@ -33,24 +34,27 @@ class FeedlyBrowser(LoginBrowser):
|
|||
token = URL('v3/auth/token', TokenPage)
|
||||
contents = URL('v3/streams/contents', ContentsPage)
|
||||
preferences = URL('v3/preferences', PreferencesPage)
|
||||
marker = URL('v3/markers')
|
||||
marker = URL('v3/markers', MarkerPage)
|
||||
|
||||
def __init__(self, username, password, login_browser, *args, **kwargs):
|
||||
super(FeedlyBrowser, self).__init__(username, password, *args, **kwargs)
|
||||
self.login_browser = login_browser
|
||||
self.user_id = None
|
||||
self.login_browser = login_browser
|
||||
|
||||
def do_login(self):
|
||||
if self.login_browser.code is None or self.user_id is None:
|
||||
self.login_browser.do_login()
|
||||
params = {'code': self.login_browser.code,
|
||||
'client_id': 'feedly',
|
||||
'client_secret': '0XP4XQ07VVMDWBKUHTJM4WUQ',
|
||||
'redirect_uri': 'http://dev.feedly.com/feedly.html',
|
||||
'grant_type': 'authorization_code'}
|
||||
if self.login_browser:
|
||||
if self.login_browser.code is None or self.user_id is None:
|
||||
self.login_browser.do_login()
|
||||
params = {'code': self.login_browser.code,
|
||||
'client_id': 'feedly',
|
||||
'client_secret': '0XP4XQ07VVMDWBKUHTJM4WUQ',
|
||||
'redirect_uri': 'http://dev.feedly.com/feedly.html',
|
||||
'grant_type': 'authorization_code'}
|
||||
|
||||
token, self.user_id = self.token.go(data=params).get_token()
|
||||
self.session.headers['X-Feedly-Access-Token'] = token
|
||||
token, self.user_id = self.token.go(data=params).get_token()
|
||||
self.session.headers['X-Feedly-Access-Token'] = token
|
||||
else:
|
||||
raise UserError(r'You need to fill your username and password to access this page')
|
||||
|
||||
@need_login
|
||||
def iter_threads(self):
|
||||
|
|
@ -60,6 +64,7 @@ class FeedlyBrowser(LoginBrowser):
|
|||
'count': '100'}
|
||||
return self.contents.go(params=params).get_articles()
|
||||
|
||||
@need_login
|
||||
def get_unread_feed(self, url):
|
||||
params = {'streamId': url,
|
||||
'backfill': 'true',
|
||||
|
|
|
|||
|
|
@ -20,11 +20,11 @@
|
|||
from urlparse import urlparse, parse_qs
|
||||
|
||||
from weboob.browser import LoginBrowser, URL
|
||||
from weboob.browser.pages import HTMLPage
|
||||
from weboob.browser.pages import HTMLPage, LoggedPage
|
||||
from weboob.exceptions import BrowserIncorrectPassword
|
||||
|
||||
|
||||
class GoogleLoginPage(HTMLPage):
|
||||
class GoogleLoginPage(LoggedPage, HTMLPage):
|
||||
def login(self, login, passwd):
|
||||
form = self.get_form('//form[@id="gaia_loginform"]')
|
||||
form['Email'] = login
|
||||
|
|
|
|||
|
|
@ -21,14 +21,14 @@ from datetime import datetime
|
|||
|
||||
from weboob.capabilities.messages import Message
|
||||
from weboob.capabilities.collection import Collection
|
||||
from weboob.browser.pages import JsonPage
|
||||
from weboob.browser.pages import JsonPage, LoggedPage
|
||||
from weboob.browser.elements import ItemElement, DictElement, method
|
||||
from weboob.browser.filters.standard import CleanText, Format
|
||||
from weboob.browser.filters.json import Dict
|
||||
from weboob.browser.filters.html import CleanHTML
|
||||
|
||||
|
||||
class ContentsPage(JsonPage):
|
||||
class ContentsPage(LoggedPage, JsonPage):
|
||||
|
||||
@method
|
||||
class get_articles(DictElement):
|
||||
|
|
@ -82,8 +82,11 @@ class EssentialsPage(JsonPage):
|
|||
return feed.get('id')
|
||||
|
||||
|
||||
class PreferencesPage(JsonPage):
|
||||
class PreferencesPage(LoggedPage, JsonPage):
|
||||
def get_categories(self):
|
||||
for category, value in self.doc.items():
|
||||
if value in [u"shown", u"hidden"]:
|
||||
yield Collection([u'%s' % category], u'%s' % category.replace('global.', ''))
|
||||
|
||||
class MarkerPage(LoggedPage):
|
||||
pass
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue