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