diff --git a/src/api/api.go b/src/api/api.go index f105f4c..dc5b5cb 100644 --- a/src/api/api.go +++ b/src/api/api.go @@ -836,17 +836,29 @@ func (a *Api) DeleteGroup(c *gin.Context) { // @Produce json // @Success 200 {string} string "Image" // @Param device_name query string true "Device Name" +// @Param qrcode_version query int false "QRCode Version (defaults to 10)" // @Failure 400 {object} Error // @Router /v1/qrcodelink [get] func (a *Api) GetQrCodeLink(c *gin.Context) { deviceName := c.Query("device_name") + qrCodeVersion := c.Query("qrcode_version") if deviceName == "" { c.JSON(400, Error{Msg: "Please provide a name for the device"}) return } - png, err := a.signalClient.GetQrCodeLink(deviceName) + qrCodeVersionInt := 10 + if qrCodeVersion != "" { + var err error + qrCodeVersionInt, err = strconv.Atoi(qrCodeVersion) + if err != nil { + c.JSON(400, Error{Msg: "The qrcode_version parameter needs to be an integer!"}) + return + } + } + + png, err := a.signalClient.GetQrCodeLink(deviceName, qrCodeVersionInt) if err != nil { c.JSON(400, Error{Msg: err.Error()}) return diff --git a/src/client/client.go b/src/client/client.go index beb5e6d..7248124 100644 --- a/src/client/client.go +++ b/src/client/client.go @@ -935,7 +935,7 @@ func (s *SignalClient) DeleteGroup(number string, groupId string) error { return err } -func (s *SignalClient) GetQrCodeLink(deviceName string) ([]byte, error) { +func (s *SignalClient) GetQrCodeLink(deviceName string, qrCodeVersion int) ([]byte, error) { if s.signalCliMode == JsonRpc { return []byte{}, errors.New(endpointNotSupportedInJsonRpcMode) } @@ -946,7 +946,7 @@ func (s *SignalClient) GetQrCodeLink(deviceName string) ([]byte, error) { return []byte{}, errors.New("Couldn't create QR code: " + err.Error()) } - q, err := qrcode.NewWithForcedVersion(string(tsdeviceLink), 10, qrcode.Highest) + q, err := qrcode.NewWithForcedVersion(string(tsdeviceLink), qrCodeVersion, qrcode.Highest) if err != nil { return []byte{}, errors.New("Couldn't create QR code: " + err.Error()) } diff --git a/src/docs/docs.go b/src/docs/docs.go index e92427e..36ff45a 100644 --- a/src/docs/docs.go +++ b/src/docs/docs.go @@ -1026,6 +1026,12 @@ var doc = `{ "name": "device_name", "in": "query", "required": true + }, + { + "type": "integer", + "description": "QRCode Version (defaults to 10)", + "name": "qrcode_version", + "in": "query" } ], "responses": { @@ -1160,6 +1166,12 @@ var doc = `{ "description": "Specify whether stories should be ignored when receiving messages", "name": "ignore_stories", "in": "query" + }, + { + "type": "string", + "description": "Specify the maximum number of messages to receive (default: unlimited)", + "name": "max_messages", + "in": "query" } ], "responses": { @@ -1773,6 +1785,9 @@ var doc = `{ }, "sticker": { "type": "string" + }, + "text_mode": { + "type": "string" } } }, diff --git a/src/docs/swagger.json b/src/docs/swagger.json index 240662f..93a2ca3 100644 --- a/src/docs/swagger.json +++ b/src/docs/swagger.json @@ -1010,6 +1010,12 @@ "name": "device_name", "in": "query", "required": true + }, + { + "type": "integer", + "description": "QRCode Version (defaults to 10)", + "name": "qrcode_version", + "in": "query" } ], "responses": { @@ -1144,6 +1150,12 @@ "description": "Specify whether stories should be ignored when receiving messages", "name": "ignore_stories", "in": "query" + }, + { + "type": "string", + "description": "Specify the maximum number of messages to receive (default: unlimited)", + "name": "max_messages", + "in": "query" } ], "responses": { @@ -1757,6 +1769,9 @@ }, "sticker": { "type": "string" + }, + "text_mode": { + "type": "string" } } }, diff --git a/src/docs/swagger.yaml b/src/docs/swagger.yaml index f60351d..540f829 100644 --- a/src/docs/swagger.yaml +++ b/src/docs/swagger.yaml @@ -153,6 +153,8 @@ definitions: type: array sticker: type: string + text_mode: + type: string type: object api.TrustIdentityRequest: properties: @@ -946,6 +948,10 @@ paths: name: device_name required: true type: string + - description: QRCode Version (defaults to 10) + in: query + name: qrcode_version + type: integer produces: - application/json responses: @@ -1034,6 +1040,10 @@ paths: in: query name: ignore_stories type: string + - description: 'Specify the maximum number of messages to receive (default: unlimited)' + in: query + name: max_messages + type: string produces: - application/json responses: