// // rhimportd // // The Radio Helsinki Rivendell Import Daemon // // // Copyright (C) 2015 Christian Pointner // // 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 . // package main import ( "fmt" "helsinki.at/rhimport" "html" "net/http" _ "net/http/pprof" ) type webHandler struct { *rhimport.Config H func(*rhimport.Config, http.ResponseWriter, *http.Request) (int, error) } func (self webHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { status, err := self.H(self.Config, w, r) if err != nil { switch status { case http.StatusNotFound: http.NotFound(w, r) default: http.Error(w, fmt.Sprintf("%s: %s", http.StatusText(status), err), status) } } } func IndexHandler(conf *rhimport.Config, w http.ResponseWriter, r *http.Request) (status int, err error) { ctx := rhimport.NewImportContext(conf, "hugo", "test", 17324) ctx.SourceFile = html.EscapeString(r.URL.Path) ctx.DeleteSourceFile = true if err = rhimport.ImportFile(ctx); err != nil { status = http.StatusInternalServerError } else { status = http.StatusOK } return } func StartControlWeb(addr_s string, conf *rhimport.Config) { http.Handle("/", webHandler{conf, IndexHandler}) rhl.Println("listening on", addr_s) http.ListenAndServe(addr_s, nil) }