Первый прототип с основными возможностями
This commit is contained in:
84
main.go
Normal file
84
main.go
Normal file
@@ -0,0 +1,84 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"code.gurenya.net/carlsmei/muninn-aio/config"
|
||||
"code.gurenya.net/carlsmei/muninn-aio/db"
|
||||
"code.gurenya.net/carlsmei/muninn-aio/ent"
|
||||
"code.gurenya.net/carlsmei/muninn-aio/services"
|
||||
"github.com/asaskevich/govalidator"
|
||||
"github.com/go-telegram/bot"
|
||||
"github.com/go-telegram/bot/models"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
_ "github.com/lib/pq"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
)
|
||||
|
||||
var (
|
||||
Version = "dev"
|
||||
)
|
||||
|
||||
func main() {
|
||||
config.Load()
|
||||
db.EntInit()
|
||||
|
||||
// TELEGRAM
|
||||
opts := []bot.Option{
|
||||
// bot.WithDefaultHandler(handler),
|
||||
}
|
||||
|
||||
b, err := bot.New(config.Env.TelegramToken, opts...)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
b.RegisterHandler(bot.HandlerTypeMessageText, "/start", bot.MatchTypeExact, startHandler)
|
||||
b.RegisterHandlerMatchFunc(func(update *models.Update) bool {
|
||||
return update.Message != nil && govalidator.IsURL(update.Message.Text)
|
||||
}, generateLinkHandler)
|
||||
|
||||
go b.Start(context.Background())
|
||||
|
||||
// FIBER
|
||||
app := fiber.New()
|
||||
|
||||
app.Use(func(c *fiber.Ctx) error {
|
||||
c.Set("Server", fmt.Sprintf("muninn-aio (%s)", Version))
|
||||
|
||||
return c.Next()
|
||||
})
|
||||
|
||||
app.Get("/:key", func(c *fiber.Ctx) error {
|
||||
key := c.Params("key")
|
||||
|
||||
link, err := services.GetLinkByKey(c.Context(), key)
|
||||
if err != nil {
|
||||
if ent.IsNotFound(err) {
|
||||
return c.Status(404).SendString("not found")
|
||||
}
|
||||
}
|
||||
|
||||
c.SendString(fmt.Sprintf("Found. Redirecting to %s", link.OriginalURL))
|
||||
return c.Redirect(link.OriginalURL, 302)
|
||||
})
|
||||
|
||||
var addr string
|
||||
if strings.Contains(config.Env.AppPort, ":") {
|
||||
addr = config.Env.AppPort
|
||||
} else {
|
||||
addr = ":" + config.Env.AppPort
|
||||
}
|
||||
|
||||
app.Listen(addr)
|
||||
|
||||
// quit := make(chan os.Signal, 1)
|
||||
// signal.Notify(quit, os.Interrupt, syscall.SIGTERM)
|
||||
// sig := <-quit
|
||||
|
||||
// fmt.Printf("Shutting down server... Reason: %s\n", sig)
|
||||
}
|
||||
Reference in New Issue
Block a user