@@ -1288,6 +1288,57 @@ func (s *SignalClient) GetGroup(number string, groupId string) (*GroupEntry, err
12881288 return nil , nil
12891289}
12901290
1291+ func (s * SignalClient ) GetGroupAvatar (number string , groupId string ) ([]byte , error ) {
1292+ var err error
1293+ var rawData string
1294+
1295+ internalGroupId , err := ConvertGroupIdToInternalGroupId (groupId )
1296+ if err != nil {
1297+ return []byte {}, errors .New ("Invalid group id" )
1298+ }
1299+
1300+ if s .signalCliMode == JsonRpc {
1301+ type Request struct {
1302+ GroupId string `json:"groupId"`
1303+ }
1304+
1305+ request := Request {GroupId : internalGroupId }
1306+
1307+ jsonRpc2Client , err := s .getJsonRpc2Client ()
1308+ if err != nil {
1309+ return []byte {}, err
1310+ }
1311+ rawData , err = jsonRpc2Client .getRaw ("getAvatar" , & number , request )
1312+ if err != nil {
1313+ if err .Error () == "Could not find avatar" {
1314+ return []byte {},& NotFoundError {Description : "No avatar found." }
1315+ }
1316+ return []byte {}, err
1317+ }
1318+ } else {
1319+ rawData , err = s .cliClient .Execute (true , []string {"--config" , s .signalCliConfig , "-o" , "json" , "-a" , number , "getAvatar" , "-g" , internalGroupId }, "" )
1320+ if err != nil {
1321+ return []byte {}, err
1322+ }
1323+ }
1324+
1325+ type SignalCliResponse struct {
1326+ Data string `json:"data"`
1327+ }
1328+ var signalCliResponse SignalCliResponse
1329+ err = json .Unmarshal ([]byte (rawData ), & signalCliResponse )
1330+ if err != nil {
1331+ return []byte {}, errors .New ("Couldn't unmarshal data: " + err .Error ())
1332+ }
1333+
1334+ groupAvatarBytes , err := base64 .StdEncoding .DecodeString (signalCliResponse .Data )
1335+ if err != nil {
1336+ return []byte {}, errors .New ("Couldn't decode base64 encoded group avatar: " + err .Error ())
1337+ }
1338+
1339+ return groupAvatarBytes , nil
1340+ }
1341+
12911342func (s * SignalClient ) DeleteGroup (number string , groupId string ) error {
12921343 if s .signalCliMode == JsonRpc {
12931344 type Request struct {
0 commit comments