Skip to content

Commit 9ada820

Browse files
committed
[api/3rdparty] move /devices group to distinct controller
1 parent 71950ec commit 9ada820

File tree

6 files changed

+86
-40
lines changed

6 files changed

+86
-40
lines changed

Diff for: api/requests.http

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ GET {{baseUrl}}/api/3rdparty/v1/message/2dcIAhcLg81cez7GE_Pdp HTTP/1.1
4545
Authorization: Basic {{credentials}}
4646

4747
###
48-
GET {{baseUrl}}/api/3rdparty/v1/device HTTP/1.1
48+
GET {{baseUrl}}/api/3rdparty/v1/devices HTTP/1.1
4949
Authorization: Basic {{credentials}}
5050

5151
###

Diff for: internal/sms-gateway/handlers/3rdparty.go

+6-37
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ import (
66

77
"github.com/android-sms-gateway/client-go/smsgateway"
88
"github.com/capcom6/sms-gateway/internal/sms-gateway/handlers/base"
9+
devicesCtrl "github.com/capcom6/sms-gateway/internal/sms-gateway/handlers/devices"
910
"github.com/capcom6/sms-gateway/internal/sms-gateway/handlers/webhooks"
1011
"github.com/capcom6/sms-gateway/internal/sms-gateway/models"
1112
"github.com/capcom6/sms-gateway/internal/sms-gateway/modules/auth"
1213
"github.com/capcom6/sms-gateway/internal/sms-gateway/modules/devices"
1314
"github.com/capcom6/sms-gateway/internal/sms-gateway/modules/messages"
1415
"github.com/capcom6/sms-gateway/internal/sms-gateway/repositories"
15-
"github.com/capcom6/sms-gateway/pkg/types"
1616
"github.com/go-playground/validator/v10"
1717
"github.com/gofiber/fiber/v2"
1818
"github.com/gofiber/fiber/v2/middleware/basicauth"
@@ -29,6 +29,7 @@ type ThirdPartyHandlerParams struct {
2929

3030
HealthHandler *healthHandler
3131
WebhooksHandler *webhooks.ThirdPartyController
32+
DevicesHandler *devicesCtrl.ThirdPartyController
3233

3334
AuthSvc *auth.Service
3435
MessagesSvc *messages.Service
@@ -43,46 +44,13 @@ type thirdPartyHandler struct {
4344

4445
healthHandler *healthHandler
4546
webhooksHandler *webhooks.ThirdPartyController
47+
devicesHandler *devicesCtrl.ThirdPartyController
4648

4749
authSvc *auth.Service
4850
messagesSvc *messages.Service
4951
devicesSvc *devices.Service
5052
}
5153

52-
// @Summary List devices
53-
// @Description Returns list of registered devices
54-
// @Security ApiAuth
55-
// @Tags User
56-
// @Produce json
57-
// @Success 200 {object} []smsgateway.Device "Device list"
58-
// @Failure 400 {object} smsgateway.ErrorResponse "Invalid request"
59-
// @Failure 401 {object} smsgateway.ErrorResponse "Unauthorized"
60-
// @Failure 500 {object} smsgateway.ErrorResponse "Internal server error"
61-
// @Router /3rdparty/v1/device [get]
62-
//
63-
// List devices
64-
func (h *thirdPartyHandler) getDevice(user models.User, c *fiber.Ctx) error {
65-
devices, err := h.devicesSvc.Select(devices.WithUserID(user.ID))
66-
if err != nil {
67-
return fmt.Errorf("can't select devices: %w", err)
68-
}
69-
70-
response := make([]smsgateway.Device, 0, len(devices))
71-
72-
for _, device := range devices {
73-
response = append(response, smsgateway.Device{
74-
ID: device.ID,
75-
Name: types.OrDefault[string](device.Name, ""),
76-
CreatedAt: device.CreatedAt,
77-
UpdatedAt: device.UpdatedAt,
78-
DeletedAt: device.DeletedAt,
79-
LastSeen: device.LastSeen,
80-
})
81-
}
82-
83-
return c.JSON(response)
84-
}
85-
8654
// @Summary Enqueue message
8755
// @Description Enqueues message for sending. If ID is not specified, it will be generated
8856
// @Security ApiAuth
@@ -196,11 +164,11 @@ func (h *thirdPartyHandler) Register(router fiber.Router) {
196164
return c.Next()
197165
})
198166

199-
router.Get("/device", auth.WithUser(h.getDevice))
200-
201167
router.Post("/message", auth.WithUser(h.postMessage))
202168
router.Get("/message/:id", auth.WithUser(h.getMessage)).Name(route3rdPartyGetMessage)
203169

170+
h.devicesHandler.Register(router.Group("/device")) // TODO: remove after 2025-07-11
171+
h.devicesHandler.Register(router.Group("/devices"))
204172
h.webhooksHandler.Register(router.Group("/webhooks"))
205173
}
206174

@@ -209,6 +177,7 @@ func newThirdPartyHandler(params ThirdPartyHandlerParams) *thirdPartyHandler {
209177
Handler: base.Handler{Logger: params.Logger.Named("ThirdPartyHandler"), Validator: params.Validator},
210178
healthHandler: params.HealthHandler,
211179
webhooksHandler: params.WebhooksHandler,
180+
devicesHandler: params.DevicesHandler,
212181
authSvc: params.AuthSvc,
213182
messagesSvc: params.MessagesSvc,
214183
devicesSvc: params.DevicesSvc,

Diff for: internal/sms-gateway/handlers/devices/3rdparty.go

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package devices
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/android-sms-gateway/client-go/smsgateway"
7+
"github.com/capcom6/go-helpers/slices"
8+
"github.com/capcom6/sms-gateway/internal/sms-gateway/handlers/base"
9+
"github.com/capcom6/sms-gateway/internal/sms-gateway/models"
10+
"github.com/capcom6/sms-gateway/internal/sms-gateway/modules/auth"
11+
"github.com/capcom6/sms-gateway/internal/sms-gateway/modules/devices"
12+
"github.com/capcom6/sms-gateway/pkg/types"
13+
"github.com/gofiber/fiber/v2"
14+
"go.uber.org/fx"
15+
"go.uber.org/zap"
16+
)
17+
18+
type thirdPartyControllerParams struct {
19+
fx.In
20+
21+
DevicesSvc *devices.Service
22+
23+
Logger *zap.Logger
24+
}
25+
26+
type ThirdPartyController struct {
27+
base.Handler
28+
29+
devicesSvc *devices.Service
30+
}
31+
32+
// @Summary List devices
33+
// @Description Returns list of registered devices
34+
// @Security ApiAuth
35+
// @Tags User
36+
// @Produce json
37+
// @Success 200 {object} []smsgateway.Device "Device list"
38+
// @Failure 400 {object} smsgateway.ErrorResponse "Invalid request"
39+
// @Failure 401 {object} smsgateway.ErrorResponse "Unauthorized"
40+
// @Failure 500 {object} smsgateway.ErrorResponse "Internal server error"
41+
// @Router /3rdparty/v1/devices [get]
42+
//
43+
// List devices
44+
func (h *ThirdPartyController) getDevices(user models.User, c *fiber.Ctx) error {
45+
devices, err := h.devicesSvc.Select(devices.WithUserID(user.ID))
46+
if err != nil {
47+
return fmt.Errorf("can't select devices: %w", err)
48+
}
49+
50+
response := slices.Map(devices, func(device models.Device) smsgateway.Device {
51+
return smsgateway.Device{
52+
ID: device.ID,
53+
Name: types.OrDefault(device.Name, ""),
54+
CreatedAt: device.CreatedAt,
55+
UpdatedAt: device.UpdatedAt,
56+
DeletedAt: device.DeletedAt,
57+
LastSeen: device.LastSeen,
58+
}
59+
})
60+
61+
return c.JSON(response)
62+
}
63+
64+
func (h *ThirdPartyController) Register(router fiber.Router) {
65+
router.Get("", auth.WithUser(h.getDevices))
66+
}
67+
68+
func NewThirdPartyController(params thirdPartyControllerParams) *ThirdPartyController {
69+
return &ThirdPartyController{
70+
Handler: base.Handler{
71+
Logger: params.Logger.Named("devices"),
72+
},
73+
devicesSvc: params.DevicesSvc,
74+
}
75+
}

Diff for: internal/sms-gateway/handlers/module.go

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package handlers
22

33
import (
44
"github.com/capcom6/go-infra-fx/http"
5+
"github.com/capcom6/sms-gateway/internal/sms-gateway/handlers/devices"
56
"github.com/capcom6/sms-gateway/internal/sms-gateway/handlers/webhooks"
67
"go.uber.org/fx"
78
"go.uber.org/zap"
@@ -22,6 +23,7 @@ var Module = fx.Module(
2223
newHealthHandler,
2324
webhooks.NewThirdPartyController,
2425
webhooks.NewMobileController,
26+
devices.NewThirdPartyController,
2527
fx.Private,
2628
),
2729
)

Diff for: internal/sms-gateway/handlers/webhooks/3rdparty.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ func (h *ThirdPartyController) Register(router fiber.Router) {
108108
func NewThirdPartyController(params thirdPartyControllerParams) *ThirdPartyController {
109109
return &ThirdPartyController{
110110
Handler: base.Handler{
111-
Logger: params.Logger.Named("controller"),
111+
Logger: params.Logger.Named("webhooks"),
112112
Validator: params.Validator,
113113
},
114114
webhooksSvc: params.WebhooksSvc,

Diff for: internal/sms-gateway/handlers/webhooks/mobile.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ func (h *MobileController) Register(router fiber.Router) {
5353
func NewMobileController(params mobileControllerParams) *MobileController {
5454
return &MobileController{
5555
Handler: base.Handler{
56-
Logger: params.Logger.Named("mobile"),
56+
Logger: params.Logger.Named("webhooks"),
5757
},
5858
webhooksSvc: params.WebhooksServices,
5959
}

0 commit comments

Comments
 (0)