github.com/vcilabs/webrpc@v0.5.2-0.20201116131534-162e27b1b33b/_examples/hello-webrpc-with-goschema-ts/webapp/src/client.gen.ts (about)

     1  /* tslint:disable */
     2  //   
     3  // --
     4  // This file has been generated by https://github.com/webrpc/webrpc using gen/typescript
     5  // Do not edit by hand. Update your webrpc schema and re-generate.
     6  
     7  
     8  //
     9  // Types
    10  //
    11  
    12  
    13  export enum Kind {
    14  }
    15  
    16  
    17  
    18  export interface Empty {
    19  }
    20  
    21  
    22  
    23  export interface Page {
    24    num: number
    25  }
    26  
    27  
    28  
    29  export interface User {
    30    id: number
    31    username: string
    32    role: *Kind
    33    meta: {[key: string]: interface{}}
    34    internalID: number
    35  }
    36  
    37  export interface ExampleService {
    38    findUsers(args: FindUsersArgs, headers?: object): Promise<FindUsersReturn>
    39    getUser(args: GetUserArgs, headers?: object): Promise<GetUserReturn>
    40    ping(headers?: object): Promise<PingReturn>
    41  }
    42  
    43  export interface FindUsersArgs {
    44    q: string
    45  }
    46  
    47  export interface FindUsersReturn {
    48    page: *Page
    49    user: Array<*User>  
    50  }
    51  export interface GetUserArgs {
    52    userID: number
    53  }
    54  
    55  export interface GetUserReturn {
    56    user: *User  
    57  }
    58  export interface PingArgs {
    59  }
    60  
    61  export interface PingReturn {
    62    bool: boolean  
    63  }
    64  
    65  
    66    
    67  //
    68  // Client
    69  //
    70  export class ExampleService implements ExampleService {
    71    private hostname: string
    72    private fetch: Fetch
    73    private path = '/rpc/ExampleService/'
    74  
    75    constructor(hostname: string, fetch: Fetch) {
    76      this.hostname = hostname
    77      this.fetch = fetch
    78    }
    79  
    80    private url(name: string): string {
    81      return this.hostname + this.path + name
    82    }
    83    
    84    findUsers = (args: FindUsersArgs, headers?: object): Promise<FindUsersReturn> => {
    85      return this.fetch(
    86        this.url('FindUsers'),
    87        createHTTPRequest(args, headers)).then((res) => {
    88        return buildResponse(res).then(_data => {
    89          return {
    90            page: <*Page>(_data.page), 
    91            user: <Array<*User>>(_data.user)
    92          }
    93        })
    94      })
    95    }
    96    
    97    getUser = (args: GetUserArgs, headers?: object): Promise<GetUserReturn> => {
    98      return this.fetch(
    99        this.url('GetUser'),
   100        createHTTPRequest(args, headers)).then((res) => {
   101        return buildResponse(res).then(_data => {
   102          return {
   103            user: <*User>(_data.user)
   104          }
   105        })
   106      })
   107    }
   108    
   109    ping = (headers?: object): Promise<PingReturn> => {
   110      return this.fetch(
   111        this.url('Ping'),
   112        createHTTPRequest({}, headers)
   113        ).then((res) => {
   114        return buildResponse(res).then(_data => {
   115          return {
   116            bool: <boolean>(_data.bool)
   117          }
   118        })
   119      })
   120    }
   121    
   122  }
   123  
   124    
   125  export interface WebRPCError extends Error {
   126    code: string
   127    msg: string
   128  	status: number
   129  }
   130  
   131  const createHTTPRequest = (body: object = {}, headers: object = {}): object => {
   132    return {
   133      method: 'POST',
   134      headers: { ...headers, 'Content-Type': 'application/json' },
   135      body: JSON.stringify(body || {})
   136    }
   137  }
   138  
   139  const buildResponse = (res: Response): Promise<any> => {
   140    return res.text().then(text => {
   141      let data
   142      try {
   143        data = JSON.parse(text)
   144      } catch(err) {
   145        throw { code: 'unknown', msg: `expecting JSON, got: ${text}`, status: res.status } as WebRPCError
   146      }
   147      if (!res.ok) {
   148        throw data // webrpc error response
   149      }
   150      return data
   151    })
   152  }
   153  
   154  export type Fetch = (input: RequestInfo, init?: RequestInit) => Promise<Response>