bin/main.go

87 lines
1.8 KiB
Go
Raw Normal View History

2023-09-10 23:40:19 +02:00
package main
import (
"io"
"mime/multipart"
"github.com/glebarez/sqlite"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"github.com/sirupsen/logrus"
prefixed "github.com/x-cray/logrus-prefixed-formatter"
"gorm.io/gorm"
)
type MenuItem struct {
label string
href string
}
var db *gorm.DB
func main() {
logrus.SetLevel(logrus.DebugLevel)
logrus.SetFormatter(&prefixed.TextFormatter{
FullTimestamp: true,
})
logrus.Infoln("Application started.")
db_string := "bin.db"
var err error
db, err = gorm.Open(sqlite.Open(db_string), &gorm.Config{})
if err != nil {
logrus.WithError(err).Fatalln("Could not open database connection.")
}
logrus.WithFields(logrus.Fields{
"db connection": db_string,
}).Infoln("Connected to database.")
databaseMigrations(db)
e := echo.New()
e.Debug = false
e.Use(middleware.RequestLoggerWithConfig(middleware.RequestLoggerConfig{
LogURI: true,
LogStatus: true,
LogRemoteIP: true,
LogValuesFunc: func(c echo.Context, values middleware.RequestLoggerValues) error {
logrus.WithFields(logrus.Fields{
"URI": values.URI,
"status": values.Status,
"remote": values.RemoteIP,
}).Info("request")
return nil
},
}))
e.Static("/static", "static")
e.GET("/", indexHandler)
e.GET("/new", getNewHandler)
e.POST("/new", postNewHandler)
e.GET("/b/:id", getBinHandler)
e.POST("/b/:id/delete", deleteBinHandler)
partial := e.Group("/partial")
new := partial.Group("/new")
new.GET("/upload", getPartialUploadHandler)
new.GET("/text", getPartialTextHandler)
e.Logger.Fatal(e.Start(":8080"))
}
func getTextFromFile(fileHeader *multipart.FileHeader) (text string, err error) {
f, err := fileHeader.Open()
if err != nil {
return
}
b, err := io.ReadAll(f)
if err != nil {
return
}
text = string(b)
return
}