// // tank // // Import and Playlist Daemon for autoradio project // // // Copyright (C) 2017-2018 Christian Pointner <equinox@helsinki.at> // // This file is part of tank. // // tank is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // tank is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with tank. If not, see <http://www.gnu.org/licenses/>. // package v1 import ( "net/http" "github.com/gorilla/mux" ) func (api *API) ListImportsOfGroup() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) jobs, err := api.importer.ListJobs(vars["group-id"]) if err != nil { sendError(w, err) return } sendWebResponse(w, http.StatusOK, JobsListing{jobs}) }) } func (api *API) ReadImportOfFile() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) id, err := idFromString(vars["file-id"]) if err != nil { sendWebResponse(w, http.StatusBadRequest, ErrorResponse{Error: "invalid file-id: " + err.Error()}) return } job, err := api.importer.GetJob(vars["group-id"], id) if err != nil { // TODO: return import info from store if err == ErrNotFound sendError(w, err) return } sendWebResponse(w, http.StatusOK, job) }) } func (api *API) UploadFile() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) id, err := idFromString(vars["file-id"]) if err != nil { sendWebResponse(w, http.StatusBadRequest, ErrorResponse{Error: "invalid file-id: " + err.Error()}) return } job, err := api.importer.GetJob(vars["group-id"], id) if err != nil { sendError(w, err) return } if err = job.AttachSource(uint64(r.ContentLength), r.Body); err != nil { sendError(w, err) return } <-job.Done() // TODO: get result from job sendWebResponse(w, http.StatusOK, nil) }) } func (api *API) CancelImportOfFile() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) id, err := idFromString(vars["file-id"]) if err != nil { sendWebResponse(w, http.StatusBadRequest, ErrorResponse{Error: "invalid file-id: " + err.Error()}) return } job, err := api.importer.GetJob(vars["group-id"], id) if err != nil { sendError(w, err) return } job.Cancel() sendWebResponse(w, http.StatusNoContent, nil) }) }