goshorly/routes/posthome.go
Phil 802b93bdaf
Some checks failed
ci/woodpecker/push/99-release-bot Pipeline was successful
ci/woodpecker/push/1-build-check unknown status
ci/woodpecker/push/10-build-dev unknown status
ci/woodpecker/push/0-pre Pipeline failed
[CI Workflow] Improvments for next releses and logic (#11)
- [X] Changed latest / dev builds (security)
- [x]  Changed logic behind build and tags (breaking)
- [x]  Make more checks and buildflags (feature)
- [x]  New releases for @renovate-bot (enhancement)

Reviewed-on: #11
2025-04-07 17:41:41 +00:00

134 lines
3.2 KiB
Go

package routes
import (
"log"
"regexp"
"time"
"git.hackmi.ch/Phil/goshorly/db"
"git.hackmi.ch/Phil/goshorly/utils"
"github.com/gofiber/fiber/v2"
gonanoid "github.com/matoous/go-nanoid/v2"
)
type eurl struct {
CLI bool `json:"cli"`
URL string `json:"surl" form:"surl"`
}
func Posthome(c *fiber.Ctx) error {
u := new(eurl)
if err := c.BodyParser(u); err != nil {
if u.CLI {
return c.Status(500).JSON(&fiber.Map{
"success": false,
"msg": "Parsing Error",
})
}
return c.Status(500).Render("views/home", fiber.Map{
"ERR": "Parsing Error",
"CI_COMMIT_SHA": utils.CI_COMMIT_SHA,
"CI_COMMIT_BRANCH": utils.CI_COMMIT_BRANCH,
"CI_COMMIT_TAG": utils.CI_COMMIT_TAG,
"CI_TAGGED": utils.CI_TAGGED,
"CI_BUILD": utils.CI_BUILD,
"TotalLinks": db.GetTotalLinks(),
"TotalViews": db.GetTotalViews(),
})
}
if !regexp.MustCompile(`^(http|https|mailto|ts3server)://`).MatchString(u.URL) {
if u.CLI {
return c.Status(424).JSON(&fiber.Map{
"success": false,
"msg": "Invalid URL",
})
}
return c.Status(424).Render("views/home", fiber.Map{
"ERR": "Invalid URL, please check and try again.",
"CI_COMMIT_SHA": utils.CI_COMMIT_SHA,
"CI_COMMIT_BRANCH": utils.CI_COMMIT_BRANCH,
"CI_COMMIT_TAG": utils.CI_COMMIT_TAG,
"CI_TAGGED": utils.CI_TAGGED,
"CI_BUILD": utils.CI_BUILD,
"TotalLinks": db.GetTotalLinks(),
"TotalViews": db.GetTotalViews(),
})
}
id, err := gonanoid.New(8)
if err != nil {
if u.CLI {
return c.Status(500).JSON(&fiber.Map{
"success": false,
"msg": err.Error(),
})
}
return c.Status(500).Render("views/home", fiber.Map{
"ERR": err.Error(),
"CI_COMMIT_SHA": utils.CI_COMMIT_SHA,
"CI_COMMIT_BRANCH": utils.CI_COMMIT_BRANCH,
"CI_COMMIT_TAG": utils.CI_COMMIT_TAG,
"CI_TAGGED": utils.CI_TAGGED,
"CI_BUILD": utils.CI_BUILD,
"TotalLinks": db.GetTotalLinks(),
"TotalViews": db.GetTotalViews(),
})
}
err = db.Set(id, u.URL, 1296000*time.Second)
if err != nil {
if u.CLI {
return c.Status(500).JSON(&fiber.Map{
"success": false,
"msg": err.Error(),
})
}
return c.Status(500).Render("views/home", fiber.Map{
"ERR": err.Error(),
"CI_COMMIT_SHA": utils.CI_COMMIT_SHA,
"CI_COMMIT_BRANCH": utils.CI_COMMIT_BRANCH,
"CI_COMMIT_TAG": utils.CI_COMMIT_TAG,
"CI_TAGGED": utils.CI_TAGGED,
"CI_BUILD": utils.CI_BUILD,
"TotalLinks": db.GetTotalLinks(),
"TotalViews": db.GetTotalViews(),
})
}
fURL := utils.URL + id
// Increase Total Links into the DB
_, err = db.StatsIncreaseTotalLinks()
if err != nil {
log.Fatalln(err.Error())
}
if u.CLI {
return c.Status(201).JSON(&fiber.Map{
"success": true,
"URL": fURL,
})
}
return c.Status(201).Render("views/home", fiber.Map{
"URL": fURL,
"CI_COMMIT_SHA": utils.CI_COMMIT_SHA,
"CI_COMMIT_BRANCH": utils.CI_COMMIT_BRANCH,
"CI_COMMIT_TAG": utils.CI_COMMIT_TAG,
"CI_TAGGED": utils.CI_TAGGED,
"CI_BUILD": utils.CI_BUILD,
"TotalLinks": db.GetTotalLinks(),
"TotalViews": db.GetTotalViews(),
})
}