Skip to content

Commit

Permalink
Add support for uploading media in Messenger mode
Browse files Browse the repository at this point in the history
  • Loading branch information
tulir committed Feb 8, 2024
1 parent 62a74a5 commit 0ef58f1
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
2 changes: 2 additions & 0 deletions binary/armadillo/waConsumerApplication/extra.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"go.mau.fi/whatsmeow/binary/armadillo/waMediaTransport"
)

type ConsumerApplication_Content_Content = isConsumerApplication_Content_Content

func (*ConsumerApplication) IsMessageApplicationSub() {}

const (
Expand Down
14 changes: 13 additions & 1 deletion upload.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ type UploadResponse struct {
URL string `json:"url"`
DirectPath string `json:"direct_path"`
Handle string `json:"handle"`
ObjectID string `json:"object_id"`

MediaKey []byte `json:"-"`
FileEncSHA256 []byte `json:"-"`
Expand Down Expand Up @@ -141,13 +142,24 @@ func (cli *Client) rawUpload(ctx context.Context, dataToUpload, fileHash []byte,
}
mmsType := mediaTypeToMMSType[appInfo]
uploadPrefix := "mms"
if cli.MessengerConfig != nil {
uploadPrefix = "wa-msgr/mms"
}
if newsletter {
mmsType = fmt.Sprintf("newsletter-%s", mmsType)
uploadPrefix = "newsletter"
}
var host string
// Hacky hack to prefer last option (rupload.facebook.com) for messenger uploads.
// For some reason, the primary host doesn't work, even though it has the <upload/> tag.
if cli.MessengerConfig != nil {
host = mediaConn.Hosts[len(mediaConn.Hosts)-1].Hostname
} else {
host = mediaConn.Hosts[0].Hostname
}
uploadURL := url.URL{
Scheme: "https",
Host: mediaConn.Hosts[0].Hostname,
Host: host,
Path: fmt.Sprintf("/%s/%s/%s", uploadPrefix, mmsType, token),
RawQuery: q.Encode(),
}
Expand Down

0 comments on commit 0ef58f1

Please sign in to comment.