mirror of
https://github.com/aykhans/slash-e.git
synced 2025-04-20 05:51:25 +00:00
32 lines
760 B
Go
32 lines
760 B
Go
package v1
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
"go.deanishe.net/favicon"
|
|
)
|
|
|
|
func (*APIV1Service) registerURLUtilRoutes(g *echo.Group) {
|
|
// GET /url/favicon?url=...
|
|
g.GET("/url/favicon", func(c echo.Context) error {
|
|
url := c.QueryParam("url")
|
|
icons, err := favicon.Find(url)
|
|
if err != nil {
|
|
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("failed to find favicon, err: %s", err))
|
|
}
|
|
|
|
availableIcons := []*favicon.Icon{}
|
|
for _, icon := range icons {
|
|
if icon.Width == icon.Height {
|
|
availableIcons = append(availableIcons, icon)
|
|
}
|
|
}
|
|
if len(availableIcons) == 0 {
|
|
return echo.NewHTTPError(http.StatusNotFound, "no favicon found")
|
|
}
|
|
return c.JSON(http.StatusOK, availableIcons[0].URL)
|
|
})
|
|
}
|