diff options
Diffstat (limited to 'src/helsinki.at/rhimportd/ctrlWebSimple.go')
-rw-r--r-- | src/helsinki.at/rhimportd/ctrlWebSimple.go | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/src/helsinki.at/rhimportd/ctrlWebSimple.go b/src/helsinki.at/rhimportd/ctrlWebSimple.go deleted file mode 100644 index cd2c556..0000000 --- a/src/helsinki.at/rhimportd/ctrlWebSimple.go +++ /dev/null @@ -1,161 +0,0 @@ -// -// rhimportd -// -// The Radio Helsinki Rivendell Import Daemon -// -// -// Copyright (C) 2015-2016 Christian Pointner <equinox@helsinki.at> -// -// This file is part of rhimportd. -// -// rhimportd 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. -// -// rhimportd 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 rhimportd. If not, see <http://www.gnu.org/licenses/>. -// - -package main - -import ( - "encoding/json" - "fmt" - "helsinki.at/rhimport" - "html" - "net/http" -) - -type webSimpleRequestData struct { - UserName string `json:"LOGIN_NAME"` - Password string `json:"PASSWORD"` - ShowId uint `json:"SHOW_ID"` - ClearShowCarts bool `json:"CLEAR_SHOW_CARTS"` - MusicPoolGroup string `json:"MUSIC_POOL_GROUP"` - Cart uint `json:"CART_NUMBER"` - ClearCart bool `json:"CLEAR_CART"` - Cut uint `json:"CUT_NUMBER"` - Channels uint `json:"CHANNELS"` - NormalizationLevel int `json:"NORMALIZATION_LEVEL"` - AutotrimLevel int `json:"AUTOTRIM_LEVEL"` - UseMetaData bool `json:"USE_METADATA"` - SourceUri string `json:"SOURCE_URI"` -} - -func newWebSimpleRequestData(conf *rhimport.Config) *webSimpleRequestData { - rd := new(webSimpleRequestData) - rd.UserName = "" - rd.Password = "" - rd.ShowId = 0 - rd.ClearShowCarts = false - rd.MusicPoolGroup = "" - rd.Cart = 0 - rd.ClearCart = false - rd.Cut = 0 - rd.Channels = conf.ImportParamDefaults.Channels - rd.NormalizationLevel = conf.ImportParamDefaults.NormalizationLevel - rd.AutotrimLevel = conf.ImportParamDefaults.AutotrimLevel - rd.UseMetaData = conf.ImportParamDefaults.UseMetaData - rd.SourceUri = "" - - return rd -} - -type webSimpleResponseData struct { - ResponseCode int `json:"REPONSE_CODE"` - ErrorString string `json:"ERROR_STRING"` - Cart uint `json:"CART_NUMBER"` - Cut uint `json:"CUT_NUMBER"` -} - -func webSimpleErrorResponse(w http.ResponseWriter, code int, errStr string) { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusInternalServerError) - encoder := json.NewEncoder(w) - respdata := webSimpleResponseData{code, errStr, 0, 0} - encoder.Encode(respdata) -} - -func webSimpleResponse(w http.ResponseWriter, result *rhimport.Result) { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusInternalServerError) - encoder := json.NewEncoder(w) - respdata := webSimpleResponseData{result.ResponseCode, result.ErrorString, result.Cart, result.Cut} - encoder.Encode(respdata) -} - -func webSimpleParseRequest(conf *rhimport.Config, rddb *rhimport.RdDbChan, trusted bool, r *http.Request) (ctx *rhimport.Context, err error) { - - decoder := json.NewDecoder(r.Body) - reqdata := newWebSimpleRequestData(conf) - if jsonerr := decoder.Decode(reqdata); jsonerr != nil { - err = fmt.Errorf("Error parsing JSON response: %s", jsonerr) - return - } - - ctx = rhimport.NewContext(conf, rddb) - if trusted { - ctx.UserName = r.Header.Get("X-Forwarded-User") - } else { - ctx.UserName = reqdata.UserName - ctx.Password = reqdata.Password - } - ctx.Trusted = trusted - ctx.ShowId = reqdata.ShowId - ctx.ClearShowCarts = reqdata.ClearShowCarts - ctx.GroupName = reqdata.MusicPoolGroup - ctx.Cart = reqdata.Cart - ctx.ClearCart = reqdata.ClearCart - ctx.Cut = reqdata.Cut - ctx.Channels = reqdata.Channels - ctx.NormalizationLevel = reqdata.NormalizationLevel - ctx.AutotrimLevel = reqdata.AutotrimLevel - ctx.UseMetaData = reqdata.UseMetaData - ctx.SourceUri = reqdata.SourceUri - return -} - -func webSimpleHandler(conf *rhimport.Config, rddb *rhimport.RdDbChan, sessions *rhimport.SessionStoreChan, trusted bool, w http.ResponseWriter, r *http.Request) { - rhdl.Printf("WebSimpleHandler: request for '%s'", html.EscapeString(r.URL.Path)) - - var ctx *rhimport.Context - var err error - if ctx, err = webSimpleParseRequest(conf, rddb, trusted, r); err != nil { - webSimpleErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - if err = ctx.SanityCheck(); err != nil { - webSimpleErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - var res *rhimport.Result - if res, err = rhimport.FetchFile(ctx); err != nil { - webSimpleErrorResponse(w, http.StatusInternalServerError, err.Error()) - return - } - if res.ResponseCode != http.StatusOK { - webSimpleErrorResponse(w, res.ResponseCode, res.ErrorString) - return - } - - if res, err = rhimport.ImportFile(ctx); err != nil { - webSimpleErrorResponse(w, http.StatusInternalServerError, err.Error()) - return - } - if res.ResponseCode == http.StatusOK { - rhl.Println("ImportFile succesfully imported", ctx.SourceFile) - } else { - rhl.Println("ImportFile import of", ctx.SourceFile, "was unsuccesful") - } - - webSimpleResponse(w, res) - return -} |