Files
test_deploy/internal/http/integration.go
Alex Shevchuk 61fc0d2747
Some checks failed
Deploy Production / Deploy to Staging (push) Has been skipped
Go Linter / Run golangci-lint (api_gateway) (push) Failing after 2m31s
Go Linter / Build golang services (api_gateway) (push) Has been skipped
Go Linter / Tag Commit (push) Has been skipped
Go Linter / Push Docker Images (api_gateway) (push) Has been skipped
71
2025-09-17 14:32:06 +03:00

72 lines
2.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package http_router
import (
"encoding/json"
"log/slog"
"net/http"
"git-molva.ru/Molva/molva-backend/services/api_gateway/internal/constants"
dbtypes "git-molva.ru/Molva/molva-backend/services/api_gateway/internal/database/types"
"git-molva.ru/Molva/molva-backend/services/api_gateway/internal/integration"
intrmodel "git-molva.ru/Molva/molva-backend/services/api_gateway/internal/request_model/integration"
)
// @Summary Callback интеграции с ВкусВилл
// @Description Обработка callback запросов от интеграции с ВкусВилл
// @Tags integration
// @Accept json
// @Produce json
// @Param request body map[string]interface{} true "Данные callback от ВкусВилл"
// @Success 200 {object} map[string]string "Callback обработан"
// @Failure 400 {object} map[string]string "Неверные данные запроса"
// @Failure 500 {object} map[string]string "Внутренняя ошибка сервера"
// @Router /api/v1/integration/vkusvill/callback [post]
func (h *handler) vkusvillIntegrationCallbackHandler(w http.ResponseWriter, r *http.Request) {
const handlerName = "vkusvillIntegrationCallbackHandler"
var request intrmodel.VkusvillSaveCandidateCallbackRequest
if err := json.NewDecoder(r.Body).Decode(&request); err != nil {
http.Error(w, constants.ErrBadRequest.Error(), http.StatusBadRequest)
h.logger.Error("error while decoding request body",
slog.String("error", err.Error()),
slog.String("handler", handlerName))
return
}
defer r.Body.Close()
h.logger.Debug("vkusvill integration callback request received",
slog.String("message", request.Message),
slog.String("handler", handlerName),
)
status, err := integration.VkusvillGetCandidateStatus(request.Params.Status)
if err != nil {
http.Error(w, constants.ErrBadRequest.Error(), http.StatusBadRequest)
h.logger.Error("error getting vkusvill candidate status",
slog.String("error", err.Error()),
slog.String("handler", handlerName))
return
}
if _, err := h.dbClient.UpdateSubmissionStatus(r.Context(), &dbtypes.SubmissionStatusUpdateRequest{
Id: request.Params.CandidateId,
Status: *dbtypes.NewSubmissionStatus(status.NullString()),
}); err != nil {
http.Error(w, constants.ErrInternalServerError.Error(), http.StatusInternalServerError)
h.logger.Error("error while building and processing request: ",
slog.String("error", err.Error()),
slog.String("handler", handlerName))
return
}
// TODO: add event to feed
// go ...
w.WriteHeader(http.StatusAccepted)
}