mirror of
https://github.com/aljazceru/signal-cli-rest-api.git
synced 2025-12-19 15:44:28 +01:00
extended unregister API endpoint
* added possibility to delete the local data with the "deleteLocalAccountData" signal-cli command see #242
This commit is contained in:
@@ -70,6 +70,7 @@ type RegisterNumberRequest struct {
|
|||||||
|
|
||||||
type UnregisterNumberRequest struct {
|
type UnregisterNumberRequest struct {
|
||||||
DeleteAccount bool `json:"delete_account" example:"false"`
|
DeleteAccount bool `json:"delete_account" example:"false"`
|
||||||
|
DeleteLocalData bool `json:"delete_local_data" example:"false"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type VerifyNumberSettings struct {
|
type VerifyNumberSettings struct {
|
||||||
@@ -223,6 +224,7 @@ func (a *Api) UnregisterNumber(c *gin.Context) {
|
|||||||
number := c.Param("number")
|
number := c.Param("number")
|
||||||
|
|
||||||
deleteAccount := false
|
deleteAccount := false
|
||||||
|
deleteLocalData := false
|
||||||
buf := new(bytes.Buffer)
|
buf := new(bytes.Buffer)
|
||||||
buf.ReadFrom(c.Request.Body)
|
buf.ReadFrom(c.Request.Body)
|
||||||
if buf.String() != "" {
|
if buf.String() != "" {
|
||||||
@@ -234,9 +236,10 @@ func (a *Api) UnregisterNumber(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
deleteAccount = req.DeleteAccount
|
deleteAccount = req.DeleteAccount
|
||||||
|
deleteLocalData = req.DeleteLocalData
|
||||||
}
|
}
|
||||||
|
|
||||||
err := a.signalClient.UnregisterNumber(number, deleteAccount)
|
err := a.signalClient.UnregisterNumber(number, deleteAccount, deleteLocalData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(400, gin.H{"error": err.Error()})
|
c.JSON(400, gin.H{"error": err.Error()})
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
securejoin "github.com/cyphar/filepath-securejoin"
|
securejoin "github.com/cyphar/filepath-securejoin"
|
||||||
"github.com/gabriel-vasile/mimetype"
|
"github.com/gabriel-vasile/mimetype"
|
||||||
@@ -427,7 +428,7 @@ func (s *SignalClient) RegisterNumber(number string, useVoice bool, captcha stri
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SignalClient) UnregisterNumber(number string, deleteAccount bool) error {
|
func (s *SignalClient) UnregisterNumber(number string, deleteAccount bool, deleteLocalData bool) error {
|
||||||
if s.signalCliMode == JsonRpc {
|
if s.signalCliMode == JsonRpc {
|
||||||
return errors.New("This functionality is only available in normal/native mode!")
|
return errors.New("This functionality is only available in normal/native mode!")
|
||||||
}
|
}
|
||||||
@@ -438,6 +439,17 @@ func (s *SignalClient) UnregisterNumber(number string, deleteAccount bool) error
|
|||||||
}
|
}
|
||||||
|
|
||||||
_, err := s.cliClient.Execute(true, command, "")
|
_, err := s.cliClient.Execute(true, command, "")
|
||||||
|
|
||||||
|
if deleteLocalData {
|
||||||
|
command := []string{"--config", s.signalCliConfig, "-a", number, "deleteLocalAccountData"}
|
||||||
|
_, err2 := s.cliClient.Execute(true, command, "")
|
||||||
|
if (err2 != nil) && (err != nil) {
|
||||||
|
err = fmt.Errorf("%w (%w)", err, err2)
|
||||||
|
} else if (err2 != nil) && (err == nil) {
|
||||||
|
err = err2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user