package shortify import ( "encoding/binary" "net" "os" "github.com/gofiber/fiber/v2" ) func (s *Server) Admin() *fiber.App { a := fiber.New() a.Get("/register", func(c *fiber.Ctx) error { prefix, err := s.prefixManager.AllocateNewPrefix() if err != nil { return err } var response []byte binary.LittleEndian.PutUint16(response, prefix) return c.Send(response) }) a.Post("/shorten", func(c *fiber.Ctx) error { shortUrl := c.Query("s") longUrl := string(c.Body()) return s.storage.Put(shortUrl, longUrl) }) return a } // util func GetUnixListener(path string) (net.Listener, error) { // Remove old socket if exists socketPath := path _ = os.Remove(socketPath) // Create a Unix socket listener ln, err := net.Listen("unix", socketPath) if err != nil { return nil, err } // Optionally set permissions so other processes can connect _ = os.Chmod(socketPath, 0666) return ln, nil }