Files
excelConverter/cmd/server/main.go
Andreas Schröpfer 8bb2be248d server port added
2021-03-03 14:51:12 +01:00

63 lines
1.2 KiB
Go

package main
import (
"bytes"
_ "embed"
"flag"
"fmt"
"io"
"log"
"net/http"
"time"
"git.ecogood.org/andreas.schroepfer/excelConverter/pkg/loader"
)
//go:embed files/upload.htm
var homepage []byte
var (
flagPort = flag.String("p", ":2727", "port for the http-server")
)
func main() {
run()
}
func run() {
mux := http.NewServeMux()
mux.HandleFunc("/convert/", handleConvert)
mux.HandleFunc("/", handleRoot)
s := &http.Server{
Addr: *flagPort,
Handler: mux,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
MaxHeaderBytes: 1 << 20,
}
fmt.Println("starting server at:")
fmt.Printf("http://localhost:%s/", *flagPort)
log.Fatal(s.ListenAndServe())
}
func handleRoot(w http.ResponseWriter, r *http.Request) {
buf := bytes.NewBuffer(homepage)
io.Copy(w, buf)
}
func handleConvert(w http.ResponseWriter, r *http.Request) {
r.ParseMultipartForm(10 << 20)
file, _, err := r.FormFile("myFile")
if err != nil {
fmt.Println("Error Retrieving the File")
fmt.Println(err)
return
}
defer file.Close()
eBalance, err := loader.XLSX(file, nil)
if err != nil {
fmt.Fprintf(w, "convert errors<br>: %s", err)
}
eBalance.EncodeJSON(w)
}