✨ Able to subscribe to realm
This commit is contained in:
@@ -51,12 +51,15 @@ func MapAPIs(app *fiber.App, baseURL string) {
|
||||
subscriptions.Get("/users/:userId", getSubscriptionOnUser)
|
||||
subscriptions.Get("/tags/:tagId", getSubscriptionOnTag)
|
||||
subscriptions.Get("/categories/:categoryId", getSubscriptionOnCategory)
|
||||
subscriptions.Get("/realms/:realmId", getSubscriptionOnRealm)
|
||||
subscriptions.Post("/users/:userId", subscribeToUser)
|
||||
subscriptions.Post("/tags/:tagId", subscribeToTag)
|
||||
subscriptions.Post("/categories/:categoryId", subscribeToCategory)
|
||||
subscriptions.Post("/realms/:realmId", subscribeToRealm)
|
||||
subscriptions.Delete("/users/:userId", unsubscribeFromUser)
|
||||
subscriptions.Delete("/tags/:tagId", unsubscribeFromTag)
|
||||
subscriptions.Delete("/categories/:categoryId", unsubscribeFromCategory)
|
||||
subscriptions.Delete("/realms/:realmId", unsubscribeFromRealm)
|
||||
}
|
||||
|
||||
api.Get("/categories", listCategories)
|
||||
|
@@ -76,6 +76,28 @@ func getSubscriptionOnCategory(c *fiber.Ctx) error {
|
||||
return c.JSON(subscription)
|
||||
}
|
||||
|
||||
func getSubscriptionOnRealm(c *fiber.Ctx) error {
|
||||
if err := gap.H.EnsureAuthenticated(c); err != nil {
|
||||
return err
|
||||
}
|
||||
user := c.Locals("user").(models.Account)
|
||||
|
||||
realmId, err := c.ParamsInt("realmId", 0)
|
||||
realm, err := services.GetRealmWithID(uint(realmId))
|
||||
if err != nil {
|
||||
return fiber.NewError(fiber.StatusBadRequest, fmt.Sprintf("unable to get realm: %v", err))
|
||||
}
|
||||
|
||||
subscription, err := services.GetSubscriptionOnRealm(user, realm)
|
||||
if err != nil {
|
||||
return fiber.NewError(fiber.StatusBadRequest, fmt.Sprintf("unable to get subscription: %v", err))
|
||||
} else if subscription == nil {
|
||||
return fiber.NewError(fiber.StatusNotFound, "subscription does not exist")
|
||||
}
|
||||
|
||||
return c.JSON(subscription)
|
||||
}
|
||||
|
||||
func subscribeToUser(c *fiber.Ctx) error {
|
||||
if err := gap.H.EnsureAuthenticated(c); err != nil {
|
||||
return err
|
||||
@@ -160,6 +182,34 @@ func subscribeToCategory(c *fiber.Ctx) error {
|
||||
return c.JSON(subscription)
|
||||
}
|
||||
|
||||
func subscribeToRealm(c *fiber.Ctx) error {
|
||||
if err := gap.H.EnsureAuthenticated(c); err != nil {
|
||||
return err
|
||||
}
|
||||
user := c.Locals("user").(models.Account)
|
||||
|
||||
realmId, err := c.ParamsInt("realmId", 0)
|
||||
realm, err := services.GetRealmWithID(uint(realmId))
|
||||
if err != nil {
|
||||
return fiber.NewError(fiber.StatusBadRequest, fmt.Sprintf("unable to get realm: %v", err))
|
||||
}
|
||||
|
||||
subscription, err := services.SubscribeToRealm(user, realm)
|
||||
if err != nil {
|
||||
return fiber.NewError(fiber.StatusBadRequest, fmt.Sprintf("unable to subscribe to realm: %v", err))
|
||||
}
|
||||
|
||||
_ = gap.H.RecordAuditLog(
|
||||
user.ID,
|
||||
"posts.subscribe.realms",
|
||||
strconv.Itoa(int(realm.ID)),
|
||||
c.IP(),
|
||||
c.Get(fiber.HeaderUserAgent),
|
||||
)
|
||||
|
||||
return c.JSON(subscription)
|
||||
}
|
||||
|
||||
func unsubscribeFromUser(c *fiber.Ctx) error {
|
||||
if err := gap.H.EnsureAuthenticated(c); err != nil {
|
||||
return err
|
||||
@@ -243,3 +293,31 @@ func unsubscribeFromCategory(c *fiber.Ctx) error {
|
||||
|
||||
return c.SendStatus(fiber.StatusOK)
|
||||
}
|
||||
|
||||
func unsubscribeFromRealm(c *fiber.Ctx) error {
|
||||
if err := gap.H.EnsureAuthenticated(c); err != nil {
|
||||
return err
|
||||
}
|
||||
user := c.Locals("user").(models.Account)
|
||||
|
||||
realmId, err := c.ParamsInt("realmId", 0)
|
||||
realm, err := services.GetRealmWithID(uint(realmId))
|
||||
if err != nil {
|
||||
return fiber.NewError(fiber.StatusBadRequest, fmt.Sprintf("unable to get realm: %v", err))
|
||||
}
|
||||
|
||||
err = services.UnsubscribeFromRealm(user, realm)
|
||||
if err != nil {
|
||||
return fiber.NewError(fiber.StatusBadRequest, fmt.Sprintf("unable to unsubscribe from realm: %v", err))
|
||||
}
|
||||
|
||||
_ = gap.H.RecordAuditLog(
|
||||
user.ID,
|
||||
"posts.unsubscribe.realms",
|
||||
strconv.Itoa(int(realm.ID)),
|
||||
c.IP(),
|
||||
c.Get(fiber.HeaderUserAgent),
|
||||
)
|
||||
|
||||
return c.SendStatus(fiber.StatusOK)
|
||||
}
|
||||
|
Reference in New Issue
Block a user