diff --git a/src/api/api.go b/src/api/api.go index 277dce9..c4b5348 100644 --- a/src/api/api.go +++ b/src/api/api.go @@ -32,6 +32,10 @@ type RegisterNumberRequest struct { UseVoice bool `json:"use_voice"` } +type VerifyNumberSettings struct { + Pin string `json:"pin"` +} + type SendMessageV1 struct { Number string `json:"number"` Recipients []string `json:"recipients"` @@ -347,12 +351,27 @@ func (a *Api) RegisterNumber(c *gin.Context) { // @Success 201 {string} string "OK" // @Failure 400 {object} Error // @Param number path string true "Registered Phone Number" +// @Param data body VerifyNumberSettings true "Additional Settings" // @Param token path string true "Verification Code" // @Router /v1/register/{number}/verify/{token} [post] func (a *Api) VerifyRegisteredNumber(c *gin.Context) { number := c.Param("number") token := c.Param("token") + pin := "" + var req VerifyNumberSettings + buf := new(bytes.Buffer) + buf.ReadFrom(c.Request.Body) + if buf.String() != "" { + err := json.Unmarshal(buf.Bytes(), &req) + if err != nil { + log.Error("Couldn't verify number: ", err.Error()) + c.JSON(400, Error{Msg: "Couldn't process request - invalid request."}) + return + } + pin = req.Pin + } + if number == "" { c.JSON(400, gin.H{"error": "Please provide a number"}) return @@ -363,7 +382,13 @@ func (a *Api) VerifyRegisteredNumber(c *gin.Context) { return } - _, err := runSignalCli(true, []string{"--config", a.signalCliConfig, "-u", number, "verify", token}) + cmd := []string{"--config", a.signalCliConfig, "-u", number, "verify", token} + if pin != "" { + cmd = append(cmd, "--pin") + cmd = append(cmd, pin) + } + + _, err := runSignalCli(true, cmd) if err != nil { c.JSON(400, gin.H{"error": err.Error()}) return @@ -378,9 +403,8 @@ func (a *Api) VerifyRegisteredNumber(c *gin.Context) { // @Produce json // @Success 201 {string} string "OK" // @Failure 400 {object} Error -// @Param number path string true "Registered Phone Number" // @Param data body SendMessageV1 true "Input Data" -// @Router /v1/send/{number} [post] +// @Router /v1/send/ [post] // @Deprecated func (a *Api) Send(c *gin.Context) { @@ -406,9 +430,8 @@ func (a *Api) Send(c *gin.Context) { // @Produce json // @Success 201 {string} string "OK" // @Failure 400 {object} Error -// @Param number path string true "Registered Phone Number" // @Param data body SendMessageV2 true "Input Data" -// @Router /v2/send/{number} [post] +// @Router /v2/send/ [post] func (a *Api) SendV2(c *gin.Context) { var req SendMessageV2 err := c.BindJSON(&req) diff --git a/src/docs/docs.go b/src/docs/docs.go index 3e91921..2dde9ea 100644 --- a/src/docs/docs.go +++ b/src/docs/docs.go @@ -282,6 +282,15 @@ var doc = `{ "in": "path", "required": true }, + { + "description": "Additional Settings", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/api.VerifyNumberSettings" + } + }, { "type": "string", "description": "Verification Code", @@ -306,7 +315,7 @@ var doc = `{ } } }, - "/v1/send/{number}": { + "/v1/send/": { "post": { "description": "Send a signal message", "consumes": [ @@ -321,13 +330,6 @@ var doc = `{ "summary": "Send a signal message.", "deprecated": true, "parameters": [ - { - "type": "string", - "description": "Registered Phone Number", - "name": "number", - "in": "path", - "required": true - }, { "description": "Input Data", "name": "data", @@ -354,7 +356,7 @@ var doc = `{ } } }, - "/v2/send/{number}": { + "/v2/send/": { "post": { "description": "Send a signal message", "consumes": [ @@ -368,13 +370,6 @@ var doc = `{ ], "summary": "Send a signal message.", "parameters": [ - { - "type": "string", - "description": "Registered Phone Number", - "name": "number", - "in": "path", - "required": true - }, { "description": "Input Data", "name": "data", @@ -504,6 +499,14 @@ var doc = `{ } } } + }, + "api.VerifyNumberSettings": { + "type": "object", + "properties": { + "pin": { + "type": "string" + } + } } }, "tags": [ diff --git a/src/docs/swagger.json b/src/docs/swagger.json index 05b270c..9bed4ba 100644 --- a/src/docs/swagger.json +++ b/src/docs/swagger.json @@ -267,6 +267,15 @@ "in": "path", "required": true }, + { + "description": "Additional Settings", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/api.VerifyNumberSettings" + } + }, { "type": "string", "description": "Verification Code", @@ -291,7 +300,7 @@ } } }, - "/v1/send/{number}": { + "/v1/send/": { "post": { "description": "Send a signal message", "consumes": [ @@ -306,13 +315,6 @@ "summary": "Send a signal message.", "deprecated": true, "parameters": [ - { - "type": "string", - "description": "Registered Phone Number", - "name": "number", - "in": "path", - "required": true - }, { "description": "Input Data", "name": "data", @@ -339,7 +341,7 @@ } } }, - "/v2/send/{number}": { + "/v2/send/": { "post": { "description": "Send a signal message", "consumes": [ @@ -353,13 +355,6 @@ ], "summary": "Send a signal message.", "parameters": [ - { - "type": "string", - "description": "Registered Phone Number", - "name": "number", - "in": "path", - "required": true - }, { "description": "Input Data", "name": "data", @@ -489,6 +484,14 @@ } } } + }, + "api.VerifyNumberSettings": { + "type": "object", + "properties": { + "pin": { + "type": "string" + } + } } }, "tags": [ diff --git a/src/docs/swagger.yaml b/src/docs/swagger.yaml index 65e4f19..53b8368 100644 --- a/src/docs/swagger.yaml +++ b/src/docs/swagger.yaml @@ -66,6 +66,11 @@ definitions: type: string type: array type: object + api.VerifyNumberSettings: + properties: + pin: + type: string + type: object host: 127.0.0.1:8080 info: contact: {} @@ -241,6 +246,12 @@ paths: name: number required: true type: string + - description: Additional Settings + in: body + name: data + required: true + schema: + $ref: '#/definitions/api.VerifyNumberSettings' - description: Verification Code in: path name: token @@ -260,18 +271,13 @@ paths: summary: Verify a registered phone number. tags: - Devices - /v1/send/{number}: + /v1/send/: post: consumes: - application/json deprecated: true description: Send a signal message parameters: - - description: Registered Phone Number - in: path - name: number - required: true - type: string - description: Input Data in: body name: data @@ -292,17 +298,12 @@ paths: summary: Send a signal message. tags: - Messages - /v2/send/{number}: + /v2/send/: post: consumes: - application/json description: Send a signal message parameters: - - description: Registered Phone Number - in: path - name: number - required: true - type: string - description: Input Data in: body name: data