Skip to content

Commit e726005

Browse files
authored
feat: handle HEAD on mod download endpoints (#83)
1 parent 7cb4de8 commit e726005

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

nodes/mod.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,8 @@ func downloadModVersion(c echo.Context) error {
389389
return c.String(404, "version not found, modID:"+modID+" versionID:"+versionID)
390390
}
391391

392-
if redis.CanIncrement(c.RealIP(), "download", "version:"+versionID, time.Hour*4) {
392+
if c.Request().Method == echo.GET &&
393+
redis.CanIncrement(c.RealIP(), "download", "version:"+versionID, time.Hour*4) {
393394
_ = version.Update().AddDownloads(1).Exec(c.Request().Context())
394395
}
395396

@@ -444,7 +445,8 @@ func downloadModVersionTarget(c echo.Context) error {
444445
return c.String(404, "target not found, modID:"+modID+" versionID:"+versionID+" target:"+target)
445446
}
446447

447-
if redis.CanIncrement(c.RealIP(), "download", "version:"+versionID, time.Hour*4) {
448+
if c.Request().Method == echo.GET &&
449+
redis.CanIncrement(c.RealIP(), "download", "version:"+versionID, time.Hour*4) {
448450
_ = version.Update().AddDownloads(1).Exec(c.Request().Context())
449451
}
450452

nodes/routes.go

+4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ func RegisterModRoutes(router *echo.Group) {
1717

1818
router.GET("/:modId/versions/:versionId", dataWrapper(getModVersion))
1919
router.GET("/:modId/versions/:versionId/download", downloadModVersion)
20+
router.HEAD("/:modId/versions/:versionId/download", downloadModVersion)
2021
router.GET("/:modId/versions/:versionId/:target/download", downloadModVersionTarget)
22+
router.HEAD("/:modId/versions/:versionId/:target/download", downloadModVersionTarget)
2123
}
2224

2325
func RegisterModsRoutes(router *echo.Group) {
@@ -50,5 +52,7 @@ func RegisterUsersRoutes(router *echo.Group) {
5052
func RegisterVersionRoutes(router *echo.Group) {
5153
router.GET("/:versionId", dataWrapper(getVersion))
5254
router.GET("/:versionId/download", downloadVersion)
55+
router.HEAD("/:versionId/download", downloadVersion)
5356
router.GET("/:versionId/:target/download", downloadModTarget)
57+
router.HEAD("/:versionId/:target/download", downloadModTarget)
5458
}

nodes/version.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ func downloadVersion(c echo.Context) error {
5959
return c.String(404, "version not found")
6060
}
6161

62-
if redis.CanIncrement(c.RealIP(), "download", "version:"+versionID, time.Hour*4) {
62+
if c.Request().Method == echo.GET &&
63+
redis.CanIncrement(c.RealIP(), "download", "version:"+versionID, time.Hour*4) {
6364
_ = version.Update().AddDownloads(1).Exec(c.Request().Context())
6465
}
6566

@@ -100,7 +101,8 @@ func downloadModTarget(c echo.Context) error {
100101
return c.String(404, "target not found, versionID:"+versionID+" target:"+target)
101102
}
102103

103-
if redis.CanIncrement(c.RealIP(), "download", "version:"+versionID, time.Hour*4) {
104+
if c.Request().Method == echo.GET &&
105+
redis.CanIncrement(c.RealIP(), "download", "version:"+versionID, time.Hour*4) {
104106
_ = version.Update().AddDownloads(1).Exec(c.Request().Context())
105107
}
106108

0 commit comments

Comments
 (0)