package routes import ( "strings" "time" "git.matterlinux.xyz/matter/tracker/lib" "github.com/gofiber/fiber/v2" ) func GET_index(c *fiber.Ctx) error { var ( result []lib.Package list *[]lib.Package config *lib.Config pools_str string pools []string last *time.Time ) result = []lib.Package{} pools = []string{} config = c.Locals("config").(*lib.Config) list = c.Locals("list").(*[]lib.Package) last = c.Locals("last").(*time.Time) is_exact := c.Query("exact") == "1" is_json := c.Query("json") == "1" if pools_str = c.Query("pools"); pools_str != "" { pools = strings.Split(pools_str, ",") } query := c.Query("q") for _, pkg := range *list { found := false if is_exact && query != "" && pkg.Name != query { continue } if !is_exact && query != "" && !strings.Contains(pkg.Name, query) { continue } if len(pools) != 0 { for _, p := range pools { if p == pkg.Pool.ID() { found = true break } } } else { found = true } if !found { continue } result = append(result, pkg) } if is_json { return c.JSON(result) } return c.Render("index", &fiber.Map{ "query": query, "list": result, "last": lib.TimePassed(*last), "pools": config.Pools, }) }