github.com/fern4lvarez/piladb@v0.2.0-alpha.20180407/pilad/router.go (about) 1 package main 2 3 import ( 4 "net/http" 5 6 "github.com/gorilla/mux" 7 ) 8 9 // Router returns a gorila/mux Router with all specified endpoints and 10 // handlers. 11 func Router(conn *Conn) *mux.Router { 12 r := mux.NewRouter() 13 14 // GET / 15 r.HandleFunc("/", conn.rootHandler). 16 Methods("GET") 17 18 // GET /_ping 19 // HEAD /_ping 20 r.HandleFunc("/_ping", conn.pingHandler). 21 Methods("GET", "HEAD") 22 23 // GET /_status 24 r.HandleFunc("/_status", conn.statusHandler). 25 Methods("GET") 26 27 // GET /_config 28 r.HandleFunc("/_config", conn.configHandler). 29 Methods("GET") 30 // GET /_config/$CONFIG_KEY 31 // POST /_config/$CONFIG_KEY + {element: value} 32 r.Handle("/_config/{key}", conn.configKeyHandler("")). 33 Methods("GET", "POST") 34 35 // GET /databases 36 // PUT /databases?name=DATABASE_NAME 37 r.HandleFunc("/databases", conn.databasesHandler). 38 Methods("GET", "PUT") 39 // GET /databases/$DATABASE_ID 40 // DELETE /databases/$DATABASE_ID 41 r.Handle("/databases/{id}", conn.databaseHandler("")). 42 Methods("GET", "DELETE") 43 44 // GET /databases/$DATABASE_ID/stacks 45 // GET /databases/$DATABASE_ID/stacks?kv 46 // PUT /databases/$DATABASE_ID/stacks?name=STACK_NAME 47 r.Handle("/databases/{database_id}/stacks", conn.stacksHandler("")). 48 Methods("GET", "PUT") 49 50 // GET /databases/$DATABASE_ID/stacks/$STACK_ID 51 // GET /databases/$DATABASE_ID/stacks/$STACK_ID?peek 52 // GET /databases/$DATABASE_ID/stacks/$STACK_ID?size 53 // GET /databases/$DATABASE_ID/stacks/$STACK_ID?empty 54 // GET /databases/$DATABASE_ID/stacks/$STACK_ID?full 55 // POST /databases/$DATABASE_ID/stacks/$STACK_ID + {element: value} 56 // POST /databases/$DATABASE_ID/stacks/$STACK_ID?base + {element: value} 57 // POST /databases/$DATABASE_ID/stacks/$STACK_ID?rotate 58 // PUT /databases/$DATABASE_ID/stacks/$STACK_ID?block 59 // PUT /databases/$DATABASE_ID/stacks/$STACK_ID?unblock 60 // DELETE /databases/$DATABASE_ID/stacks/$STACK_ID 61 // DELETE /databases/$DATABASE_ID/stacks/$STACK_ID?flush 62 // DELETE /databases/$DATABASE_ID/stacks/$STACK_ID?full 63 r.Handle("/databases/{database_id}/stacks/{stack_id}", conn.stackHandler(nil)). 64 Methods("GET", "POST", "PUT", "DELETE") 65 66 r.NotFoundHandler = http.HandlerFunc(conn.notFoundHandler) 67 return r 68 }