From fa3424667f481f89fdc6d00a451ae6659071980c Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Fri, 2 Jan 2015 16:47:26 +0100 Subject: [PATCH] add an APIBrowser --- weboob/browser/browsers.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/weboob/browser/browsers.py b/weboob/browser/browsers.py index 56815196..9cfd1f65 100644 --- a/weboob/browser/browsers.py +++ b/weboob/browser/browsers.py @@ -42,6 +42,7 @@ except ImportError: from weboob.tools.log import getLogger from weboob.tools.ordereddict import OrderedDict +from weboob.tools.json import json from .cookies import WeboobCookieJar from .exceptions import HTTPNotFound, ClientError, ServerError @@ -721,3 +722,17 @@ class LoginBrowser(PagesBrowser): It is call when a login is needed. """ raise NotImplementedError() + + +class APIBrowser(DomainBrowser): + def open(self, *args, **kwargs): + if 'data' in kwargs: + kwargs['data'] = json.dumps(kwargs['data']) + if not 'headers' in kwargs: + kwargs['headers'] = {} + kwargs['headers']['Content-Type'] = 'application/json' + + return super(APIBrowser, self).open(*args, **kwargs) + + def request(self, *args, **kwargs): + return self.open(*args, **kwargs).json()