64 lines
1.2 KiB
Go
64 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() {
|
|
flag.Parse()
|
|
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)
|
|
}
|