Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2017
761
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import * as http from "http"
  2. import * as rpc from "../src/index"
  3.  
  4. //---------------------------------------
  5. // generic request / response types.
  6. //---------------------------------------
  7. const ErrorType    = () => rpc.Object({
  8.     message: rpc.String()
  9. })
  10. const RequestType  = (T: rpc.AnyType) => T
  11. const ResponseType = (T: rpc.AnyType) => rpc.Object({
  12.     success: rpc.Boolean(),
  13.     errors : rpc.Array(ErrorType()),
  14.     value  : rpc.Option([rpc.Undefined(), T])
  15. })
  16.  
  17. //---------------------------------------
  18. // service implementation
  19. //---------------------------------------
  20. const service = new rpc.Service("/api/")
  21.  
  22. service.method({
  23.     name   : "users/create",
  24.     comment: "creates a new user",
  25.     input  : RequestType(rpc.Object({
  26.         username: rpc.String(),
  27.         password: rpc.String()
  28.     })),
  29.     output : ResponseType(rpc.Object({
  30.         id: rpc.String()
  31.     }))
  32. }, async input => {
  33.     return {
  34.         id: "1234-5678-9101-1213"
  35.     }
  36. })
  37. service.method({
  38.     name   : "users/index",
  39.     comment: "lists other users.",
  40.     input  : RequestType(rpc.Object({
  41.         skip: rpc.Number(),
  42.         take: rpc.Number()
  43.     })),
  44.     output : ResponseType(rpc.Array(rpc.Object({
  45.         username: rpc.String(),
  46.         email   : rpc.String()
  47.     })))
  48. }, async input => {
  49.     return [
  50.         { username: "dave", email: "dave@domain.com" },
  51.         { username: "dave", email: "dave@domain.com" },
  52.         { username: "dave", email: "dave@domain.com" },
  53.         { username: "dave", email: "dave@domain.com" }
  54.     ]
  55. })
  56.  
  57. //----------------------------------------------------
  58. // host
  59. //----------------------------------------------------
  60. http.createServer((request, response) =>
  61.     service.handle(request, response))
  62.     .listen(process.env.PORT || 5000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement