@hashgraph/sdk
Version:
3 lines (2 loc) • 1.38 kB
JavaScript
import t,{encodeRequest as e,decodeUnaryResponse as a}from"./Channel.js";import{encode as r,decode as o}from"../encoding/base64.native.js";import s from"../http/HttpError.js";import n from"../http/HttpStatus.js";import{SDK_NAME as i,SDK_VERSION as p}from"../version.js";class c extends t{constructor(t){super(),this._address=t}close(){}_createUnaryClient(t){return async(c,l,d)=>{try{const b=r(new Uint8Array(e(l))),f=await fetch(`${this._address}/proto.${t}/${c.name}`,{method:"POST",headers:{"content-type":"application/grpc-web-text","x-user-agent":`${i}/${p}`,"x-accept-content-transfer-encoding":"base64","x-grpc-web":"1"},body:b});if(!f.ok){d(new s(n._fromValue(f.status)),null)}const m=await f.blob(),u=await new Promise(((t,e)=>{const a=new FileReader;a.readAsDataURL(m),a.onloadend=()=>{t(a.result)},a.onerror=e}));let w;if(u.startsWith("data:application/octet-stream;base64,"))w=o(u.split("data:application/octet-stream;base64,")[1]);else{if(!u.startsWith("data:application/grpc-web+proto;base64,"))throw new Error(`Expected response data to be base64 encode with a 'data:application/octet-stream;base64,' or 'data:application/grpc-web+proto;base64,' prefix, but found: ${u}`);w=o(u.split("data:application/grpc-web+proto;base64,")[1])}d(null,a(w.buffer,w.byteOffset,w.byteLength))}catch(t){d(t,null)}}}}export{c as default};
//# sourceMappingURL=NativeChannel.js.map