Skip to content

Commit

Permalink
feat(SPV-911): /api/v1 route handling (#638)
Browse files Browse the repository at this point in the history
  • Loading branch information
yarex-4chain authored Jul 8, 2024
1 parent 40c62e9 commit f0e3f0d
Show file tree
Hide file tree
Showing 15 changed files with 38 additions and 21 deletions.
2 changes: 1 addition & 1 deletion actions/access_keys/access_keys_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ func (ts *TestSuite) SetupTest() {
ts.BaseSetupTest()

routes := NewHandler(ts.AppConfig, ts.Services)
routes.RegisterAPIEndpoints(ts.Router.Group("/" + config.APIVersion))
routes.RegisterOldAPIEndpoints(ts.Router.Group("/" + config.APIVersion))
}

// TearDownTest runs after each test
Expand Down
4 changes: 2 additions & 2 deletions actions/access_keys/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ type Action struct {
}

// NewHandler creates the specific package routes
func NewHandler(appConfig *config.AppConfig, services *config.AppServices) routes.APIEndpointsFunc {
func NewHandler(appConfig *config.AppConfig, services *config.AppServices) routes.OldAPIEndpointsFunc {
action := &Action{actions.Action{AppConfig: appConfig, Services: services}}

apiEndpoints := routes.APIEndpointsFunc(func(router *gin.RouterGroup) {
apiEndpoints := routes.OldAPIEndpointsFunc(func(router *gin.RouterGroup) {
accessKeyGroup := router.Group("/access-key")
accessKeyGroup.POST("", action.create)
accessKeyGroup.GET("", action.get)
Expand Down
2 changes: 1 addition & 1 deletion actions/contacts/contacts_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ func (ts *TestSuite) SetupTest() {

// Load the router & register routes
routes := NewHandler(ts.AppConfig, ts.Services)
routes.RegisterAPIEndpoints(ts.Router.Group("/" + config.APIVersion))
routes.RegisterOldAPIEndpoints(ts.Router.Group("/" + config.APIVersion))
}

// TearDownTest runs after each test
Expand Down
4 changes: 2 additions & 2 deletions actions/contacts/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ type Action struct {
}

// NewHandler creates the specific package routes
func NewHandler(appConfig *config.AppConfig, services *config.AppServices) routes.APIEndpointsFunc {
func NewHandler(appConfig *config.AppConfig, services *config.AppServices) routes.OldAPIEndpointsFunc {
action := &Action{actions.Action{AppConfig: appConfig, Services: services}}

apiEndpoints := routes.APIEndpointsFunc(func(router *gin.RouterGroup) {
apiEndpoints := routes.OldAPIEndpointsFunc(func(router *gin.RouterGroup) {
group := router.Group("/contact")
group.PUT("/:paymail", action.upsert)

Expand Down
2 changes: 1 addition & 1 deletion actions/destinations/destination_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func (ts *TestSuite) SetupTest() {
// Load the router & register routes
basicRoutes, apiRoutes := NewHandler(ts.AppConfig, ts.Services)
basicRoutes.RegisterBasicEndpoints(ts.Router.Group("/" + config.APIVersion))
apiRoutes.RegisterAPIEndpoints(ts.Router.Group("/" + config.APIVersion))
apiRoutes.RegisterOldAPIEndpoints(ts.Router.Group("/" + config.APIVersion))
}

// TearDownTest runs after each test
Expand Down
4 changes: 2 additions & 2 deletions actions/destinations/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ type Action struct {
}

// NewHandler creates the specific package routes
func NewHandler(appConfig *config.AppConfig, services *config.AppServices) (routes.BasicEndpointsFunc, routes.APIEndpointsFunc) {
func NewHandler(appConfig *config.AppConfig, services *config.AppServices) (routes.BasicEndpointsFunc, routes.OldAPIEndpointsFunc) {
action := &Action{actions.Action{AppConfig: appConfig, Services: services}}

basicEndpoints := routes.BasicEndpointsFunc(func(router *gin.RouterGroup) {
Expand All @@ -24,7 +24,7 @@ func NewHandler(appConfig *config.AppConfig, services *config.AppServices) (rout
basicDestinationGroup.POST("/search", action.search)
})

apiEndpoints := routes.APIEndpointsFunc(func(router *gin.RouterGroup) {
apiEndpoints := routes.OldAPIEndpointsFunc(func(router *gin.RouterGroup) {
apiDestinationGroup := router.Group("/destination")
apiDestinationGroup.POST("", action.create)
apiDestinationGroup.PATCH("", action.update)
Expand Down
4 changes: 2 additions & 2 deletions actions/sharedconfig/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ type Action struct {
}

// NewHandler creates the specific package routes
func NewHandler(appConfig *config.AppConfig, services *config.AppServices) routes.APIEndpointsFunc {
func NewHandler(appConfig *config.AppConfig, services *config.AppServices) routes.OldAPIEndpointsFunc {
action := &Action{actions.Action{AppConfig: appConfig, Services: services}}

sharedConfigEndpoints := routes.APIEndpointsFunc(func(router *gin.RouterGroup) {
sharedConfigEndpoints := routes.OldAPIEndpointsFunc(func(router *gin.RouterGroup) {
group := router.Group("/shared-config")
group.GET("", action.get)
})
Expand Down
4 changes: 2 additions & 2 deletions actions/transactions/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ type Action struct {
}

// NewHandler creates the specific package routes
func NewHandler(appConfig *config.AppConfig, services *config.AppServices) (routes.BasicEndpointsFunc, routes.APIEndpointsFunc, routes.CallbackEndpointsFunc) {
func NewHandler(appConfig *config.AppConfig, services *config.AppServices) (routes.BasicEndpointsFunc, routes.OldAPIEndpointsFunc, routes.CallbackEndpointsFunc) {
action := &Action{actions.Action{AppConfig: appConfig, Services: services}}

basicEndpoints := routes.BasicEndpointsFunc(func(router *gin.RouterGroup) {
Expand All @@ -25,7 +25,7 @@ func NewHandler(appConfig *config.AppConfig, services *config.AppServices) (rout
basicTransactionGroup.POST("/search", action.search)
})

apiEndpoints := routes.APIEndpointsFunc(func(router *gin.RouterGroup) {
apiEndpoints := routes.OldAPIEndpointsFunc(func(router *gin.RouterGroup) {
apiTransactionGroup := router.Group("/transaction")
apiTransactionGroup.POST("", action.newTransaction)
apiTransactionGroup.POST("/record", action.record)
Expand Down
2 changes: 1 addition & 1 deletion actions/transactions/transaction_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func (ts *TestSuite) SetupTest() {
// Load the router & register routes
basicRoutes, apiRoutes, callbackRoutes := NewHandler(ts.AppConfig, ts.Services)
basicRoutes.RegisterBasicEndpoints(ts.Router.Group("/" + config.APIVersion))
apiRoutes.RegisterAPIEndpoints(ts.Router.Group("/" + config.APIVersion))
apiRoutes.RegisterOldAPIEndpoints(ts.Router.Group("/" + config.APIVersion))
callbackRoutes.RegisterCallbackEndpoints(ts.Router.Group(""))
}

Expand Down
4 changes: 2 additions & 2 deletions actions/utxos/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ type Action struct {
}

// NewHandler creates the specific package routes
func NewHandler(appConfig *config.AppConfig, services *config.AppServices) routes.APIEndpointsFunc {
func NewHandler(appConfig *config.AppConfig, services *config.AppServices) routes.OldAPIEndpointsFunc {
action := &Action{actions.Action{AppConfig: appConfig, Services: services}}

apiEndpoints := routes.APIEndpointsFunc(func(router *gin.RouterGroup) {
apiEndpoints := routes.OldAPIEndpointsFunc(func(router *gin.RouterGroup) {
utxoGroup := router.Group("/utxo")
utxoGroup.GET("", action.get)
utxoGroup.POST("/count", action.count)
Expand Down
2 changes: 1 addition & 1 deletion actions/utxos/utxo_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ func (ts *TestSuite) SetupTest() {

// Load the router & register routes
apiRoutes := NewHandler(ts.AppConfig, ts.Services)
apiRoutes.RegisterAPIEndpoints(ts.Router.Group("/" + config.APIVersion))
apiRoutes.RegisterOldAPIEndpoints(ts.Router.Group("/" + config.APIVersion))
}

// TearDownTest runs after each test
Expand Down
4 changes: 2 additions & 2 deletions actions/xpubs/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ type Action struct {
}

// NewHandler creates the specific package routes
func NewHandler(appConfig *config.AppConfig, services *config.AppServices) routes.APIEndpointsFunc {
func NewHandler(appConfig *config.AppConfig, services *config.AppServices) routes.OldAPIEndpointsFunc {
action := &Action{actions.Action{AppConfig: appConfig, Services: services}}

apiEndpoints := routes.APIEndpointsFunc(func(router *gin.RouterGroup) {
apiEndpoints := routes.OldAPIEndpointsFunc(func(router *gin.RouterGroup) {
xpubGroup := router.Group("/xpub")
xpubGroup.GET("", action.get)
xpubGroup.PATCH("", action.update)
Expand Down
2 changes: 1 addition & 1 deletion actions/xpubs/xpubs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ func (ts *TestSuite) SetupTest() {

// Load the router & register routes
routes := NewHandler(ts.AppConfig, ts.Services)
routes.RegisterAPIEndpoints(ts.Router.Group("/" + config.APIVersion))
routes.RegisterOldAPIEndpoints(ts.Router.Group("/" + config.APIVersion))
}

// TearDownTest runs after each test
Expand Down
14 changes: 14 additions & 0 deletions server/routes/routes_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,15 @@ type AdminEndpoints interface {
RegisterAdminEndpoints(router *gin.RouterGroup)
}

// OldAPIEndpointsFunc wrapping type for function to mark it as implementation of OldApiEndpoints.
type OldAPIEndpointsFunc func(router *gin.RouterGroup)

// OldAPIEndpoints registrar which will register routes in ADMIN routes group.
type OldAPIEndpoints interface {
// RegisterAPIEndpoints register ADMIN endpoints.
RegisterOldAPIEndpoints(router *gin.RouterGroup)
}

// APIEndpointsFunc wrapping type for function to mark it as implementation of ApiEndpoints.
type APIEndpointsFunc func(router *gin.RouterGroup)

Expand Down Expand Up @@ -54,6 +63,11 @@ func (f AdminEndpointsFunc) RegisterAdminEndpoints(router *gin.RouterGroup) {
f(router)
}

// RegisterOldAPIEndpoints register API endpoints by registrar OldApiEndpointsFunc.
func (f OldAPIEndpointsFunc) RegisterOldAPIEndpoints(router *gin.RouterGroup) {
f(router)
}

// RegisterAPIEndpoints register API endpoints by registrar ApiEndpointsFunc.
func (f APIEndpointsFunc) RegisterAPIEndpoints(router *gin.RouterGroup) {
f(router)
Expand Down
5 changes: 4 additions & 1 deletion server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,14 +164,17 @@ func SetupServerRoutes(appConfig *config.AppConfig, services *config.AppServices
baseRouter := engine.Group("")
authRouter := engine.Group("", auth.BasicMiddleware(services.SpvWalletEngine, appConfig))
basicAuthRouter := authRouter.Group(prefix, auth.SignatureMiddleware(appConfig, false, false))
apiAuthRouter := authRouter.Group(prefix, auth.SignatureMiddleware(appConfig, true, false))
oldAPIAuthRouter := authRouter.Group(prefix, auth.SignatureMiddleware(appConfig, true, false))
apiAuthRouter := authRouter.Group("/api"+prefix, auth.SignatureMiddleware(appConfig, true, false))
adminAuthRouter := authRouter.Group(prefix, auth.SignatureMiddleware(appConfig, true, true), auth.AdminMiddleware())
callbackAuthRouter := baseRouter.Group("", auth.CallbackTokenMiddleware(appConfig))

for _, r := range routes {
switch r := r.(type) {
case router.AdminEndpoints:
r.RegisterAdminEndpoints(adminAuthRouter)
case router.OldAPIEndpoints:
r.RegisterOldAPIEndpoints(oldAPIAuthRouter)
case router.APIEndpoints:
r.RegisterAPIEndpoints(apiAuthRouter)
case router.BasicEndpoints:
Expand Down

0 comments on commit f0e3f0d

Please sign in to comment.