diff --git a/appPublic/httpclient.py b/appPublic/httpclient.py index aed9aee..09a1e84 100755 --- a/appPublic/httpclient.py +++ b/appPublic/httpclient.py @@ -1,5 +1,6 @@ import asyncio import aiohttp +from myTE import MyTemplateEngine import re from appPublic.log import info, debug, warning, error, exception, critical @@ -106,6 +107,34 @@ class HttpClient: return self.request(url, 'POST', **kw) session = self.getsession(url) +class JsonHttpAPI: + def __init__(self): + this.te = MyTemplateEngine() + this.hc = HttpClient() + + async def call(self, url, method='GET', ns={}, + headerstmpl=None, + paramstmpl=None, + datatmpl=None, + resptmpl=None): + headers = None + if headerstmpl: + headers = json.loads(self.te.renders(headerstmpl, ns)) + params = None + if paramstmpl: + params = json.loads(self.te.renders(paramstmpl, ns)) + data = None + if datatmpl: + datas = json.loads(self.te.renders(datatmpl, ns)) + resp = await self.hc.request(url, method=method, headers=headers, + response_type=RESPONSE_JSON, + params=params, + data=data) + ret = resp + if resptmpl: + ret = self.te.renders(resptmpl, resp) + return ret + if __name__ == '__main__': async def gbaidu(hc): r = await hc.get('https://www.baidu.com')