Files
GoMembership/internal/controllers/membershipController.go
2024-07-10 22:23:11 +02:00

61 lines
1.7 KiB
Go

package controllers
import (
"encoding/json"
"GoMembership/internal/config"
"GoMembership/internal/models"
"GoMembership/internal/services"
// "github.com/gorilla/mux"
"net/http"
// "strconv"
"GoMembership/internal/utils"
"GoMembership/pkg/logger"
)
type MembershipController struct {
service services.MembershipService
}
type MembershipData struct {
APIKey string `json:"api_key"`
Model models.SubscriptionModel `json:"model"`
}
func NewMembershipController(service services.MembershipService) *MembershipController {
return &MembershipController{service}
}
func (uc *MembershipController) RegisterSubscription(w http.ResponseWriter, r *http.Request) {
rh := utils.NewResponseHandler(w)
var regData MembershipData
if err := json.NewDecoder(r.Body).Decode(&regData); err != nil {
logger.Error.Printf("Couldn't decode SubscriptionModel: %v", err)
rh.RespondWithError(http.StatusBadRequest, "Couldn't decode Membershipmodel")
return
}
logger.Info.Printf("Using API key: %v", config.LoadConfig().Auth.APIKEY)
if regData.APIKey == "" {
logger.Error.Println("API Key is missing")
rh.RespondWithError(http.StatusBadRequest, "API Key is required")
return
}
if regData.APIKey != config.LoadConfig().Auth.APIKEY {
logger.Error.Printf("API Key not valid: %v", regData.APIKey)
rh.RespondWithError(http.StatusExpectationFailed, "API Key not valid")
return
}
logger.Info.Printf("registering subscription: %+v", regData)
// Register Subscription
id, err := uc.service.RegisterSubscription(&regData.Model)
if err != nil {
logger.Error.Printf("Couldn't register Membershipmodel: %v", err)
rh.RespondWithError(http.StatusInternalServerError, "Couldn't register Membershipmodel")
return
}
regData.Model.ID = id
}