mirror of
https://github.com/aljazceru/signal-cli-rest-api.git
synced 2025-12-19 15:44:28 +01:00
add stickers support in API and client
This commit is contained in:
@@ -60,9 +60,9 @@ func (g GroupLinkState) String() string {
|
||||
}
|
||||
|
||||
type MessageMention struct {
|
||||
Start int64 `json:"start"`
|
||||
Length int64 `json:"length"`
|
||||
Author string `json:"author"`
|
||||
Start int64 `json:"start"`
|
||||
Length int64 `json:"length"`
|
||||
Author string `json:"author"`
|
||||
}
|
||||
|
||||
type GroupEntry struct {
|
||||
@@ -122,11 +122,11 @@ type SendResponse struct {
|
||||
}
|
||||
|
||||
type About struct {
|
||||
SupportedApiVersions []string `json:"versions"`
|
||||
BuildNr int `json:"build"`
|
||||
Mode string `json:"mode"`
|
||||
Version string `json:"version"`
|
||||
Capabilities map[string][]string `json:"capabilities"`
|
||||
SupportedApiVersions []string `json:"versions"`
|
||||
BuildNr int `json:"build"`
|
||||
Mode string `json:"mode"`
|
||||
Version string `json:"version"`
|
||||
Capabilities map[string][]string `json:"capabilities"`
|
||||
}
|
||||
|
||||
type SearchResultEntry struct {
|
||||
@@ -290,11 +290,11 @@ func (s *SignalClient) Init() error {
|
||||
}
|
||||
|
||||
func (s *MessageMention) toString() string {
|
||||
return fmt.Sprintf("%d:%d:%s", s.Start, s.Length, s.Author)
|
||||
return fmt.Sprintf("%d:%d:%s", s.Start, s.Length, s.Author)
|
||||
}
|
||||
|
||||
func (s *SignalClient) send(number string, message string,
|
||||
recipients []string, base64Attachments []string, isGroup bool, mentions []MessageMention,
|
||||
recipients []string, base64Attachments []string, isGroup bool, sticker string, mentions []MessageMention,
|
||||
quoteTimestamp *int64, quoteAuthor *string, quoteMessage *string, quoteMentions []MessageMention) (*SendResponse, error) {
|
||||
|
||||
var resp SendResponse
|
||||
@@ -336,15 +336,16 @@ func (s *SignalClient) send(number string, message string,
|
||||
}
|
||||
|
||||
type Request struct {
|
||||
Recipients []string `json:"recipient,omitempty"`
|
||||
Message string `json:"message"`
|
||||
GroupId string `json:"group-id,omitempty"`
|
||||
Attachments []string `json:"attachment,omitempty"`
|
||||
Mentions []string `json:"mentions,omitempty"`
|
||||
QuoteTimestamp *int64 `json:"quote-timestamp,omitempty"`
|
||||
QuoteAuthor *string `json:"quote-author,omitempty"`
|
||||
QuoteMessage *string `json:"quote-message,omitempty"`
|
||||
QuoteMentions []string `json:"quote-mentions,omitempty"`
|
||||
Recipients []string `json:"recipient,omitempty"`
|
||||
Message string `json:"message"`
|
||||
GroupId string `json:"group-id,omitempty"`
|
||||
Attachments []string `json:"attachment,omitempty"`
|
||||
Sticker string `json:"sticker,omitempty"`
|
||||
Mentions []string `json:"mentions,omitempty"`
|
||||
QuoteTimestamp *int64 `json:"quote-timestamp,omitempty"`
|
||||
QuoteAuthor *string `json:"quote-author,omitempty"`
|
||||
QuoteMessage *string `json:"quote-message,omitempty"`
|
||||
QuoteMentions []string `json:"quote-mentions,omitempty"`
|
||||
}
|
||||
|
||||
request := Request{Message: message}
|
||||
@@ -356,24 +357,26 @@ func (s *SignalClient) send(number string, message string,
|
||||
for _, attachmentEntry := range attachmentEntries {
|
||||
request.Attachments = append(request.Attachments, attachmentEntry.toDataForSignal())
|
||||
}
|
||||
|
||||
request.Sticker = sticker
|
||||
if mentions != nil {
|
||||
request.Mentions = make([]string, len(mentions))
|
||||
for i, mention := range mentions {
|
||||
request.Mentions[i] = mention.toString()
|
||||
}
|
||||
request.Mentions = make([]string, len(mentions))
|
||||
for i, mention := range mentions {
|
||||
request.Mentions[i] = mention.toString()
|
||||
}
|
||||
} else {
|
||||
request.Mentions = nil
|
||||
request.Mentions = nil
|
||||
}
|
||||
request.QuoteTimestamp = quoteTimestamp
|
||||
request.QuoteAuthor = quoteAuthor
|
||||
request.QuoteMessage = quoteMessage
|
||||
if quoteMentions != nil {
|
||||
request.QuoteMentions = make([]string, len(quoteMentions))
|
||||
for i, mention := range quoteMentions {
|
||||
request.QuoteMentions[i] = mention.toString()
|
||||
}
|
||||
request.QuoteMentions = make([]string, len(quoteMentions))
|
||||
for i, mention := range quoteMentions {
|
||||
request.QuoteMentions[i] = mention.toString()
|
||||
}
|
||||
} else {
|
||||
request.QuoteMentions = nil
|
||||
request.QuoteMentions = nil
|
||||
}
|
||||
|
||||
rawData, err := jsonRpc2Client.getRaw("send", request)
|
||||
@@ -409,6 +412,11 @@ func (s *SignalClient) send(number string, message string,
|
||||
cmd = append(cmd, mention.toString())
|
||||
}
|
||||
|
||||
if sticker != "" {
|
||||
cmd = append(cmd, "--sticker")
|
||||
cmd = append(cmd, sticker)
|
||||
}
|
||||
|
||||
if quoteTimestamp != nil {
|
||||
cmd = append(cmd, "--quote-timestamp")
|
||||
cmd = append(cmd, strconv.FormatInt(*quoteTimestamp, 10))
|
||||
@@ -519,7 +527,7 @@ func (s *SignalClient) VerifyRegisteredNumber(number string, token string, pin s
|
||||
}
|
||||
|
||||
func (s *SignalClient) SendV1(number string, message string, recipients []string, base64Attachments []string, isGroup bool) (*SendResponse, error) {
|
||||
timestamp, err := s.send(number, message, recipients, base64Attachments, isGroup, nil, nil, nil, nil, nil)
|
||||
timestamp, err := s.send(number, message, recipients, base64Attachments, isGroup, "", nil, nil, nil, nil, nil)
|
||||
return timestamp, err
|
||||
}
|
||||
|
||||
@@ -538,7 +546,7 @@ func (s *SignalClient) getJsonRpc2Clients() []*JsonRpc2Client {
|
||||
return jsonRpc2Clients
|
||||
}
|
||||
|
||||
func (s *SignalClient) SendV2(number string, message string, recps []string, base64Attachments []string, mentions []MessageMention,
|
||||
func (s *SignalClient) SendV2(number string, message string, recps []string, base64Attachments []string, sticker string, mentions []MessageMention,
|
||||
quoteTimestamp *int64, quoteAuthor *string, quoteMessage *string, quoteMentions []MessageMention) (*[]SendResponse, error) {
|
||||
if len(recps) == 0 {
|
||||
return nil, errors.New("Please provide at least one recipient")
|
||||
@@ -569,7 +577,7 @@ func (s *SignalClient) SendV2(number string, message string, recps []string, bas
|
||||
|
||||
timestamps := []SendResponse{}
|
||||
for _, group := range groups {
|
||||
timestamp, err := s.send(number, message, []string{group}, base64Attachments, true, mentions, quoteTimestamp, quoteAuthor, quoteMessage, quoteMentions)
|
||||
timestamp, err := s.send(number, message, []string{group}, base64Attachments, true, sticker, mentions, quoteTimestamp, quoteAuthor, quoteMessage, quoteMentions)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -577,7 +585,7 @@ func (s *SignalClient) SendV2(number string, message string, recps []string, bas
|
||||
}
|
||||
|
||||
if len(recipients) > 0 {
|
||||
timestamp, err := s.send(number, message, recipients, base64Attachments, false, mentions, quoteTimestamp, quoteAuthor, quoteMessage, quoteMentions)
|
||||
timestamp, err := s.send(number, message, recipients, base64Attachments, false, sticker, mentions, quoteTimestamp, quoteAuthor, quoteMessage, quoteMentions)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user