mirror of
https://github.com/bbernhard/signal-cli-rest-api.git
synced 2026-11-01 09:49:30 +00:00
Merge 4747a6ddfc420bafa9dbd75c0f3a95ebbc3e9e82 into 4b0f6f35394c6d69ba1b76c2a2ce1323e74acae1
This commit is contained in:
commit
8287b16f20
@ -75,6 +75,10 @@ type ChangeGroupAdminsRequest struct {
|
||||
Admins []string `json:"admins"`
|
||||
}
|
||||
|
||||
type JoinGroupByLinkRequest struct {
|
||||
Uri string `json:"uri"`
|
||||
}
|
||||
|
||||
type LoggingConfiguration struct {
|
||||
Level string `json:"Level"`
|
||||
}
|
||||
@ -1739,6 +1743,47 @@ func (a *Api) JoinGroup(c *gin.Context) {
|
||||
c.Status(http.StatusNoContent)
|
||||
}
|
||||
|
||||
// @Summary Join a Signal Group via an invitation link.
|
||||
// @Tags Groups
|
||||
// @Description Join a Signal Group using an invitation link. The uri starts with https://signal.group/#
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Success 204 {string} OK
|
||||
// @Failure 400 {object} Error
|
||||
// @Param number path string true "Registered Phone Number"
|
||||
// @Param data body JoinGroupByLinkRequest true "Invitation link"
|
||||
// @Router /v1/groups/{number}/join [post]
|
||||
func (a *Api) JoinGroupByLink(c *gin.Context) {
|
||||
number, err := url.PathUnescape(c.Param("number"))
|
||||
if err != nil {
|
||||
c.JSON(400, Error{Msg: "Couldn't process request - malformed number"})
|
||||
return
|
||||
}
|
||||
if number == "" {
|
||||
c.JSON(400, Error{Msg: "Couldn't process request - number missing"})
|
||||
return
|
||||
}
|
||||
|
||||
var req JoinGroupByLinkRequest
|
||||
err = c.BindJSON(&req)
|
||||
if err != nil {
|
||||
c.JSON(400, Error{Msg: "Couldn't process request - invalid request"})
|
||||
return
|
||||
}
|
||||
if req.Uri == "" {
|
||||
c.JSON(400, Error{Msg: "Couldn't process request - uri missing"})
|
||||
return
|
||||
}
|
||||
|
||||
err = a.signalClient.JoinGroupByLink(number, req.Uri)
|
||||
if err != nil {
|
||||
c.JSON(400, Error{Msg: err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
c.Status(http.StatusNoContent)
|
||||
}
|
||||
|
||||
// @Summary Quit a Signal Group.
|
||||
// @Tags Groups
|
||||
// @Description Quit the specified Signal Group.
|
||||
|
||||
@ -2063,6 +2063,26 @@ func (s *SignalClient) JoinGroup(number string, groupId string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *SignalClient) JoinGroupByLink(number string, uri string) error {
|
||||
var err error
|
||||
var jsonRpc2Client *JsonRpc2Client
|
||||
if s.signalCliMode == JsonRpc {
|
||||
type Request struct {
|
||||
Uri string `json:"uri"`
|
||||
}
|
||||
request := Request{Uri: uri}
|
||||
jsonRpc2Client, err = s.getJsonRpc2Client()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = jsonRpc2Client.getRaw("joinGroup", &number, request)
|
||||
} else {
|
||||
cmd := []string{"--config", s.signalCliConfig, "-a", number, "joinGroup", "--uri", uri}
|
||||
_, err = s.cliClient.Execute(true, cmd, "")
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *SignalClient) QuitGroup(number string, groupId string) error {
|
||||
var err error
|
||||
var jsonRpc2Client *JsonRpc2Client
|
||||
|
||||
@ -208,6 +208,17 @@ const docTemplate = `{
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"api.JoinGroupByLinkRequest": {
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"uri"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"api.LoggingConfiguration": {
|
||||
"properties": {
|
||||
"Level": {
|
||||
@ -3410,6 +3421,53 @@ const docTemplate = `{
|
||||
]
|
||||
}
|
||||
},
|
||||
"/v1/groups/{number}/join": {
|
||||
"post": {
|
||||
"consumes": [
|
||||
"application/json"
|
||||
],
|
||||
"description": "Join a Signal Group using an invitation link. The uri starts with https://signal.group/#",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "Registered Phone Number",
|
||||
"in": "path",
|
||||
"name": "number",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"description": "Invitation link",
|
||||
"in": "body",
|
||||
"name": "data",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/api.JoinGroupByLinkRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"responses": {
|
||||
"204": {
|
||||
"description": "No Content",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Bad Request",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/api.Error"
|
||||
}
|
||||
}
|
||||
},
|
||||
"summary": "Join a Signal Group via an invitation link.",
|
||||
"tags": [
|
||||
"Groups"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/v1/groups/{number}/{groupid}": {
|
||||
"delete": {
|
||||
"consumes": [
|
||||
|
||||
@ -203,6 +203,17 @@
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"api.JoinGroupByLinkRequest": {
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"uri"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"api.LoggingConfiguration": {
|
||||
"properties": {
|
||||
"Level": {
|
||||
@ -3405,6 +3416,53 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"/v1/groups/{number}/join": {
|
||||
"post": {
|
||||
"consumes": [
|
||||
"application/json"
|
||||
],
|
||||
"description": "Join a Signal Group using an invitation link. The uri starts with https://signal.group/#",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "Registered Phone Number",
|
||||
"in": "path",
|
||||
"name": "number",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"description": "Invitation link",
|
||||
"in": "body",
|
||||
"name": "data",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/api.JoinGroupByLinkRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"responses": {
|
||||
"204": {
|
||||
"description": "No Content",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Bad Request",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/api.Error"
|
||||
}
|
||||
}
|
||||
},
|
||||
"summary": "Join a Signal Group via an invitation link.",
|
||||
"tags": [
|
||||
"Groups"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/v1/groups/{number}/{groupid}": {
|
||||
"delete": {
|
||||
"consumes": [
|
||||
|
||||
@ -232,6 +232,7 @@ func main() {
|
||||
groups.DELETE(":number/:groupid", api.DeleteGroup)
|
||||
groups.POST(":number/:groupid/block", api.BlockGroup)
|
||||
groups.POST(":number/:groupid/join", api.JoinGroup)
|
||||
groups.POST(":number/join", api.JoinGroupByLink)
|
||||
groups.POST(":number/:groupid/quit", api.QuitGroup)
|
||||
groups.PUT(":number/:groupid", api.UpdateGroup)
|
||||
groups.POST(":number/:groupid/members", api.AddMembersToGroup)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user