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 Model models.SubscriptionModel } func NewMembershipController(service services.MembershipService) *MembershipController { return &MembershipController{service} } func (uc *MembershipController) RegisterPlan(w http.ResponseWriter, r *http.Request) { rh := utils.NewResponseHandler(w) var regData MembershipData if err := json.NewDecoder(r.Body).Decode(®Data); 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 plan: %+v", regData) // Register Plan id, err := uc.service.RegisterPlan(®Data.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 }