Skip to content

Commit

Permalink
Merge pull request #401 from k-bx/master
Browse files Browse the repository at this point in the history
Accept max_messages param
  • Loading branch information
bbernhard authored Aug 31, 2023
2 parents 1380b8e + 068a124 commit e0e49dc
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 12 deletions.
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
ARG SIGNAL_CLI_VERSION=0.12.0
ARG SIGNAL_CLI_VERSION=0.12.1
ARG LIBSIGNAL_CLIENT_VERSION=0.30.0
ARG SIGNAL_CLI_NATIVE_PACKAGE_VERSION=0.12.0-1
ARG SIGNAL_CLI_NATIVE_PACKAGE_VERSION=0.12.1-1

ARG SWAG_VERSION=1.6.7
ARG GRAALVM_JAVA_VERSION=17
Expand Down
14 changes: 11 additions & 3 deletions src/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -473,6 +473,7 @@ func StringToBool(input string) bool {
// @Param timeout query string false "Receive timeout in seconds (default: 1)"
// @Param ignore_attachments query string false "Specify whether the attachments of the received message should be ignored" (default: false)"
// @Param ignore_stories query string false "Specify whether stories should be ignored when receiving messages" (default: false)"
// @Param max_messages query string false "Specify the maximum number of messages to receive (default: unlimited)". Not available in json-rpc mode.
// @Router /v1/receive/{number} [get]
func (a *Api) Receive(c *gin.Context) {
number := c.Param("number")
Expand All @@ -496,19 +497,26 @@ func (a *Api) Receive(c *gin.Context) {
return
}

maxMessages := c.DefaultQuery("max_messages", "0")
maxMessagesInt, err := strconv.ParseInt(maxMessages, 10, 32)
if err != nil {
c.JSON(400, Error{Msg: "Couldn't process request - max_messages needs to be numeric!"})
return
}

ignoreAttachments := c.DefaultQuery("ignore_attachments", "false")
if ignoreAttachments != "true" && ignoreAttachments != "false" {
c.JSON(400, Error {Msg: "Couldn't process request - ignore_attachments parameter needs to be either 'true' or 'false'"})
c.JSON(400, Error{Msg: "Couldn't process request - ignore_attachments parameter needs to be either 'true' or 'false'"})
return
}

ignoreStories := c.DefaultQuery("ignore_stories", "false")
if ignoreStories != "true" && ignoreStories != "false" {
c.JSON(400, Error {Msg: "Couldn't process request - ignore_stories parameter needs to be either 'true' or 'false'"})
c.JSON(400, Error{Msg: "Couldn't process request - ignore_stories parameter needs to be either 'true' or 'false'"})
return
}

jsonStr, err := a.signalClient.Receive(number, timeoutInt, StringToBool(ignoreAttachments), StringToBool(ignoreStories))
jsonStr, err := a.signalClient.Receive(number, timeoutInt, StringToBool(ignoreAttachments), StringToBool(ignoreStories), maxMessagesInt)
if err != nil {
c.JSON(400, Error{Msg: err.Error()})
return
Expand Down
19 changes: 12 additions & 7 deletions src/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -474,12 +474,12 @@ func (s *SignalClient) send(number string, message string,

func (s *SignalClient) About() About {
about := About{
SupportedApiVersions: []string{"v1", "v2"},
BuildNr: 2,
Mode: getSignalCliModeString(s.signalCliMode),
Version: utils.GetEnv("BUILD_VERSION", "unset"),
Capabilities: map[string][]string{"v2/send": []string{"quotes", "mentions"}},
}
SupportedApiVersions: []string{"v1", "v2"},
BuildNr: 2,
Mode: getSignalCliModeString(s.signalCliMode),
Version: utils.GetEnv("BUILD_VERSION", "unset"),
Capabilities: map[string][]string{"v2/send": []string{"quotes", "mentions"}},
}
return about
}

Expand Down Expand Up @@ -610,7 +610,7 @@ func (s *SignalClient) SendV2(number string, message string, recps []string, bas
return &timestamps, nil
}

func (s *SignalClient) Receive(number string, timeout int64, ignoreAttachments bool, ignoreStories bool) (string, error) {
func (s *SignalClient) Receive(number string, timeout int64, ignoreAttachments bool, ignoreStories bool, maxMessages int64) (string, error) {
if s.signalCliMode == JsonRpc {
return "", errors.New("Not implemented")
} else {
Expand All @@ -624,6 +624,11 @@ func (s *SignalClient) Receive(number string, timeout int64, ignoreAttachments b
command = append(command, "--ignore-stories")
}

if maxMessages > 0 {
command = append(command, "--max-messages")
command = append(command, strconv.FormatInt(maxMessages, 10))
}

out, err := s.cliClient.Execute(true, command, "")
if err != nil {
return "", err
Expand Down

0 comments on commit e0e49dc

Please sign in to comment.