diff --git a/handlers/bootstrap.go b/handlers/bootstrap.go index 772cd81..3b8bada 100644 --- a/handlers/bootstrap.go +++ b/handlers/bootstrap.go @@ -54,6 +54,7 @@ func Register(extend HandlerExtender) { r.HandleFunc("/ping", Ping).Methods("GET") corsRouter.HandleFunc("/instances/images", GetInstanceImages).Methods("GET") corsRouter.HandleFunc("/sessions/{sessionId}", GetSession).Methods("GET") + corsRouter.HandleFunc("/sessions/{sessionId}", CloseSession).Methods("DELETE") corsRouter.HandleFunc("/sessions/{sessionId}/setup", SessionSetup).Methods("POST") corsRouter.HandleFunc("/sessions/{sessionId}/instances", NewInstance).Methods("POST") corsRouter.HandleFunc("/sessions/{sessionId}/instances/{instanceName}/uploads", FileUpload).Methods("POST") diff --git a/handlers/close_session.go b/handlers/close_session.go new file mode 100644 index 0000000..f8009cc --- /dev/null +++ b/handlers/close_session.go @@ -0,0 +1,26 @@ +package handlers + +import ( + "log" + "net/http" + + "github.com/gorilla/mux" +) + +func CloseSession(rw http.ResponseWriter, req *http.Request) { + vars := mux.Vars(req) + sessionId := vars["sessionId"] + + session := core.SessionGet(sessionId) + if session == nil { + rw.WriteHeader(http.StatusNotFound) + return + } + + if err := core.SessionClose(session); err != nil { + log.Println(err) + rw.WriteHeader(http.StatusInternalServerError) + return + } + +}