diff --git a/src/api/api.go b/src/api/api.go index ff4c322..8331057 100644 --- a/src/api/api.go +++ b/src/api/api.go @@ -1382,6 +1382,7 @@ func (a *Api) SendStopTyping(c *gin.Context) { // @Description Check if one or more phone numbers are registered with the Signal Service. // @Accept json // @Produce json +// @Param number path string false "Registered Phone Number" // @Param numbers query []string true "Numbers to check" collectionFormat(multi) // @Success 200 {object} []SearchResponse // @Failure 400 {object} Error @@ -1393,7 +1394,9 @@ func (a *Api) SearchForNumbers(c *gin.Context) { return } - searchResults, err := a.signalClient.SearchForNumbers(query["numbers"]) + number := c.Param("number") + + searchResults, err := a.signalClient.SearchForNumbers(number, query["numbers"]) if err != nil { c.JSON(400, Error{Msg: err.Error()}) return diff --git a/src/client/client.go b/src/client/client.go index 2462f1a..38ff591 100644 --- a/src/client/client.go +++ b/src/client/client.go @@ -1348,7 +1348,7 @@ func (s *SignalClient) SendStopTyping(number string, recipient string) error { return err } -func (s *SignalClient) SearchForNumbers(numbers []string) ([]SearchResultEntry, error) { +func (s *SignalClient) SearchForNumbers(number string, numbers []string) ([]SearchResultEntry, error) { searchResultEntries := []SearchResultEntry{} var err error @@ -1374,7 +1374,11 @@ func (s *SignalClient) SearchForNumbers(numbers []string) ([]SearchResultEntry, return searchResultEntries, err } } else { - cmd := []string{"--config", s.signalCliConfig, "--output", "json", "getUserStatus"} + cmd := []string{"--config", s.signalCliConfig, "--output", "json"} + if number != "" { + cmd = append(cmd, []string{"-a", number}...) + } + cmd = append(cmd, "getUserStatus") cmd = append(cmd, numbers...) rawData, err = s.cliClient.Execute(true, cmd, "") } diff --git a/src/docs/docs.go b/src/docs/docs.go index 453a35c..e92427e 100644 --- a/src/docs/docs.go +++ b/src/docs/docs.go @@ -1289,6 +1289,12 @@ var doc = `{ ], "summary": "Check if one or more phone numbers are registered with the Signal Service.", "parameters": [ + { + "type": "string", + "description": "Registered Phone Number", + "name": "number", + "in": "path" + }, { "type": "array", "items": { diff --git a/src/docs/swagger.json b/src/docs/swagger.json index d034529..240662f 100644 --- a/src/docs/swagger.json +++ b/src/docs/swagger.json @@ -1273,6 +1273,12 @@ ], "summary": "Check if one or more phone numbers are registered with the Signal Service.", "parameters": [ + { + "type": "string", + "description": "Registered Phone Number", + "name": "number", + "in": "path" + }, { "type": "array", "items": { diff --git a/src/docs/swagger.yaml b/src/docs/swagger.yaml index 3b7965a..f60351d 100644 --- a/src/docs/swagger.yaml +++ b/src/docs/swagger.yaml @@ -1118,6 +1118,10 @@ paths: - application/json description: Check if one or more phone numbers are registered with the Signal Service. parameters: + - description: Registered Phone Number + in: path + name: number + type: string - collectionFormat: multi description: Numbers to check in: query diff --git a/src/main.go b/src/main.go index 1f655f7..6ce5521 100644 --- a/src/main.go +++ b/src/main.go @@ -235,6 +235,7 @@ func main() { search := v1.Group("/search") { search.GET("", api.SearchForNumbers) + search.GET(":number", api.SearchForNumbers) } contacts := v1.Group("/contacts")