1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
package api
import (
"github.com/gin-gonic/gin"
"github.com/pektezol/leastportalshub/backend/handlers"
swaggerfiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
)
const (
apiPath string = "/api"
v1Path string = "/v1"
swaggerPath string = "/swagger/*any"
indexPath string = "/"
tokenPath string = "/token"
loginPath string = "/login"
profilePath string = "/profile"
usersPath string = "/users/:userid"
demosPath string = "/demos"
mapSummaryPath string = "/maps/:mapid/summary"
mapImagePath string = "/maps/:mapid/image"
mapLeaderboardsPath string = "/maps/:mapid/leaderboards"
mapRecordPath string = "/maps/:mapid/record"
mapDiscussionsPath string = "/maps/:mapid/discussions"
mapDiscussionIDPath string = "/maps/:mapid/discussions/:discussionid"
rankingsPath string = "/rankings"
searchPath string = "/search"
gamesPath string = "/games"
chaptersPath string = "/games/:gameid"
chapterMapsPath string = "/chapters/:chapterid"
scoreLogsPath string = "/logs/score"
modLogsPath string = "/logs/mod"
)
func InitRoutes(router *gin.Engine) {
api := router.Group(apiPath)
{
v1 := api.Group(v1Path)
// Swagger
v1.GET(swaggerPath, ginSwagger.WrapHandler(swaggerfiles.Handler))
v1.GET(indexPath, func(c *gin.Context) {
c.File("docs/index.html")
})
// Tokens, login
v1.GET(tokenPath, handlers.GetCookie)
v1.DELETE(tokenPath, handlers.DeleteCookie)
v1.GET(loginPath, handlers.Login)
// Users, profiles
v1.GET(profilePath, CheckAuth, handlers.Profile)
v1.PUT(profilePath, CheckAuth, handlers.UpdateCountryCode)
v1.POST(profilePath, CheckAuth, handlers.UpdateUser)
v1.GET(usersPath, CheckAuth, handlers.FetchUser)
// Maps
v1.GET(mapSummaryPath, handlers.FetchMapSummary)
v1.POST(mapSummaryPath, CheckAuth, handlers.CreateMapSummary)
v1.PUT(mapSummaryPath, CheckAuth, handlers.EditMapSummary)
v1.DELETE(mapSummaryPath, CheckAuth, handlers.DeleteMapSummary)
v1.PUT(mapImagePath, CheckAuth, handlers.EditMapImage)
v1.GET(mapLeaderboardsPath, handlers.FetchMapLeaderboards)
v1.POST(mapRecordPath, CheckAuth, handlers.CreateRecordWithDemo)
v1.GET(demosPath, handlers.DownloadDemoWithID)
v1.GET(mapDiscussionsPath, handlers.FetchMapDiscussions)
v1.GET(mapDiscussionIDPath, handlers.FetchMapDiscussion)
v1.POST(mapDiscussionsPath, CheckAuth, handlers.CreateMapDiscussion)
v1.PUT(mapDiscussionIDPath, CheckAuth, handlers.EditMapDiscussion)
v1.DELETE(mapDiscussionIDPath, CheckAuth, handlers.DeleteMapDiscussion)
// Rankings, search
v1.GET(rankingsPath, handlers.Rankings)
v1.GET(searchPath, handlers.SearchWithQuery)
// Games, chapters, maps
v1.GET(gamesPath, handlers.FetchGames)
v1.GET(chaptersPath, handlers.FetchChapters)
v1.GET(chapterMapsPath, handlers.FetchChapterMaps)
// Logs
v1.GET(scoreLogsPath, handlers.ScoreLogs)
v1.GET(modLogsPath, CheckAuth, handlers.ModLogs)
}
}
|