Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import * as http from "http"
- import * as rpc from "../src/index"
- //---------------------------------------
- // generic request / response types.
- //---------------------------------------
- const ErrorType = () => rpc.Object({
- message: rpc.String()
- })
- const RequestType = (T: rpc.AnyType) => T
- const ResponseType = (T: rpc.AnyType) => rpc.Object({
- success: rpc.Boolean(),
- errors : rpc.Array(ErrorType()),
- value : rpc.Option([rpc.Undefined(), T])
- })
- //---------------------------------------
- // service implementation
- //---------------------------------------
- const service = new rpc.Service("/api/")
- service.method({
- name : "users/create",
- comment: "creates a new user",
- input : RequestType(rpc.Object({
- username: rpc.String(),
- password: rpc.String()
- })),
- output : ResponseType(rpc.Object({
- id: rpc.String()
- }))
- }, async input => {
- return {
- id: "1234-5678-9101-1213"
- }
- })
- service.method({
- name : "users/index",
- comment: "lists other users.",
- input : RequestType(rpc.Object({
- skip: rpc.Number(),
- take: rpc.Number()
- })),
- output : ResponseType(rpc.Array(rpc.Object({
- username: rpc.String(),
- email : rpc.String()
- })))
- }, async input => {
- return [
- { username: "dave", email: "dave@domain.com" },
- { username: "dave", email: "dave@domain.com" },
- { username: "dave", email: "dave@domain.com" },
- { username: "dave", email: "dave@domain.com" }
- ]
- })
- //----------------------------------------------------
- // host
- //----------------------------------------------------
- http.createServer((request, response) =>
- service.handle(request, response))
- .listen(process.env.PORT || 5000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement