diff --git a/server/apiv1/api.go b/server/apiv1/api.go index 55789ab..3123358 100644 --- a/server/apiv1/api.go +++ b/server/apiv1/api.go @@ -142,6 +142,44 @@ func Search(w http.ResponseWriter, r *http.Request) { _, _ = w.Write(bytes) } +// DeleteSearch will delete all messages matching a search +func DeleteSearch(w http.ResponseWriter, r *http.Request) { + // swagger:route DELETE /api/v1/search messages MessagesSummary + // + // # Delete messages by search + // + // Deletes messages matching a search. + // + // Produces: + // - application/json + // + // Schemes: http, https + // + // Parameters: + // + name: query + // in: query + // description: Search query + // required: true + // type: string + // + // Responses: + // 200: OKResponse + // default: ErrorResponse + search := strings.TrimSpace(r.URL.Query().Get("query")) + if search == "" { + httpError(w, "Error: no search query") + return + } + + if err := storage.DeleteSearch(search); err != nil { + httpError(w, err.Error()) + return + } + + w.Header().Add("Content-Type", "text/plain") + _, _ = w.Write([]byte("ok")) +} + // GetMessage (method: GET) returns the Message as JSON func GetMessage(w http.ResponseWriter, r *http.Request) { // swagger:route GET /api/v1/message/{ID} message Message diff --git a/server/server.go b/server/server.go index 4003d63..2e20833 100644 --- a/server/server.go +++ b/server/server.go @@ -98,6 +98,7 @@ func apiRoutes() *mux.Router { r.HandleFunc(config.Webroot+"api/v1/tags", middleWareFunc(apiv1.GetTags)).Methods("GET") r.HandleFunc(config.Webroot+"api/v1/tags", middleWareFunc(apiv1.SetTags)).Methods("PUT") r.HandleFunc(config.Webroot+"api/v1/search", middleWareFunc(apiv1.Search)).Methods("GET") + r.HandleFunc(config.Webroot+"api/v1/search", middleWareFunc(apiv1.DeleteSearch)).Methods("DELETE") r.HandleFunc(config.Webroot+"api/v1/message/{id}/part/{partID}", middleWareFunc(apiv1.DownloadAttachment)).Methods("GET") r.HandleFunc(config.Webroot+"api/v1/message/{id}/part/{partID}/thumb", middleWareFunc(apiv1.Thumbnail)).Methods("GET") r.HandleFunc(config.Webroot+"api/v1/message/{id}/headers", middleWareFunc(apiv1.GetHeaders)).Methods("GET")