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  }