package controllers import ( "GoMembership/internal/config" "GoMembership/internal/models" "GoMembership/internal/services" "net/http" // "strconv" "github.com/gin-gonic/gin" "GoMembership/pkg/logger" ) type MembershipController struct { Service services.MembershipService } type MembershipData struct { APIKey string `json:"api_key"` Model models.SubscriptionModel `json:"model"` } func (mc *MembershipController) RegisterSubscription(c *gin.Context) { var regData MembershipData if err := c.ShouldBindJSON(®Data); err != nil { logger.Error.Printf("Couln't decode subscription data: %v", err) c.JSON(http.StatusBadRequest, gin.H{"error": "Couldn't decode subscription data"}) } logger.Info.Printf("Using API key: %v", config.LoadConfig().Auth.APIKEY) if regData.APIKey == "" { logger.Error.Println("API Key is missing") c.JSON(http.StatusBadRequest, "API Key is missing") return } if regData.APIKey != config.LoadConfig().Auth.APIKEY { logger.Error.Printf("API Key not valid: %v", regData.APIKey) c.JSON(http.StatusExpectationFailed, "API Key is missing") return } logger.Info.Printf("registering subscription: %+v", regData) // Register Subscription id, err := mc.Service.RegisterSubscription(®Data.Model) if err != nil { logger.Error.Printf("Couldn't register Membershipmodel: %v", err) c.JSON(http.StatusInternalServerError, "Couldn't register Membershipmodel") return } regData.Model.ID = id }