@@ -13,6 +13,10 @@ import (
1313 "go.uber.org/zap"
1414)
1515
16+ const (
17+ route3rdPartyGetMessage = "3rdparty.get.message"
18+ )
19+
1620type thirdPartyHandler struct {
1721 Handler
1822
@@ -27,10 +31,11 @@ type thirdPartyHandler struct {
2731// @Accept json
2832// @Produce json
2933// @Param request body smsgateway.Message true "Сообщение"
30- // @Success 201 {object} smsgateway.MessageState "Сообщение поставлено в очередь"
34+ // @Success 202 {object} smsgateway.MessageState "Сообщение поставлено в очередь"
3135// @Failure 401 {object} smsgateway.ErrorResponse "Ошибка авторизации"
3236// @Failure 400 {object} smsgateway.ErrorResponse "Некорректный запрос"
3337// @Failure 500 {object} smsgateway.ErrorResponse "Внутренняя ошибка сервера"
38+ // @Header 202 {string} Location "URL для получения состояния сообщения"
3439// @Router /3rdparty/v1/message [post]
3540//
3641// Поставить сообщение в очередь
@@ -55,7 +60,16 @@ func (h *thirdPartyHandler) postMessage(user models.User, c *fiber.Ctx) error {
5560 return err
5661 }
5762
58- return c .Status (fiber .StatusCreated ).JSON (state )
63+ location , err := c .GetRouteURL (route3rdPartyGetMessage , fiber.Map {
64+ "id" : state .ID ,
65+ })
66+ if err != nil {
67+ h .Logger .Error ("Failed to get route URL" , zap .String ("route" , route3rdPartyGetMessage ), zap .Error (err ))
68+ } else {
69+ c .Location (location )
70+ }
71+
72+ return c .Status (fiber .StatusAccepted ).JSON (state )
5973}
6074
6175// @Summary Получить состояние сообщения
@@ -111,7 +125,7 @@ func (h *thirdPartyHandler) Register(router fiber.Router) {
111125 }))
112126
113127 router .Post ("/message" , h .authorize (h .postMessage ))
114- router .Get ("/message/:id" , h .authorize (h .getMessage ))
128+ router .Get ("/message/:id" , h .authorize (h .getMessage )). Name ( route3rdPartyGetMessage )
115129}
116130
117131func newThirdPartyHandler (logger * zap.Logger , validator * validator.Validate , authSvc * services.AuthService , messagesSvc * services.MessagesService ) * thirdPartyHandler {
0 commit comments