Reorganized routes definitions
This commit is contained in:
15
backend/api/blogs_routes.go
Normal file
15
backend/api/blogs_routes.go
Normal file
@@ -0,0 +1,15 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"fr.latosa-escrima/api/blogs"
|
||||
"fr.latosa-escrima/core"
|
||||
)
|
||||
|
||||
var BlogsRoutes = map[string]core.Handler{
|
||||
"/blogs/new": {
|
||||
Handler: blogs.HandleNew,
|
||||
Middlewares: []core.Middleware{Methods(("POST")), AuthJWT}},
|
||||
"/blogs/{uuid}": {
|
||||
Handler: blogs.HandleBlog,
|
||||
Middlewares: []core.Middleware{Methods("GET")}},
|
||||
}
|
||||
24
backend/api/events_routes.go
Normal file
24
backend/api/events_routes.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"fr.latosa-escrima/api/events"
|
||||
"fr.latosa-escrima/core"
|
||||
)
|
||||
|
||||
var EventsRoutes = map[string]core.Handler{
|
||||
"/events": {
|
||||
Handler: events.HandleEvents,
|
||||
Middlewares: []core.Middleware{Methods("GET")}},
|
||||
"/events/new": {
|
||||
Handler: events.HandleNew,
|
||||
Middlewares: []core.Middleware{Methods("POST"), AuthJWT}},
|
||||
"/events/{event_uuid}": {
|
||||
Handler: events.HandleEvent,
|
||||
Middlewares: []core.Middleware{Methods("GET")}},
|
||||
"/events/{event_uuid}/delete": {
|
||||
Handler: events.HandleDelete,
|
||||
Middlewares: []core.Middleware{Methods("DELETE"), AuthJWT}},
|
||||
"/events/{event_uuid}/update": {
|
||||
Handler: events.HandleUpdate,
|
||||
Middlewares: []core.Middleware{Methods("PATCH"), AuthJWT}},
|
||||
}
|
||||
39
backend/api/media_routes.go
Normal file
39
backend/api/media_routes.go
Normal file
@@ -0,0 +1,39 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"fr.latosa-escrima/api/media"
|
||||
"fr.latosa-escrima/core"
|
||||
)
|
||||
|
||||
var MediaRoutes = map[string]core.Handler{
|
||||
"/media/upload": {
|
||||
Handler: media.HandleUpload,
|
||||
Middlewares: []core.Middleware{Methods("POST"), AuthJWT}},
|
||||
"/media/verify": {
|
||||
Handler: media.HandleVerify,
|
||||
Middlewares: []core.Middleware{Methods("POST"), AuthJWT},
|
||||
},
|
||||
// Paginated media response
|
||||
"/media/": {
|
||||
Handler: media.HandleMedia,
|
||||
Middlewares: []core.Middleware{Methods("GET")},
|
||||
},
|
||||
// Unique element
|
||||
"/media/{media_uuid}": {
|
||||
Handler: media.HandleMediaDetails,
|
||||
Middlewares: []core.Middleware{Methods("GET")},
|
||||
},
|
||||
// Get the image, video, GIF etc.
|
||||
"/media/{media_uuid}/file": {
|
||||
Handler: media.HandleMediaFile,
|
||||
Middlewares: []core.Middleware{Methods("GET")},
|
||||
},
|
||||
// "/media/{media_uuid}/update": {
|
||||
// Handler: HandleGetMediaFile,
|
||||
// Middlewares: []core.Middleware{Methods("PATCH"), AuthJWT},
|
||||
// },
|
||||
"/media/{media_uuid}/delete": {
|
||||
Handler: media.HandleDelete,
|
||||
Middlewares: []core.Middleware{Methods("DELETE"), AuthJWT},
|
||||
},
|
||||
}
|
||||
21
backend/api/permissions_routes.go
Normal file
21
backend/api/permissions_routes.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"fr.latosa-escrima/api/permissions"
|
||||
"fr.latosa-escrima/core"
|
||||
)
|
||||
|
||||
var PermissionsRoutes = map[string]core.Handler{
|
||||
"/permissions": {
|
||||
Handler: permissions.HandlePermissions,
|
||||
Middlewares: []core.Middleware{Methods("GET"), AuthJWT},
|
||||
},
|
||||
"/permissions/{permission_id}": {
|
||||
Handler: permissions.HandlePermission,
|
||||
Middlewares: []core.Middleware{Methods("GET"), AuthJWT},
|
||||
},
|
||||
"/permissions/resources/{resource}": {
|
||||
Handler: permissions.HandlePermissionsResource,
|
||||
Middlewares: []core.Middleware{Methods("GET"), AuthJWT},
|
||||
},
|
||||
}
|
||||
41
backend/api/roles_routes.go
Normal file
41
backend/api/roles_routes.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"fr.latosa-escrima/api/roles"
|
||||
"fr.latosa-escrima/core"
|
||||
)
|
||||
|
||||
var RolesRoutes = map[string]core.Handler{
|
||||
"/roles/": {
|
||||
Handler: roles.HandleRoles,
|
||||
Middlewares: []core.Middleware{Methods("GET"), AuthJWT},
|
||||
},
|
||||
"/roles/new": {
|
||||
Handler: roles.HandleNew,
|
||||
Middlewares: []core.Middleware{Methods("POST"), AuthJWT},
|
||||
},
|
||||
"/roles/{role_uuid}": {
|
||||
Handler: roles.HandleRole,
|
||||
Middlewares: []core.Middleware{Methods("GET"), AuthJWT},
|
||||
},
|
||||
"/roles/{role_uuid}/update": {
|
||||
Handler: roles.HandleUpdate,
|
||||
Middlewares: []core.Middleware{Methods("PATCH"), AuthJWT},
|
||||
},
|
||||
"/roles/{role_uuid}/delete": {
|
||||
Handler: roles.HandleDelete,
|
||||
Middlewares: []core.Middleware{Methods("DELETE"), AuthJWT},
|
||||
},
|
||||
"/roles/{role_uuid}/permissions/": {
|
||||
Handler: roles.HandleRolePermissions,
|
||||
Middlewares: []core.Middleware{Methods("GET"), AuthJWT},
|
||||
},
|
||||
"/roles/{role_uuid}/permissions/{permission_id}/add": {
|
||||
Handler: roles.HandleAddPermission,
|
||||
Middlewares: []core.Middleware{Methods("PATCH"), AuthJWT},
|
||||
},
|
||||
"/roles/{role_uuid}/permissions/{permission_id}/remove": {
|
||||
Handler: roles.HandleRemovePermission,
|
||||
Middlewares: []core.Middleware{Methods("PATCH"), AuthJWT},
|
||||
},
|
||||
}
|
||||
29
backend/api/shortcodes_routes.go
Normal file
29
backend/api/shortcodes_routes.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"fr.latosa-escrima/api/shortcodes"
|
||||
"fr.latosa-escrima/core"
|
||||
)
|
||||
|
||||
var ShortcodesRoutes = map[string]core.Handler{
|
||||
"/shortcodes/new": {
|
||||
Handler: shortcodes.HandleNew,
|
||||
Middlewares: []core.Middleware{Methods("POST"), AuthJWT},
|
||||
},
|
||||
"/shortcodes/": {
|
||||
Handler: shortcodes.HandleShortcodes,
|
||||
Middlewares: []core.Middleware{Methods("GET"), AuthJWT},
|
||||
},
|
||||
"/shortcodes/{shortcode}": {
|
||||
Handler: shortcodes.HandleShortcode,
|
||||
Middlewares: []core.Middleware{Methods("GET")},
|
||||
},
|
||||
"/shortcodes/{shortcode}/delete": {
|
||||
Handler: shortcodes.HandleDelete,
|
||||
Middlewares: []core.Middleware{Methods("DELETE"), AuthJWT},
|
||||
},
|
||||
"/shortcodes/{shortcode}/update": {
|
||||
Handler: shortcodes.HandleUpdate,
|
||||
Middlewares: []core.Middleware{Methods("PATCH"), AuthJWT},
|
||||
},
|
||||
}
|
||||
39
backend/api/users_routes.go
Normal file
39
backend/api/users_routes.go
Normal file
@@ -0,0 +1,39 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"fr.latosa-escrima/api/users"
|
||||
"fr.latosa-escrima/core"
|
||||
)
|
||||
|
||||
var UserRoutes = map[string]core.Handler{
|
||||
"/users/login": {
|
||||
Handler: users.HandleLogin,
|
||||
Middlewares: []core.Middleware{Methods("POST")}},
|
||||
"/users/me": {
|
||||
Handler: users.HandleMe,
|
||||
Middlewares: []core.Middleware{Methods("GET"), AuthJWT}},
|
||||
"/users": {
|
||||
Handler: users.HandleUsers,
|
||||
Middlewares: []core.Middleware{Methods("GET"), AuthJWT}},
|
||||
"/users/new": {
|
||||
Handler: users.HandleNew,
|
||||
Middlewares: []core.Middleware{Methods("POST"), AuthJWT}},
|
||||
"/users/{user_uuid}": {
|
||||
Handler: users.HandleUser,
|
||||
Middlewares: []core.Middleware{Methods("GET"), AuthJWT}},
|
||||
"/users/{user_uuid}/delete": {
|
||||
Handler: users.HandleDelete,
|
||||
Middlewares: []core.Middleware{Methods("DELETE"), AuthJWT}},
|
||||
"/users/{user_uuid}/update": {
|
||||
Handler: users.HandleUpdate,
|
||||
Middlewares: []core.Middleware{Methods("PATCH"), AuthJWT}},
|
||||
"/users/{user_uuid}/roles": {
|
||||
Handler: users.HandleRoles,
|
||||
Middlewares: []core.Middleware{Methods("GET"), AuthJWT}},
|
||||
"/users/{user_uuid}/roles/{role_id}/add": {
|
||||
Handler: users.HandleAddRole,
|
||||
Middlewares: []core.Middleware{Methods("PATCH"), AuthJWT}},
|
||||
"/users/{user_uuid}/roles/{role_id}/remove": {
|
||||
Handler: users.HandleRemoveRole,
|
||||
Middlewares: []core.Middleware{Methods("PATCH"), AuthJWT}},
|
||||
}
|
||||
167
backend/main.go
167
backend/main.go
@@ -12,14 +12,8 @@ import (
|
||||
_ "github.com/lib/pq"
|
||||
|
||||
"fr.latosa-escrima/api"
|
||||
"fr.latosa-escrima/api/blogs"
|
||||
"fr.latosa-escrima/api/events"
|
||||
"fr.latosa-escrima/api/media"
|
||||
"fr.latosa-escrima/api/permissions"
|
||||
"fr.latosa-escrima/api/roles"
|
||||
"fr.latosa-escrima/api/shortcodes"
|
||||
"fr.latosa-escrima/api/users"
|
||||
"fr.latosa-escrima/core"
|
||||
"fr.latosa-escrima/utils"
|
||||
"github.com/gorilla/csrf"
|
||||
)
|
||||
|
||||
@@ -70,155 +64,10 @@ func main() {
|
||||
|
||||
mux := http.NewServeMux()
|
||||
|
||||
core.HandleRoutes(mux, map[string]core.Handler{
|
||||
baseRoutes := map[string]core.Handler{
|
||||
"/": {
|
||||
Handler: handler,
|
||||
Middlewares: []core.Middleware{api.Methods("get")}},
|
||||
"/users/login": {
|
||||
Handler: users.HandleLogin,
|
||||
Middlewares: []core.Middleware{api.Methods("POST")}},
|
||||
"/users/me": {
|
||||
Handler: users.HandleMe,
|
||||
Middlewares: []core.Middleware{api.Methods("GET"), api.AuthJWT}},
|
||||
"/users": {
|
||||
Handler: users.HandleUsers,
|
||||
Middlewares: []core.Middleware{api.Methods("GET"), api.AuthJWT}},
|
||||
"/users/new": {
|
||||
Handler: users.HandleNew,
|
||||
Middlewares: []core.Middleware{api.Methods("POST"), api.AuthJWT}},
|
||||
"/users/{user_uuid}": {
|
||||
Handler: users.HandleUser,
|
||||
Middlewares: []core.Middleware{api.Methods("GET"), api.AuthJWT}},
|
||||
"/users/{user_uuid}/delete": {
|
||||
Handler: users.HandleDelete,
|
||||
Middlewares: []core.Middleware{api.Methods("DELETE"), api.AuthJWT}},
|
||||
"/users/{user_uuid}/update": {
|
||||
Handler: users.HandleUpdate,
|
||||
Middlewares: []core.Middleware{api.Methods("PATCH"), api.AuthJWT}},
|
||||
"/users/{user_uuid}/roles": {
|
||||
Handler: users.HandleRoles,
|
||||
Middlewares: []core.Middleware{api.Methods("GET"), api.AuthJWT}},
|
||||
"/users/{user_uuid}/roles/{role_id}/add": {
|
||||
Handler: users.HandleAddRole,
|
||||
Middlewares: []core.Middleware{api.Methods("PATCH"), api.AuthJWT}},
|
||||
"/users/{user_uuid}/roles/{role_id}/remove": {
|
||||
Handler: users.HandleRemoveRole,
|
||||
Middlewares: []core.Middleware{api.Methods("PATCH"), api.AuthJWT}},
|
||||
"/events": {
|
||||
Handler: events.HandleEvents,
|
||||
Middlewares: []core.Middleware{api.Methods("GET")}},
|
||||
"/events/new": {
|
||||
Handler: events.HandleNew,
|
||||
Middlewares: []core.Middleware{api.Methods("POST"), api.AuthJWT}},
|
||||
"/events/{event_uuid}": {
|
||||
Handler: events.HandleEvent,
|
||||
Middlewares: []core.Middleware{api.Methods("GET")}},
|
||||
"/events/{event_uuid}/delete": {
|
||||
Handler: events.HandleDelete,
|
||||
Middlewares: []core.Middleware{api.Methods("DELETE"), api.AuthJWT}},
|
||||
"/events/{event_uuid}/update": {
|
||||
Handler: events.HandleUpdate,
|
||||
Middlewares: []core.Middleware{api.Methods("PATCH"), api.AuthJWT}},
|
||||
"/blogs/new": {
|
||||
Handler: blogs.HandleNew,
|
||||
Middlewares: []core.Middleware{api.Methods(("POST")), api.AuthJWT}},
|
||||
"/blogs/{uuid}": {
|
||||
Handler: blogs.HandleBlog,
|
||||
Middlewares: []core.Middleware{api.Methods("GET")}},
|
||||
"/media/upload": {
|
||||
Handler: media.HandleUpload,
|
||||
Middlewares: []core.Middleware{api.Methods("POST"), api.AuthJWT}},
|
||||
"/media/verify": {
|
||||
Handler: media.HandleVerify,
|
||||
Middlewares: []core.Middleware{api.Methods("POST"), api.AuthJWT},
|
||||
},
|
||||
// Paginated media response
|
||||
"/media/": {
|
||||
Handler: media.HandleMedia,
|
||||
Middlewares: []core.Middleware{api.Methods("GET")},
|
||||
},
|
||||
// Unique element
|
||||
"/media/{media_uuid}": {
|
||||
Handler: media.HandleMediaDetails,
|
||||
Middlewares: []core.Middleware{api.Methods("GET")},
|
||||
},
|
||||
// Get the image, video, GIF etc.
|
||||
"/media/{media_uuid}/file": {
|
||||
Handler: media.HandleMediaFile,
|
||||
Middlewares: []core.Middleware{api.Methods("GET")},
|
||||
},
|
||||
// "/media/{media_uuid}/update": {
|
||||
// Handler: api.HandleGetMediaFile,
|
||||
// Middlewares: []core.Middleware{api.Methods("PATCH"), api.AuthJWT},
|
||||
// },
|
||||
"/media/{media_uuid}/delete": {
|
||||
Handler: media.HandleDelete,
|
||||
Middlewares: []core.Middleware{api.Methods("DELETE"), api.AuthJWT},
|
||||
},
|
||||
"/shortcodes/new": {
|
||||
Handler: shortcodes.HandleNew,
|
||||
Middlewares: []core.Middleware{api.Methods("POST"), api.AuthJWT},
|
||||
},
|
||||
"/shortcodes/": {
|
||||
Handler: shortcodes.HandleShortcodes,
|
||||
Middlewares: []core.Middleware{api.Methods("GET"), api.AuthJWT},
|
||||
},
|
||||
"/shortcodes/{shortcode}": {
|
||||
Handler: shortcodes.HandleShortcode,
|
||||
Middlewares: []core.Middleware{api.Methods("GET")},
|
||||
},
|
||||
"/shortcodes/{shortcode}/delete": {
|
||||
Handler: shortcodes.HandleDelete,
|
||||
Middlewares: []core.Middleware{api.Methods("DELETE"), api.AuthJWT},
|
||||
},
|
||||
"/shortcodes/{shortcode}/update": {
|
||||
Handler: shortcodes.HandleUpdate,
|
||||
Middlewares: []core.Middleware{api.Methods("PATCH"), api.AuthJWT},
|
||||
},
|
||||
"/roles/": {
|
||||
Handler: roles.HandleRoles,
|
||||
Middlewares: []core.Middleware{api.Methods("GET"), api.AuthJWT},
|
||||
},
|
||||
"/roles/new": {
|
||||
Handler: roles.HandleNew,
|
||||
Middlewares: []core.Middleware{api.Methods("POST"), api.AuthJWT},
|
||||
},
|
||||
"/roles/{role_uuid}": {
|
||||
Handler: roles.HandleRole,
|
||||
Middlewares: []core.Middleware{api.Methods("GET"), api.AuthJWT},
|
||||
},
|
||||
"/roles/{role_uuid}/update": {
|
||||
Handler: roles.HandleUpdate,
|
||||
Middlewares: []core.Middleware{api.Methods("PATCH"), api.AuthJWT},
|
||||
},
|
||||
"/roles/{role_uuid}/delete": {
|
||||
Handler: roles.HandleDelete,
|
||||
Middlewares: []core.Middleware{api.Methods("DELETE"), api.AuthJWT},
|
||||
},
|
||||
"/permissions": {
|
||||
Handler: permissions.HandlePermissions,
|
||||
Middlewares: []core.Middleware{api.Methods("GET"), api.AuthJWT},
|
||||
},
|
||||
"/permissions/{permission_id}": {
|
||||
Handler: permissions.HandlePermission,
|
||||
Middlewares: []core.Middleware{api.Methods("GET"), api.AuthJWT},
|
||||
},
|
||||
"/permissions/resources/{resource}": {
|
||||
Handler: permissions.HandlePermissionsResource,
|
||||
Middlewares: []core.Middleware{api.Methods("GET"), api.AuthJWT},
|
||||
},
|
||||
"/roles/{role_uuid}/permissions/": {
|
||||
Handler: roles.HandleRolePermissions,
|
||||
Middlewares: []core.Middleware{api.Methods("GET"), api.AuthJWT},
|
||||
},
|
||||
"/roles/{role_uuid}/permissions/{permission_id}/add": {
|
||||
Handler: roles.HandleAddPermission,
|
||||
Middlewares: []core.Middleware{api.Methods("PATCH"), api.AuthJWT},
|
||||
},
|
||||
"/roles/{role_uuid}/permissions/{permission_id}/remove": {
|
||||
Handler: roles.HandleRemovePermission,
|
||||
Middlewares: []core.Middleware{api.Methods("PATCH"), api.AuthJWT},
|
||||
},
|
||||
"/contact": {
|
||||
Handler: api.HandleContact,
|
||||
Middlewares: []core.Middleware{api.Methods("POST"), CSRFMiddleware},
|
||||
@@ -227,7 +76,17 @@ func main() {
|
||||
Handler: api.HandleCSRF,
|
||||
Middlewares: []core.Middleware{api.Methods("GET"), CSRFMiddleware},
|
||||
},
|
||||
})
|
||||
}
|
||||
routes := utils.MergeMaps(
|
||||
baseRoutes,
|
||||
api.UserRoutes,
|
||||
api.BlogsRoutes,
|
||||
api.EventsRoutes,
|
||||
api.MediaRoutes,
|
||||
api.PermissionsRoutes,
|
||||
api.RolesRoutes,
|
||||
api.ShortcodesRoutes)
|
||||
core.HandleRoutes(mux, routes)
|
||||
|
||||
fmt.Printf("Serving on port %s\n", port)
|
||||
err = http.ListenAndServe(fmt.Sprintf(":%s", port), api.CORS(mux))
|
||||
|
||||
13
backend/utils/merge_maps.go
Normal file
13
backend/utils/merge_maps.go
Normal file
@@ -0,0 +1,13 @@
|
||||
package utils
|
||||
|
||||
func MergeMaps[K comparable, V any](maps ...map[K]V) map[K]V {
|
||||
merged := make(map[K]V)
|
||||
|
||||
for _, m := range maps {
|
||||
for k, v := range m {
|
||||
merged[k] = v
|
||||
}
|
||||
}
|
||||
|
||||
return merged
|
||||
}
|
||||
Reference in New Issue
Block a user