smpp-otp/internal/delivery/handlers/smpp-otp-handlers.go

42 lines
903 B
Go

package handlers
import (
"encoding/json"
"net/http"
"smpp-otp/internal/service"
"smpp-otp/pkg/lib/utils"
)
type OTPHandler struct {
Service service.OTPService
}
func NewOTPHandler(s service.OTPService) *OTPHandler {
return &OTPHandler{Service: s}
}
func (h *OTPHandler) GenerateAndSaveOTPHandler(w http.ResponseWriter, r *http.Request) {
var request struct {
PhoneNumber string `json:"phone_number"`
}
err := json.NewDecoder(r.Body).Decode(&request)
if err != nil {
utils.RespondWithErrorJSON(w, http.StatusBadRequest, "Invalid request payload")
return
}
if request.PhoneNumber == "" {
utils.RespondWithErrorJSON(w, http.StatusBadRequest, "Phone number is required")
return
}
err = h.Service.GenerateAndSaveOTP(request.PhoneNumber)
if err != nil {
utils.RespondWithErrorJSON(w, http.StatusInternalServerError, err.Error())
return
}
w.WriteHeader(http.StatusOK)
}