[browser2] add an XMLPage

This commit is contained in:
Bezleputh 2014-04-03 16:34:36 +02:00
commit 0ed7ed2b2d
2 changed files with 12 additions and 3 deletions

View file

@ -18,8 +18,8 @@
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
from .browser import BaseBrowser, DomainBrowser, Wget, Firefox, UrlNotAllowed, Profile
from .page import PagesBrowser, BasePage, URL, HTMLPage, LoginBrowser, need_login, JsonPage, LoggedPage
from .page import PagesBrowser, BasePage, URL, HTMLPage, LoginBrowser, need_login, JsonPage, LoggedPage, XMLPage
__all__ = ['BaseBrowser', 'DomainBrowser', 'Wget', 'Firefox', 'UrlNotAllowed', 'Profile',
__all__ = ['BaseBrowser', 'DomainBrowser', 'Wget', 'Firefox', 'UrlNotAllowed', 'Profile', 'XMLPage',
'PagesBrowser', 'BasePage', 'URL', 'HTMLPage', 'LoginBrowser', 'need_login', 'JsonPage', 'LoggedPage']

View file

@ -26,6 +26,7 @@ import sys
from copy import deepcopy
from cStringIO import StringIO
import lxml.html as html
import lxml.etree as etree
from weboob.tools.json import json
from weboob.tools.ordereddict import OrderedDict
@ -332,7 +333,7 @@ class LoginBrowser(PagesBrowser):
self.password = password
def do_login(self):
""""
"""
Abstract method to implement to login on website.
It is call when a login is needed.
@ -417,12 +418,20 @@ class Form(OrderedDict):
"""
return self.page.browser.location(self.request)
class JsonPage(BasePage):
def __init__(self, browser, response, *args, **kwargs):
super(JsonPage, self).__init__(browser, response, *args, **kwargs)
self.doc = json.loads(response.text)
class XMLPage(BasePage):
def __init__(self, browser, response, *args, **kwargs):
super(XMLPage, self).__init__(browser, response, *args, **kwargs)
parser = etree.XMLParser(encoding=response.encoding)
self.doc = etree.parse(StringIO(response.content), parser)
class RawPage(BasePage):
def __init__(self, browser, response, *args, **kwargs):
super(RawPage, self).__init__(browser, response, *args, **kwargs)