ctdo.de/http.go

111 lines
2.9 KiB
Go

package main
import (
"io"
"net/http"
"os"
"strings"
"time"
)
func httpHandleFunc(urlPath string, filepath string, contentType string) {
urlPath = strings.ToLower(urlPath)
logger(readHttpYML() + "/" + urlPath + " <--> " + filepath + " <" + contentType + ">")
http.HandleFunc("/"+urlPath, func(w http.ResponseWriter, r *http.Request) {
logger(r.Method + " request -> " + readHttpYML() + "/" + urlPath + " <" + contentType + ">")
w.Header().Add("Content-Type", contentType)
io.WriteString(w, htmlReplacer(fileRead(filepath), urlPath))
})
}
func httpHandleFuncWithPOST(urlPath string, filepath string, contentType string) {
Event := new(event)
logger(readHttpYML() + "/" + urlPath + " <--> " + filepath + " <" + contentType + ">")
http.HandleFunc("/"+urlPath, func(w http.ResponseWriter, r *http.Request) {
if r.Method == "POST" {
logger(r.Method + " request -> " + readHttpYML() + "/" + urlPath + " <" + contentType + ">")
r.ParseMultipartForm(10 << 20)
err := r.ParseMultipartForm(200000)
errorPanic(err)
formdata := r.MultipartForm
files := formdata.File["media"]
if filepath == "./web/pages/admin/dashboard.html" {
logger("----------------ADD EVENT----------------")
title := formdata.Value["title"]
description := formdata.Value["description"]
media := formdata.File["media"]
mediaString := ""
date := formdata.Value["date"]
if title[0] != "" && description[0] != "" && media != nil && date[0] != "" {
logger("title: " + title[0])
logger("descrtiption: " + description[0])
logger("media: " + string(len(media)))
logger("files uploaded successfully: ")
for i, _ := range files {
if len(media) > 0 {
mediaString += ","
}
mediaString += "./web/images/" + files[i].Filename
logger("./web/images/" + files[i].Filename)
}
Event.id = -1
Event.title = title[0]
Event.description = description[0]
Event.media = mediaString
Event.date = date[0]
logger("date: " + date[0])
if addEvent(*Event) {
for i, _ := range files {
file, err := files[i].Open()
errorPanic(err)
out, err := os.Create("./web/images/" + files[i].Filename)
errorPanic(err, "unable to create the file -> '"+"./web/images/"+files[i].Filename+"' : check your write access privilege")
_, err = io.Copy(out, file)
errorPanic(err)
}
logger("event added!")
handleImages()
} else {
logger("event not added!")
}
} else {
logger("no formdata")
}
logger("----------------ADD END----------------")
}
}
w.Header().Add("Content-Type", contentType)
io.WriteString(w, htmlReplacer(fileRead(filepath), urlPath))
})
}
func httpGetBody(url string) []byte {
c := &http.Client{Timeout: 10 * time.Second}
r, err := c.Get(url)
errorPanic(err)
defer r.Body.Close()
var body []byte
body, err = io.ReadAll(r.Body)
errorPanic(err)
return body
}