def callservice(url__, **kargs): kw = {} if kargs: # urlencode does not accept non-ascii data for k, v in kargs.iteritems(): if isinstance(v, unicode): kargs[k] = v.encode('utf-8') kw['data'] = urlencode(kargs) if not _testing: req = Request(url__, **kw) u = urlopen(req) return u.read() else: kargs = '&'.join(['='.join((k, str(v))) for k, v in kargs.iteritems()]) if kargs: url__ = '%s?%s' % (url__, kargs) from idileslib.turbogears.testing import Browser browser = Browser() browser.goto(url__) return browser.body
elif method == 'get': if params: url = '%s?%s' % (url, params) u = urlopen(url) else: raise ValueError('Unknown method: %s' % method) except HTTPError, e: raise ValueError(e.read()) resp = u.read() return resp else: if params: url = '%s?%s' % (url, params) from idileslib.turbogears.testing import Browser browser = Browser() browser.goto(url) return browser.body def _unjsonify(text): import jsonlib return jsonlib.read(text) class Service(object): def __init__(self, url, method='post', auth=None, *args, **kargs): """Constructs a proxy object for a remote service. url - A URL of the service method - HTTP method: get or post. Default post auth - dict(realm=<realm>, user=<username>, passwd=<password>). Default None """ super(Service, self).__init__(*args, **kargs)