package routes import ( "fmt" "path" "git.matterlinux.xyz/matter/tracker/lib" "github.com/gofiber/fiber/v2" ) func GET_package(c *fiber.Ctx) error { var ( name string version string pool string list *[]lib.Package ) is_json := c.Query("json") == "1" is_download := c.Query("download") == "1" list = c.Locals("list").(*[]lib.Package) version = c.Params("version") name = c.Params("name") pool = c.Query("p") for _, pkg := range *list { if pkg.Name != name || (version != "ANY" && pkg.Version != version) || (pool != "" && pkg.Pool.ID() != pool) { continue } if is_download { c.Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s", path.Base(pkg.Archive))) return c.SendFile(pkg.Archive) } if is_json { return c.JSON(pkg) } return c.Render("package", &pkg) } return lib.RenderError(c, 404) }