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