From 531970570107664da570c19ce411199a6d1bc658 Mon Sep 17 00:00:00 2001 From: Jailson Dias Date: Wed, 13 Nov 2024 18:05:12 -0300 Subject: [PATCH] added the feature to get join group info by invite link --- src/api/api.go | 27 +++++++++++++++++++++++++++ src/client/client.go | 8 ++++++++ src/main.go | 1 + 3 files changed, 36 insertions(+) diff --git a/src/api/api.go b/src/api/api.go index d8c2d7f..986ccbb 100644 --- a/src/api/api.go +++ b/src/api/api.go @@ -1431,6 +1431,33 @@ func (a *Api) JoinGroupByInviteLink(c *gin.Context) { c.Status(http.StatusNoContent) } +// @Summary Get a Signal Group info by invite link. +// @Tags Groups +// @Description Get the specified Signal Group info by invite link. +// @Accept json +// @Produce json +// @Success 200 {string} OK +// @Failure 400 {object} Error +// @Param number path string true "Registered Phone Number" +// @Query invite_link query string true "Invite Link" +// @Router /v1/groups/{number}/join_info_by_invite_link [get] +func (a *Api) GetJoinGroupInfoByInviteLink(c *gin.Context) { + number := c.Param("number") + if number == "" { + c.JSON(400, Error{Msg: "Couldn't process request - number missing"}) + return + } + + inviteLink := c.Query("invite_link") + jsonStr, err := a.signalClient.GetJoinGroupInfoByInviteLink(number, inviteLink) + if err != nil { + c.JSON(400, Error{Msg: err.Error()}) + return + } + + c.String(200, jsonStr) +} + // @Summary Quit a Signal Group. // @Tags Groups // @Description Quit the specified Signal Group. diff --git a/src/client/client.go b/src/client/client.go index cf852f0..6a5b7ff 100644 --- a/src/client/client.go +++ b/src/client/client.go @@ -1578,6 +1578,14 @@ func (s *SignalClient) JoinGroupByInviteLink(number string, inviteLink string) e return err } +func (s *SignalClient) GetJoinGroupInfoByInviteLink(number string, inviteLink string) (string, error) { + if s.signalCliMode == JsonRpc { + return "", errors.New("Not implemented") + } + + return s.cliClient.Execute(true, []string{"--config", s.signalCliConfig, "--output", "json", "-a", number, "getJoinGroupInfo", "--uri", inviteLink}, "") +} + func (s *SignalClient) QuitGroup(number string, groupId string) error { var err error if s.signalCliMode == JsonRpc { diff --git a/src/main.go b/src/main.go index 1d6b0b1..baf29f7 100644 --- a/src/main.go +++ b/src/main.go @@ -195,6 +195,7 @@ func main() { groups.POST(":number", api.CreateGroup) groups.GET(":number", api.GetGroups) groups.POST(":number/join_by_invite_link", api.JoinGroupByInviteLink) + groups.GET(":number/join_info_by_invite_link", api.GetJoinGroupInfoByInviteLink) groups.GET(":number/:groupid", api.GetGroup) groups.DELETE(":number/:groupid", api.DeleteGroup) groups.POST(":number/:groupid/block", api.BlockGroup)