// // 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 ( "encoding/json" "net/http" "strconv" "gitlab.servus.at/autoradio/tank/importer" "gitlab.servus.at/autoradio/tank/store" ) func idFromString(s string) (uint64, error) { return strconv.ParseUint(s, 10, 64) } func sendError(w http.ResponseWriter, err error) { code := http.StatusInternalServerError response := ErrorResponse{Error: err.Error()} switch err.(type) { case *store.ErrFileInUse: code = http.StatusConflict response.Details = err default: switch err { case store.ErrNotImplemented: code = http.StatusNotImplemented case store.ErrNotFound: code = http.StatusNotFound case importer.ErrNotImplemented: code = http.StatusNotImplemented case importer.ErrNotFound: code = http.StatusNotFound case importer.ErrSourceNotSupported: code = http.StatusBadRequest case importer.ErrFileNotNew: code = http.StatusConflict case importer.ErrTooManyJobs: code = http.StatusTooManyRequests } } sendWebResponse(w, code, response) } func sendWebResponse(w http.ResponseWriter, status int, respdata interface{}) { w.Header().Set("Content-Type", "application/json") w.WriteHeader(status) json.NewEncoder(w).Encode(respdata) // TODO: Error Handling? }