added pin verification + fixed bug in swagger documentation

This commit is contained in:
Bernhard B
2020-07-10 21:48:46 +02:00
parent 2927a4b0a4
commit 7a26d3e277
4 changed files with 79 additions and 49 deletions

View File

@@ -32,6 +32,10 @@ type RegisterNumberRequest struct {
UseVoice bool `json:"use_voice"` UseVoice bool `json:"use_voice"`
} }
type VerifyNumberSettings struct {
Pin string `json:"pin"`
}
type SendMessageV1 struct { type SendMessageV1 struct {
Number string `json:"number"` Number string `json:"number"`
Recipients []string `json:"recipients"` Recipients []string `json:"recipients"`
@@ -347,12 +351,27 @@ func (a *Api) RegisterNumber(c *gin.Context) {
// @Success 201 {string} string "OK" // @Success 201 {string} string "OK"
// @Failure 400 {object} Error // @Failure 400 {object} Error
// @Param number path string true "Registered Phone Number" // @Param number path string true "Registered Phone Number"
// @Param data body VerifyNumberSettings true "Additional Settings"
// @Param token path string true "Verification Code" // @Param token path string true "Verification Code"
// @Router /v1/register/{number}/verify/{token} [post] // @Router /v1/register/{number}/verify/{token} [post]
func (a *Api) VerifyRegisteredNumber(c *gin.Context) { func (a *Api) VerifyRegisteredNumber(c *gin.Context) {
number := c.Param("number") number := c.Param("number")
token := c.Param("token") 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 == "" { if number == "" {
c.JSON(400, gin.H{"error": "Please provide a number"}) c.JSON(400, gin.H{"error": "Please provide a number"})
return return
@@ -363,7 +382,13 @@ func (a *Api) VerifyRegisteredNumber(c *gin.Context) {
return 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 { if err != nil {
c.JSON(400, gin.H{"error": err.Error()}) c.JSON(400, gin.H{"error": err.Error()})
return return
@@ -378,9 +403,8 @@ func (a *Api) VerifyRegisteredNumber(c *gin.Context) {
// @Produce json // @Produce json
// @Success 201 {string} string "OK" // @Success 201 {string} string "OK"
// @Failure 400 {object} Error // @Failure 400 {object} Error
// @Param number path string true "Registered Phone Number"
// @Param data body SendMessageV1 true "Input Data" // @Param data body SendMessageV1 true "Input Data"
// @Router /v1/send/{number} [post] // @Router /v1/send/ [post]
// @Deprecated // @Deprecated
func (a *Api) Send(c *gin.Context) { func (a *Api) Send(c *gin.Context) {
@@ -406,9 +430,8 @@ func (a *Api) Send(c *gin.Context) {
// @Produce json // @Produce json
// @Success 201 {string} string "OK" // @Success 201 {string} string "OK"
// @Failure 400 {object} Error // @Failure 400 {object} Error
// @Param number path string true "Registered Phone Number"
// @Param data body SendMessageV2 true "Input Data" // @Param data body SendMessageV2 true "Input Data"
// @Router /v2/send/{number} [post] // @Router /v2/send/ [post]
func (a *Api) SendV2(c *gin.Context) { func (a *Api) SendV2(c *gin.Context) {
var req SendMessageV2 var req SendMessageV2
err := c.BindJSON(&req) err := c.BindJSON(&req)

View File

@@ -282,6 +282,15 @@ var doc = `{
"in": "path", "in": "path",
"required": true "required": true
}, },
{
"description": "Additional Settings",
"name": "data",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.VerifyNumberSettings"
}
},
{ {
"type": "string", "type": "string",
"description": "Verification Code", "description": "Verification Code",
@@ -306,7 +315,7 @@ var doc = `{
} }
} }
}, },
"/v1/send/{number}": { "/v1/send/": {
"post": { "post": {
"description": "Send a signal message", "description": "Send a signal message",
"consumes": [ "consumes": [
@@ -321,13 +330,6 @@ var doc = `{
"summary": "Send a signal message.", "summary": "Send a signal message.",
"deprecated": true, "deprecated": true,
"parameters": [ "parameters": [
{
"type": "string",
"description": "Registered Phone Number",
"name": "number",
"in": "path",
"required": true
},
{ {
"description": "Input Data", "description": "Input Data",
"name": "data", "name": "data",
@@ -354,7 +356,7 @@ var doc = `{
} }
} }
}, },
"/v2/send/{number}": { "/v2/send/": {
"post": { "post": {
"description": "Send a signal message", "description": "Send a signal message",
"consumes": [ "consumes": [
@@ -368,13 +370,6 @@ var doc = `{
], ],
"summary": "Send a signal message.", "summary": "Send a signal message.",
"parameters": [ "parameters": [
{
"type": "string",
"description": "Registered Phone Number",
"name": "number",
"in": "path",
"required": true
},
{ {
"description": "Input Data", "description": "Input Data",
"name": "data", "name": "data",
@@ -504,6 +499,14 @@ var doc = `{
} }
} }
} }
},
"api.VerifyNumberSettings": {
"type": "object",
"properties": {
"pin": {
"type": "string"
}
}
} }
}, },
"tags": [ "tags": [

View File

@@ -267,6 +267,15 @@
"in": "path", "in": "path",
"required": true "required": true
}, },
{
"description": "Additional Settings",
"name": "data",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.VerifyNumberSettings"
}
},
{ {
"type": "string", "type": "string",
"description": "Verification Code", "description": "Verification Code",
@@ -291,7 +300,7 @@
} }
} }
}, },
"/v1/send/{number}": { "/v1/send/": {
"post": { "post": {
"description": "Send a signal message", "description": "Send a signal message",
"consumes": [ "consumes": [
@@ -306,13 +315,6 @@
"summary": "Send a signal message.", "summary": "Send a signal message.",
"deprecated": true, "deprecated": true,
"parameters": [ "parameters": [
{
"type": "string",
"description": "Registered Phone Number",
"name": "number",
"in": "path",
"required": true
},
{ {
"description": "Input Data", "description": "Input Data",
"name": "data", "name": "data",
@@ -339,7 +341,7 @@
} }
} }
}, },
"/v2/send/{number}": { "/v2/send/": {
"post": { "post": {
"description": "Send a signal message", "description": "Send a signal message",
"consumes": [ "consumes": [
@@ -353,13 +355,6 @@
], ],
"summary": "Send a signal message.", "summary": "Send a signal message.",
"parameters": [ "parameters": [
{
"type": "string",
"description": "Registered Phone Number",
"name": "number",
"in": "path",
"required": true
},
{ {
"description": "Input Data", "description": "Input Data",
"name": "data", "name": "data",
@@ -489,6 +484,14 @@
} }
} }
} }
},
"api.VerifyNumberSettings": {
"type": "object",
"properties": {
"pin": {
"type": "string"
}
}
} }
}, },
"tags": [ "tags": [

View File

@@ -66,6 +66,11 @@ definitions:
type: string type: string
type: array type: array
type: object type: object
api.VerifyNumberSettings:
properties:
pin:
type: string
type: object
host: 127.0.0.1:8080 host: 127.0.0.1:8080
info: info:
contact: {} contact: {}
@@ -241,6 +246,12 @@ paths:
name: number name: number
required: true required: true
type: string type: string
- description: Additional Settings
in: body
name: data
required: true
schema:
$ref: '#/definitions/api.VerifyNumberSettings'
- description: Verification Code - description: Verification Code
in: path in: path
name: token name: token
@@ -260,18 +271,13 @@ paths:
summary: Verify a registered phone number. summary: Verify a registered phone number.
tags: tags:
- Devices - Devices
/v1/send/{number}: /v1/send/:
post: post:
consumes: consumes:
- application/json - application/json
deprecated: true deprecated: true
description: Send a signal message description: Send a signal message
parameters: parameters:
- description: Registered Phone Number
in: path
name: number
required: true
type: string
- description: Input Data - description: Input Data
in: body in: body
name: data name: data
@@ -292,17 +298,12 @@ paths:
summary: Send a signal message. summary: Send a signal message.
tags: tags:
- Messages - Messages
/v2/send/{number}: /v2/send/:
post: post:
consumes: consumes:
- application/json - application/json
description: Send a signal message description: Send a signal message
parameters: parameters:
- description: Registered Phone Number
in: path
name: number
required: true
type: string
- description: Input Data - description: Input Data
in: body in: body
name: data name: data