You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

91 lines
2.3 KiB

package rest
import (
"fmt"
domainGroup "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/group"
"github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/utils"
"github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/whatsapp"
"github.com/gofiber/fiber/v2"
)
type Group struct {
Service domainGroup.IGroupService
}
func InitRestGroup(app *fiber.App, service domainGroup.IGroupService) Group {
rest := Group{Service: service}
app.Post("/group", rest.CreateGroup)
app.Post("/group/join-with-link", rest.JoinGroupWithLink)
app.Post("/group/leave", rest.LeaveGroup)
app.Post("/group/participants", rest.AddParticipants)
return rest
}
func (controller *Group) JoinGroupWithLink(c *fiber.Ctx) error {
var request domainGroup.JoinGroupWithLinkRequest
err := c.BodyParser(&request)
utils.PanicIfNeeded(err)
response, err := controller.Service.JoinGroupWithLink(c.UserContext(), request)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
Status: 200,
Code: "SUCCESS",
Message: "Success joined group",
Results: map[string]string{
"group_id": response,
},
})
}
func (controller *Group) LeaveGroup(c *fiber.Ctx) error {
var request domainGroup.LeaveGroupRequest
err := c.BodyParser(&request)
utils.PanicIfNeeded(err)
err = controller.Service.LeaveGroup(c.UserContext(), request)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
Status: 200,
Code: "SUCCESS",
Message: "Success leave group",
})
}
func (controller *Group) CreateGroup(c *fiber.Ctx) error {
var request domainGroup.CreateGroupRequest
err := c.BodyParser(&request)
utils.PanicIfNeeded(err)
groupID, err := controller.Service.CreateGroup(c.UserContext(), request)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
Status: 200,
Code: "SUCCESS",
Message: fmt.Sprintf("Success created group with id %s", groupID),
Results: map[string]string{
"group_id": groupID,
},
})
}
func (controller *Group) AddParticipants(c *fiber.Ctx) error {
var request domainGroup.ParticipantRequest
err := c.BodyParser(&request)
utils.PanicIfNeeded(err)
whatsapp.SanitizePhone(&request.GroupID)
result, err := controller.Service.AddParticipant(c.UserContext(), request)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
Status: 200,
Code: "SUCCESS",
Message: "Success add participants",
Results: result,
})
}