Merge pull request #39 from scelaris/pr1
protonmail: Fix sending messages after API update.
This commit is contained in:
commit
d807968415
|
@ -31,6 +31,7 @@ type Address struct {
|
|||
Receive int
|
||||
Status AddressStatus
|
||||
Type AddressType
|
||||
Order int
|
||||
DisplayName string
|
||||
Signature string // HTML
|
||||
HasKeys int
|
||||
|
|
|
@ -403,7 +403,7 @@ type MessagePackageSet struct {
|
|||
Body string // Encrypted body data packet
|
||||
|
||||
// Only if cleartext is sent
|
||||
BodyKey string
|
||||
BodyKey *MessageBodyKey `json:",omitempty"`
|
||||
AttachmentKeys map[string]string
|
||||
|
||||
bodyKey *packet.EncryptedKey
|
||||
|
@ -411,6 +411,11 @@ type MessagePackageSet struct {
|
|||
signature int
|
||||
}
|
||||
|
||||
type MessageBodyKey struct {
|
||||
Algorithm string
|
||||
Key string
|
||||
}
|
||||
|
||||
func NewMessagePackageSet(attachmentKeys map[string]*packet.EncryptedKey) *MessagePackageSet {
|
||||
return &MessagePackageSet{
|
||||
Addresses: make(map[string]*MessagePackage),
|
||||
|
@ -494,8 +499,11 @@ func (set *MessagePackageSet) AddCleartext(addr string) (*MessagePackage, error)
|
|||
set.Addresses[addr] = pkg
|
||||
set.Type |= MessagePackageCleartext
|
||||
|
||||
if set.BodyKey == "" || set.AttachmentKeys == nil {
|
||||
set.BodyKey = base64.StdEncoding.EncodeToString(set.bodyKey.Key)
|
||||
if set.BodyKey == nil || set.AttachmentKeys == nil {
|
||||
set.BodyKey = &MessageBodyKey{
|
||||
Algorithm: "aes256",
|
||||
Key: base64.StdEncoding.EncodeToString(set.bodyKey.Key),
|
||||
}
|
||||
|
||||
set.AttachmentKeys = make(map[string]string, len(set.attachmentKeys))
|
||||
for att, key := range set.attachmentKeys {
|
||||
|
@ -563,7 +571,7 @@ type OutgoingMessage struct {
|
|||
}
|
||||
|
||||
func (c *Client) SendMessage(msg *OutgoingMessage) (sent, parent *Message, err error) {
|
||||
req, err := c.newJSONRequest(http.MethodPost, "/messages/send/"+msg.ID, msg)
|
||||
req, err := c.newJSONRequest(http.MethodPost, "/messages/"+msg.ID, msg)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
|
|
@ -70,13 +70,28 @@ func (c *Client) GetCurrentUser() (*User, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
var respData struct {
|
||||
var userData struct {
|
||||
resp
|
||||
User *User
|
||||
}
|
||||
if err := c.doJSON(req, &respData); err != nil {
|
||||
if err := c.doJSON(req, &userData); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return respData.User, nil
|
||||
req, err = c.newRequest(http.MethodGet, "/addresses", nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var addrData struct {
|
||||
resp
|
||||
Addresses []*Address
|
||||
}
|
||||
if err := c.doJSON(req, &addrData); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
userData.User.Addresses = addrData.Addresses
|
||||
|
||||
return userData.User, nil
|
||||
}
|
||||
|
|
|
@ -95,6 +95,11 @@ func (u *user) Send(from string, to []string, r io.Reader) error {
|
|||
return errors.New("sender address key hasn't been decrypted")
|
||||
}
|
||||
|
||||
senderAddress := &protonmail.MessageAddress{
|
||||
Address: fromAddr.Email,
|
||||
Name: fromAddr.DisplayName,
|
||||
}
|
||||
|
||||
msg := &protonmail.Message{
|
||||
ToList: toPMAddressList(toList),
|
||||
CCList: toPMAddressList(ccList),
|
||||
|
@ -102,6 +107,7 @@ func (u *user) Send(from string, to []string, r io.Reader) error {
|
|||
Subject: subject,
|
||||
Header: formatHeader(mr.Header),
|
||||
AddressID: fromAddr.ID,
|
||||
Sender: senderAddress,
|
||||
}
|
||||
|
||||
// Create an empty draft
|
||||
|
|
Loading…
Reference in New Issue