bugfix
This commit is contained in:
parent
ddbb6071a6
commit
db46411c80
@ -32,6 +32,7 @@ async def sync_users(request, upappid, userid):
|
||||
|
||||
class UAPI:
|
||||
def __init__(self, request, env=DictObject()):
|
||||
self.request = request
|
||||
self.te = MyTemplateEngine([], env=env)
|
||||
self.env = env
|
||||
self.env.request.request = request
|
||||
@ -92,41 +93,44 @@ class UAPI:
|
||||
return
|
||||
if auth_uapi:
|
||||
await self.do_auth(auth_uapi)
|
||||
async for line in self.stream_gen(uapi):
|
||||
yield line
|
||||
async for chunk in self.stream_resp(uapi):
|
||||
yield chunk
|
||||
|
||||
async def request(self, upappid, upapiid, callerid, params={}):
|
||||
auth_uapi, uapi = await self.get_uapis(upapiid, apiname,
|
||||
callerid, params=params)
|
||||
if auth_uapi:
|
||||
await self.do_auth(auth_uapi)
|
||||
return await self.do_call(uapi)
|
||||
async def request(self, upappid, apiname, callerid, params={}):
|
||||
b = b''
|
||||
async for chunk in self(upapiid, apiname, callerid, params=params):
|
||||
b += chunk
|
||||
return b
|
||||
|
||||
async def do_auth(self, auth_uapi):
|
||||
b = await self.do_call(auth_uapi)
|
||||
b = b''
|
||||
async for chunk in self.stream_resp(auth_uapi):
|
||||
b+= chunk
|
||||
d = json.loads(b.encode('utf-8'))
|
||||
self.env.update(d)
|
||||
return
|
||||
|
||||
async def do_call(self, api, params={}):
|
||||
async def stream_resp(self, api, params={}):
|
||||
url = self.env.get('baseurl') + api.path
|
||||
method = api.httpmethod
|
||||
header = await self.rendertmpl(api.headers)
|
||||
header = json.loads(headers)
|
||||
body = await self.rendertmpl(api.body)
|
||||
headers = await self.rendertmpl(api.headers)
|
||||
headers = json.loads(headers)
|
||||
body = await self.rendertmpl(api.data)
|
||||
if body:
|
||||
bdy = json.loads(body)
|
||||
bdy['stream'] = True
|
||||
body = json.dumps(bdy, ensure_ascii=False)
|
||||
_params = await self.rendertmpl(api.params)
|
||||
if _params:
|
||||
_params = json.loads(_params)
|
||||
debug(f'{headers=}, {body=}. {method=}, {url=}')
|
||||
shc = StreamHttpClient()
|
||||
b = await shc.request(method, url,
|
||||
gen = shc(method, url,
|
||||
headers=headers,
|
||||
data=body,
|
||||
params=_params)
|
||||
|
||||
d = json.loads(b.encode('utf-8'))
|
||||
if api.response:
|
||||
return await self.rendertmpl(api.response, params=d)
|
||||
return d
|
||||
async for chunk in gen:
|
||||
yield chunk
|
||||
|
||||
async def stream_gen(self, api, params={}):
|
||||
url = self.env.get('baseurl') + api.path
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user