|
1 | 1 | /* eslint-disable */ |
2 | 2 | // node-ts v1.0.0 21701cae51b73d035bf2180831cdb38220bbbccc |
3 | 3 | // -- |
4 | | -// Code generated by [email protected] with ../../../gen-typescript generator. DO NOT EDIT. |
| 4 | +// Code generated by [email protected]-1-g8943a04 with ../../../gen-typescript generator. DO NOT EDIT. |
5 | 5 | // |
6 | 6 | // webrpc-gen -schema=service.ridl -target=../../../gen-typescript -client -out=./webapp/client.gen.ts |
7 | 7 |
|
@@ -107,55 +107,48 @@ export class Example implements ExampleClient { |
107 | 107 | getUser: (req: GetUserRequest) => ['Example', 'getUser', req] as const, |
108 | 108 | getArticle: (req: GetArticleRequest) => ['Example', 'getArticle', req] as const, |
109 | 109 | } |
110 | | - |
| 110 | + |
111 | 111 | ping = (headers?: object, signal?: AbortSignal): Promise<PingResponse> => { |
112 | 112 | return this.fetch( |
113 | 113 | this.url('Ping'), |
114 | | - createHttpRequest({}, headers, signal) |
115 | | - ).then((res) => { |
| 114 | + createHttpRequest('{}', headers, signal)).then((res) => { |
116 | 115 | return buildResponse(res).then(_data => { |
117 | | - return {} |
| 116 | + return JsonDecode<PingResponse>(_data, 'PingResponse') |
118 | 117 | }) |
119 | 118 | }, (error) => { |
120 | 119 | throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error instanceof Error ? error.message : String(error)}` }) |
121 | 120 | }) |
122 | 121 | } |
123 | | - |
| 122 | + |
124 | 123 | getUser = (req: GetUserRequest, headers?: object, signal?: AbortSignal): Promise<GetUserResponse> => { |
125 | 124 | return this.fetch( |
126 | 125 | this.url('GetUser'), |
127 | | - createHttpRequest(req, headers, signal)).then((res) => { |
| 126 | + createHttpRequest(JsonEncode(req, 'GetUserRequest'), headers, signal)).then((res) => { |
128 | 127 | return buildResponse(res).then(_data => { |
129 | | - return { |
130 | | - code: <number>(_data.code), |
131 | | - user: <User>(_data.user), |
132 | | - } |
| 128 | + return JsonDecode<GetUserResponse>(_data, 'GetUserResponse') |
133 | 129 | }) |
134 | 130 | }, (error) => { |
135 | 131 | throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error instanceof Error ? error.message : String(error)}` }) |
136 | 132 | }) |
137 | 133 | } |
138 | | - |
| 134 | + |
139 | 135 | getArticle = (req: GetArticleRequest, headers?: object, signal?: AbortSignal): Promise<GetArticleResponse> => { |
140 | 136 | return this.fetch( |
141 | 137 | this.url('GetArticle'), |
142 | | - createHttpRequest(req, headers, signal)).then((res) => {return buildResponse(res) |
| 138 | + createHttpRequest(JsonEncode(req, 'GetArticleRequest'), headers, signal)).then((res) => { |
| 139 | + return buildResponse(res).then(_data => { |
| 140 | + return JsonDecode<GetArticleResponse>(_data, 'GetArticleResponse') |
| 141 | + }) |
143 | 142 | }, (error) => { |
144 | 143 | throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error instanceof Error ? error.message : String(error)}` }) |
145 | 144 | }) |
146 | 145 | } |
147 | | - |
148 | | -} |
149 | 146 |
|
150 | | -const createHttpRequest = (body: object = {}, headers: object = {}, signal: AbortSignal | null = null): object => { |
151 | | - const reqHeaders: {[key: string]: string} = { ...headers, 'Content-Type': 'application/json' } |
| 147 | +} |
152 | 148 |
|
153 | | - return { |
154 | | - method: 'POST', |
155 | | - headers: reqHeaders, |
156 | | - body: JSON.stringify(body || {}), |
157 | | - signal |
158 | | - } |
| 149 | +const createHttpRequest = (body: string = '{}', headers: object = {}, signal: AbortSignal | null = null): object => { |
| 150 | + const reqHeaders: { [key: string]: string } = { ...headers, 'Content-Type': 'application/json' } |
| 151 | + return { method: 'POST', headers: reqHeaders, body, signal } |
159 | 152 | } |
160 | 153 |
|
161 | 154 | const buildResponse = (res: Response): Promise<any> => { |
@@ -183,6 +176,22 @@ export type Fetch = (input: RequestInfo, init?: RequestInit) => Promise<Response |
183 | 176 |
|
184 | 177 |
|
185 | 178 |
|
| 179 | + |
| 180 | +export const JsonEncode = <T = any>(obj: T, _typ: string = ''): string => { |
| 181 | + return JSON.stringify(obj) |
| 182 | +} |
| 183 | + |
| 184 | +export const JsonDecode = <T = any>(data: string | any, _typ: string = ''): T => { |
| 185 | + let parsed: any = data |
| 186 | + if (typeof data === 'string') { |
| 187 | + try { parsed = JSON.parse(data) } catch (err) { |
| 188 | + throw WebrpcBadResponseError.new({ cause: `JsonDecode: JSON.parse failed: ${(err as Error).message}` }) |
| 189 | + } |
| 190 | + } |
| 191 | + return parsed as T |
| 192 | +} |
| 193 | + |
| 194 | + |
186 | 195 | // |
187 | 196 | // Errors |
188 | 197 | // |
@@ -487,7 +496,7 @@ export const webrpcErrorByCode: { [code: number]: any } = { |
487 | 496 |
|
488 | 497 | export const WebrpcHeader = "Webrpc" |
489 | 498 |
|
490 | | -export const WebrpcHeaderValue = "[email protected];gen-typescript@unknown;[email protected]" |
| 499 | +export const WebrpcHeaderValue = "[email protected]-1-g8943a04;gen-typescript@unknown;[email protected]" |
491 | 500 |
|
492 | 501 | type WebrpcGenVersions = { |
493 | 502 | WebrpcGenVersion: string; |
|
0 commit comments