made qrcode version configureable via query parameter (e.g

?qrcode_version=11)

see #402
This commit is contained in:
Bernhard B
2023-09-08 22:45:50 +02:00
parent 1ba1418e14
commit 35e2e903df
5 changed files with 55 additions and 3 deletions

View File

@@ -836,17 +836,29 @@ func (a *Api) DeleteGroup(c *gin.Context) {
// @Produce json // @Produce json
// @Success 200 {string} string "Image" // @Success 200 {string} string "Image"
// @Param device_name query string true "Device Name" // @Param device_name query string true "Device Name"
// @Param qrcode_version query int false "QRCode Version (defaults to 10)"
// @Failure 400 {object} Error // @Failure 400 {object} Error
// @Router /v1/qrcodelink [get] // @Router /v1/qrcodelink [get]
func (a *Api) GetQrCodeLink(c *gin.Context) { func (a *Api) GetQrCodeLink(c *gin.Context) {
deviceName := c.Query("device_name") deviceName := c.Query("device_name")
qrCodeVersion := c.Query("qrcode_version")
if deviceName == "" { if deviceName == "" {
c.JSON(400, Error{Msg: "Please provide a name for the device"}) c.JSON(400, Error{Msg: "Please provide a name for the device"})
return 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 { if err != nil {
c.JSON(400, Error{Msg: err.Error()}) c.JSON(400, Error{Msg: err.Error()})
return return

View File

@@ -935,7 +935,7 @@ func (s *SignalClient) DeleteGroup(number string, groupId string) error {
return err return err
} }
func (s *SignalClient) GetQrCodeLink(deviceName string) ([]byte, error) { func (s *SignalClient) GetQrCodeLink(deviceName string, qrCodeVersion int) ([]byte, error) {
if s.signalCliMode == JsonRpc { if s.signalCliMode == JsonRpc {
return []byte{}, errors.New(endpointNotSupportedInJsonRpcMode) 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()) 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 { if err != nil {
return []byte{}, errors.New("Couldn't create QR code: " + err.Error()) return []byte{}, errors.New("Couldn't create QR code: " + err.Error())
} }

View File

@@ -1026,6 +1026,12 @@ var doc = `{
"name": "device_name", "name": "device_name",
"in": "query", "in": "query",
"required": true "required": true
},
{
"type": "integer",
"description": "QRCode Version (defaults to 10)",
"name": "qrcode_version",
"in": "query"
} }
], ],
"responses": { "responses": {
@@ -1160,6 +1166,12 @@ var doc = `{
"description": "Specify whether stories should be ignored when receiving messages", "description": "Specify whether stories should be ignored when receiving messages",
"name": "ignore_stories", "name": "ignore_stories",
"in": "query" "in": "query"
},
{
"type": "string",
"description": "Specify the maximum number of messages to receive (default: unlimited)",
"name": "max_messages",
"in": "query"
} }
], ],
"responses": { "responses": {
@@ -1773,6 +1785,9 @@ var doc = `{
}, },
"sticker": { "sticker": {
"type": "string" "type": "string"
},
"text_mode": {
"type": "string"
} }
} }
}, },

View File

@@ -1010,6 +1010,12 @@
"name": "device_name", "name": "device_name",
"in": "query", "in": "query",
"required": true "required": true
},
{
"type": "integer",
"description": "QRCode Version (defaults to 10)",
"name": "qrcode_version",
"in": "query"
} }
], ],
"responses": { "responses": {
@@ -1144,6 +1150,12 @@
"description": "Specify whether stories should be ignored when receiving messages", "description": "Specify whether stories should be ignored when receiving messages",
"name": "ignore_stories", "name": "ignore_stories",
"in": "query" "in": "query"
},
{
"type": "string",
"description": "Specify the maximum number of messages to receive (default: unlimited)",
"name": "max_messages",
"in": "query"
} }
], ],
"responses": { "responses": {
@@ -1757,6 +1769,9 @@
}, },
"sticker": { "sticker": {
"type": "string" "type": "string"
},
"text_mode": {
"type": "string"
} }
} }
}, },

View File

@@ -153,6 +153,8 @@ definitions:
type: array type: array
sticker: sticker:
type: string type: string
text_mode:
type: string
type: object type: object
api.TrustIdentityRequest: api.TrustIdentityRequest:
properties: properties:
@@ -946,6 +948,10 @@ paths:
name: device_name name: device_name
required: true required: true
type: string type: string
- description: QRCode Version (defaults to 10)
in: query
name: qrcode_version
type: integer
produces: produces:
- application/json - application/json
responses: responses:
@@ -1034,6 +1040,10 @@ paths:
in: query in: query
name: ignore_stories name: ignore_stories
type: string type: string
- description: 'Specify the maximum number of messages to receive (default: unlimited)'
in: query
name: max_messages
type: string
produces: produces:
- application/json - application/json
responses: responses: