55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
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.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.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
|
|
|
|
}
|