UNPKG

@hashgraph/sdk

Version:
3 lines (2 loc) 1.5 kB
import t,{encodeRequest as e,decodeUnaryResponse as a}from"./Channel.js";import{encode as s,decode as r}from"../encoding/base64.native.js";import o 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,d,l)=>{try{const b=s(new Uint8Array(e(d))),h=!(this._address.includes("localhost")||this._address.includes("127.0.0.1"))?`https://${this._address}`:`http://${this._address}`,f=await fetch(`${h}/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){l(new o(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=r(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=r(u.split("data:application/grpc-web+proto;base64,")[1])}l(null,a(w.buffer,w.byteOffset,w.byteLength))}catch(t){l(t,null)}}}}export{c as default}; //# sourceMappingURL=NativeChannel.js.map