forked from Silverfish/proton-bridge
Update routes to API v4
This commit is contained in:
@ -34,6 +34,7 @@ Changelog [format](http://keepachangelog.com/en/1.0.0/)
|
|||||||
* golang.org/x/text v0.3.2 -> v0.3.3
|
* golang.org/x/text v0.3.2 -> v0.3.3
|
||||||
* Set first-start to false in bridge, not in frontend.
|
* Set first-start to false in bridge, not in frontend.
|
||||||
* GODT-400 Refactor sendingInfo.
|
* GODT-400 Refactor sendingInfo.
|
||||||
|
* GODT-513 Update routes to API v4.
|
||||||
|
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
@ -15,8 +15,8 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>.
|
// along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
// Code generated by ./credits.sh at Wed 29 Jul 2020 10:20:09 AM CEST. DO NOT EDIT.
|
// Code generated by ./credits.sh at Thu Aug 27 08:22:31 CEST 2020. DO NOT EDIT.
|
||||||
|
|
||||||
package bridge
|
package bridge
|
||||||
|
|
||||||
const Credits = "github.com/0xAX/notificator;github.com/abiosoft/ishell;github.com/abiosoft/readline;github.com/allan-simon/go-singleinstance;github.com/andybalholm/cascadia;github.com/certifi/gocertifi;github.com/chzyer/logex;github.com/chzyer/test;github.com/cucumber/godog;github.com/docker/docker-credential-helpers;github.com/emersion/go-imap;github.com/emersion/go-imap-appendlimit;github.com/emersion/go-imap-idle;github.com/emersion/go-imap-move;github.com/emersion/go-imap-quota;github.com/emersion/go-imap-specialuse;github.com/emersion/go-imap-unselect;github.com/emersion/go-sasl;github.com/emersion/go-smtp;github.com/emersion/go-textwrapper;github.com/emersion/go-vcard;github.com/fatih/color;github.com/flynn-archive/go-shlex;github.com/getsentry/raven-go;github.com/golang/mock;github.com/google/go-cmp;github.com/google/uuid;github.com/gopherjs/gopherjs;github.com/go-resty/resty/v2;github.com/hashicorp/go-multierror;github.com/jameskeane/bcrypt;github.com/jaytaylor/html2text;github.com/jhillyerd/enmime;github.com/kardianos/osext;github.com/keybase/go-keychain;github.com/logrusorgru/aurora;github.com/mattn/go-runewidth;github.com/miekg/dns;github.com/myesui/uuid;github.com/nsf/jsondiff;github.com/olekukonko/tablewriter;github.com/pkg/errors;github.com/ProtonMail/bcrypt;github.com/ProtonMail/crypto;github.com/ProtonMail/docker-credential-helpers;github.com/ProtonMail/go-appdir;github.com/ProtonMail/go-apple-mobileconfig;github.com/ProtonMail/go-autostart;github.com/ProtonMail/go-imap-id;github.com/ProtonMail/gopenpgp/v2;github.com/ProtonMail/go-smtp;github.com/ProtonMail/go-vcard;github.com/sirupsen/logrus;github.com/skratchdot/open-golang;github.com/stretchr/testify;github.com/therecipe/qt;github.com/twinj/uuid;github.com/urfave/cli;go.etcd.io/bbolt;golang.org/x/crypto;golang.org/x/net;golang.org/x/text;gopkg.in/stretchr/testify.v1;;Font Awesome 4.7.0;;Qt 5.13 by Qt group;"
|
const Credits = "github.com/0xAX/notificator;github.com/ProtonMail/bcrypt;github.com/ProtonMail/crypto;github.com/ProtonMail/docker-credential-helpers;github.com/ProtonMail/go-appdir;github.com/ProtonMail/go-apple-mobileconfig;github.com/ProtonMail/go-autostart;github.com/ProtonMail/go-imap-id;github.com/ProtonMail/go-smtp;github.com/ProtonMail/go-vcard;github.com/ProtonMail/gopenpgp/v2;github.com/abiosoft/ishell;github.com/abiosoft/readline;github.com/allan-simon/go-singleinstance;github.com/andybalholm/cascadia;github.com/certifi/gocertifi;github.com/chzyer/logex;github.com/chzyer/test;github.com/cucumber/godog;github.com/docker/docker-credential-helpers;github.com/emersion/go-imap;github.com/emersion/go-imap-appendlimit;github.com/emersion/go-imap-idle;github.com/emersion/go-imap-move;github.com/emersion/go-imap-quota;github.com/emersion/go-imap-specialuse;github.com/emersion/go-imap-unselect;github.com/emersion/go-sasl;github.com/emersion/go-smtp;github.com/emersion/go-textwrapper;github.com/emersion/go-vcard;github.com/fatih/color;github.com/flynn-archive/go-shlex;github.com/getsentry/raven-go;github.com/go-resty/resty/v2;github.com/golang/mock;github.com/google/go-cmp;github.com/google/uuid;github.com/gopherjs/gopherjs;github.com/hashicorp/go-multierror;github.com/jameshoulahan/go-imap;github.com/jameskeane/bcrypt;github.com/jaytaylor/html2text;github.com/jhillyerd/enmime;github.com/kardianos/osext;github.com/keybase/go-keychain;github.com/logrusorgru/aurora;github.com/mattn/go-runewidth;github.com/miekg/dns;github.com/myesui/uuid;github.com/nsf/jsondiff;github.com/olekukonko/tablewriter;github.com/pkg/errors;github.com/sirupsen/logrus;github.com/skratchdot/open-golang;github.com/stretchr/testify;github.com/therecipe/qt;github.com/twinj/uuid;github.com/urfave/cli;go.etcd.io/bbolt;golang.org/x/crypto;golang.org/x/net;golang.org/x/text;gopkg.in/stretchr/testify.v1;;Font Awesome 4.7.0;;Qt 5.13 by Qt group;"
|
||||||
|
|||||||
@ -179,7 +179,7 @@ func writeAttachment(w *multipart.Writer, att *Attachment, r io.Reader, sig io.R
|
|||||||
//
|
//
|
||||||
// The returned created attachment contains the new attachment ID and its size.
|
// The returned created attachment contains the new attachment ID and its size.
|
||||||
func (c *client) CreateAttachment(att *Attachment, r io.Reader, sig io.Reader) (created *Attachment, err error) {
|
func (c *client) CreateAttachment(att *Attachment, r io.Reader, sig io.Reader) (created *Attachment, err error) {
|
||||||
req, w, err := c.NewMultipartRequest("POST", "/attachments")
|
req, w, err := c.NewMultipartRequest("POST", "/mail/v4/attachments")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -213,7 +213,7 @@ type UpdateAttachmentSignatureReq struct {
|
|||||||
|
|
||||||
func (c *client) UpdateAttachmentSignature(attachmentID, signature string) (err error) {
|
func (c *client) UpdateAttachmentSignature(attachmentID, signature string) (err error) {
|
||||||
updateReq := &UpdateAttachmentSignatureReq{signature}
|
updateReq := &UpdateAttachmentSignatureReq{signature}
|
||||||
req, err := c.NewJSONRequest("PUT", "/attachments/"+attachmentID+"/signature", updateReq)
|
req, err := c.NewJSONRequest("PUT", "/mail/v4/attachments/"+attachmentID+"/signature", updateReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -228,7 +228,7 @@ func (c *client) UpdateAttachmentSignature(attachmentID, signature string) (err
|
|||||||
|
|
||||||
// DeleteAttachment removes an attachment. message is the message ID, att is the attachment ID.
|
// DeleteAttachment removes an attachment. message is the message ID, att is the attachment ID.
|
||||||
func (c *client) DeleteAttachment(attID string) (err error) {
|
func (c *client) DeleteAttachment(attID string) (err error) {
|
||||||
req, err := c.NewRequest("DELETE", "/attachments/"+attID, nil)
|
req, err := c.NewRequest("DELETE", "/mail/v4/attachments/"+attID, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -249,7 +249,7 @@ func (c *client) GetAttachment(id string) (att io.ReadCloser, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
req, err := c.NewRequest("GET", "/attachments/"+id, nil)
|
req, err := c.NewRequest("GET", "/mail/v4/attachments/"+id, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@ -95,7 +95,7 @@ func TestAttachment_UnmarshalJSON(t *testing.T) {
|
|||||||
|
|
||||||
func TestClient_CreateAttachment(t *testing.T) {
|
func TestClient_CreateAttachment(t *testing.T) {
|
||||||
s, c := newTestServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
s, c := newTestServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
Ok(t, checkMethodAndPath(r, "POST", "/attachments"))
|
Ok(t, checkMethodAndPath(r, "POST", "/mail/v4/attachments"))
|
||||||
|
|
||||||
contentType, params, err := pmmime.ParseMediaType(r.Header.Get("Content-Type"))
|
contentType, params, err := pmmime.ParseMediaType(r.Header.Get("Content-Type"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -153,7 +153,7 @@ func TestClient_CreateAttachment(t *testing.T) {
|
|||||||
|
|
||||||
func TestClient_DeleteAttachment(t *testing.T) {
|
func TestClient_DeleteAttachment(t *testing.T) {
|
||||||
s, c := newTestServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
s, c := newTestServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
Ok(t, checkMethodAndPath(r, "DELETE", "/attachments/"+testAttachment.ID))
|
Ok(t, checkMethodAndPath(r, "DELETE", "/mail/v4/attachments/"+testAttachment.ID))
|
||||||
|
|
||||||
b := &bytes.Buffer{}
|
b := &bytes.Buffer{}
|
||||||
if n, _ := b.ReadFrom(r.Body); n != 0 {
|
if n, _ := b.ReadFrom(r.Body); n != 0 {
|
||||||
@ -172,7 +172,7 @@ func TestClient_DeleteAttachment(t *testing.T) {
|
|||||||
|
|
||||||
func TestClient_GetAttachment(t *testing.T) {
|
func TestClient_GetAttachment(t *testing.T) {
|
||||||
s, c := newTestServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
s, c := newTestServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
Ok(t, checkMethodAndPath(r, "GET", "/attachments/"+testAttachment.ID))
|
Ok(t, checkMethodAndPath(r, "GET", "/mail/v4/attachments/"+testAttachment.ID))
|
||||||
|
|
||||||
fmt.Fprint(w, testAttachmentCleartext)
|
fmt.Fprint(w, testAttachmentCleartext)
|
||||||
}))
|
}))
|
||||||
|
|||||||
@ -236,7 +236,6 @@ func (c *client) doBuffered(req *http.Request, bodyBuffer []byte, retryUnauthori
|
|||||||
|
|
||||||
req.Header.Set("User-Agent", c.cm.config.UserAgent)
|
req.Header.Set("User-Agent", c.cm.config.UserAgent)
|
||||||
req.Header.Set("x-pm-appversion", c.cm.config.AppVersion)
|
req.Header.Set("x-pm-appversion", c.cm.config.AppVersion)
|
||||||
req.Header.Set("x-pm-apiversion", strconv.Itoa(Version))
|
|
||||||
|
|
||||||
if c.uid != "" {
|
if c.uid != "" {
|
||||||
req.Header.Set("x-pm-uid", c.uid)
|
req.Header.Set("x-pm-uid", c.uid)
|
||||||
|
|||||||
@ -74,9 +74,6 @@ func TestClient_Do(t *testing.T) {
|
|||||||
if h.Get("x-pm-appversion") != testClientConfig.AppVersion {
|
if h.Get("x-pm-appversion") != testClientConfig.AppVersion {
|
||||||
t.Fatalf("Invalid app version header: expected %v, got %v", testClientConfig.AppVersion, h.Get("x-pm-appversion"))
|
t.Fatalf("Invalid app version header: expected %v, got %v", testClientConfig.AppVersion, h.Get("x-pm-appversion"))
|
||||||
}
|
}
|
||||||
if h.Get("x-pm-apiversion") != fmt.Sprintf("%v", Version) {
|
|
||||||
t.Fatalf("Invalid api version header: expected %v, got %v", Version, h.Get("x-pm-apiversion"))
|
|
||||||
}
|
|
||||||
if h.Get("x-pm-uid") != "" {
|
if h.Get("x-pm-uid") != "" {
|
||||||
t.Fatalf("Expected no uid header when not authenticated, got %v", h.Get("x-pm-uid"))
|
t.Fatalf("Expected no uid header when not authenticated, got %v", h.Get("x-pm-uid"))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,7 +32,7 @@ type Conversation struct{}
|
|||||||
|
|
||||||
// CountConversations counts conversations by label.
|
// CountConversations counts conversations by label.
|
||||||
func (c *client) CountConversations(addressID string) (counts []*ConversationsCount, err error) {
|
func (c *client) CountConversations(addressID string) (counts []*ConversationsCount, err error) {
|
||||||
reqURL := "/conversations/count"
|
reqURL := "/mail/v4/conversations/count"
|
||||||
if addressID != "" {
|
if addressID != "" {
|
||||||
reqURL += ("?AddressID=" + addressID)
|
reqURL += ("?AddressID=" + addressID)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -120,7 +120,7 @@ type ImportMsgRes struct {
|
|||||||
func (c *client) Import(reqs []*ImportMsgReq) (resps []*ImportMsgRes, err error) {
|
func (c *client) Import(reqs []*ImportMsgReq) (resps []*ImportMsgRes, err error) {
|
||||||
importReq := &ImportReq{Messages: reqs}
|
importReq := &ImportReq{Messages: reqs}
|
||||||
|
|
||||||
req, w, err := c.NewMultipartRequest("POST", "/import")
|
req, w, err := c.NewMultipartRequest("POST", "/mail/v4/messages/import")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,7 +55,7 @@ var testImportRes = &ImportMsgRes{
|
|||||||
|
|
||||||
func TestClient_Import(t *testing.T) { // nolint[funlen]
|
func TestClient_Import(t *testing.T) { // nolint[funlen]
|
||||||
s, c := newTestServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
s, c := newTestServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
Ok(t, checkMethodAndPath(r, "POST", "/import"))
|
Ok(t, checkMethodAndPath(r, "POST", "/mail/v4/messages/import"))
|
||||||
|
|
||||||
contentType, params, err := pmmime.ParseMediaType(r.Header.Get("Content-Type"))
|
contentType, params, err := pmmime.ParseMediaType(r.Header.Get("Content-Type"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@ -500,7 +500,7 @@ type MessagesListRes struct {
|
|||||||
|
|
||||||
// ListMessages gets message metadata.
|
// ListMessages gets message metadata.
|
||||||
func (c *client) ListMessages(filter *MessagesFilter) (msgs []*Message, total int, err error) {
|
func (c *client) ListMessages(filter *MessagesFilter) (msgs []*Message, total int, err error) {
|
||||||
req, err := c.NewRequest("GET", "/messages", nil)
|
req, err := c.NewRequest("GET", "/mail/v4/messages", nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -528,7 +528,7 @@ type MessagesCountsRes struct {
|
|||||||
|
|
||||||
// CountMessages counts messages by label.
|
// CountMessages counts messages by label.
|
||||||
func (c *client) CountMessages(addressID string) (counts []*MessagesCount, err error) {
|
func (c *client) CountMessages(addressID string) (counts []*MessagesCount, err error) {
|
||||||
reqURL := "/messages/count"
|
reqURL := "/mail/v4/messages/count"
|
||||||
if addressID != "" {
|
if addressID != "" {
|
||||||
reqURL += ("?AddressID=" + addressID)
|
reqURL += ("?AddressID=" + addressID)
|
||||||
}
|
}
|
||||||
@ -554,7 +554,7 @@ type MessageRes struct {
|
|||||||
|
|
||||||
// GetMessage retrieves a message.
|
// GetMessage retrieves a message.
|
||||||
func (c *client) GetMessage(id string) (msg *Message, err error) {
|
func (c *client) GetMessage(id string) (msg *Message, err error) {
|
||||||
req, err := c.NewRequest("GET", "/messages/"+id, nil)
|
req, err := c.NewRequest("GET", "/mail/v4/messages/"+id, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -631,7 +631,7 @@ func (c *client) SendMessage(id string, sendReq *SendMessageReq) (sent, parent *
|
|||||||
sendReq.Packages = []*MessagePackage{}
|
sendReq.Packages = []*MessagePackage{}
|
||||||
}
|
}
|
||||||
|
|
||||||
req, err := c.NewJSONRequest("POST", "/messages/"+id, sendReq)
|
req, err := c.NewJSONRequest("POST", "/mail/v4/messages/"+id, sendReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -661,7 +661,7 @@ type DraftReq struct {
|
|||||||
func (c *client) CreateDraft(m *Message, parent string, action int) (created *Message, err error) {
|
func (c *client) CreateDraft(m *Message, parent string, action int) (created *Message, err error) {
|
||||||
createReq := &DraftReq{Message: m, ParentID: parent, Action: action, AttachmentKeyPackets: []string{}}
|
createReq := &DraftReq{Message: m, ParentID: parent, Action: action, AttachmentKeyPackets: []string{}}
|
||||||
|
|
||||||
req, err := c.NewJSONRequest("POST", "/messages", createReq)
|
req, err := c.NewJSONRequest("POST", "/mail/v4/messages", createReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -720,7 +720,7 @@ func (c *client) doMessagesAction(action string, ids []string) (err error) {
|
|||||||
// You should not call this directly unless you know what you are doing (it can overload the server).
|
// You should not call this directly unless you know what you are doing (it can overload the server).
|
||||||
func (c *client) doMessagesActionInner(action string, ids []string) (err error) {
|
func (c *client) doMessagesActionInner(action string, ids []string) (err error) {
|
||||||
actionReq := &MessagesActionReq{IDs: ids}
|
actionReq := &MessagesActionReq{IDs: ids}
|
||||||
req, err := c.NewJSONRequest("PUT", "/messages/"+action, actionReq)
|
req, err := c.NewJSONRequest("PUT", "/mail/v4/messages/"+action, actionReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -772,7 +772,7 @@ func (c *client) LabelMessages(ids []string, label string) (err error) {
|
|||||||
|
|
||||||
func (c *client) labelMessages(ids []string, label string) (err error) {
|
func (c *client) labelMessages(ids []string, label string) (err error) {
|
||||||
labelReq := &LabelMessagesReq{LabelID: label, IDs: ids}
|
labelReq := &LabelMessagesReq{LabelID: label, IDs: ids}
|
||||||
req, err := c.NewJSONRequest("PUT", "/messages/label", labelReq)
|
req, err := c.NewJSONRequest("PUT", "/mail/v4/messages/label", labelReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -802,7 +802,7 @@ func (c *client) UnlabelMessages(ids []string, label string) (err error) {
|
|||||||
|
|
||||||
func (c *client) unlabelMessages(ids []string, label string) (err error) {
|
func (c *client) unlabelMessages(ids []string, label string) (err error) {
|
||||||
labelReq := &LabelMessagesReq{LabelID: label, IDs: ids}
|
labelReq := &LabelMessagesReq{LabelID: label, IDs: ids}
|
||||||
req, err := c.NewJSONRequest("PUT", "/messages/unlabel", labelReq)
|
req, err := c.NewJSONRequest("PUT", "/mail/v4/messages/unlabel", labelReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -820,7 +820,7 @@ func (c *client) EmptyFolder(labelID, addressID string) (err error) {
|
|||||||
if labelID == "" {
|
if labelID == "" {
|
||||||
return errors.New("pmapi: labelID parameter is empty string")
|
return errors.New("pmapi: labelID parameter is empty string")
|
||||||
}
|
}
|
||||||
reqURL := "/messages/empty?LabelID=" + labelID
|
reqURL := "/mail/v4/messages/empty?LabelID=" + labelID
|
||||||
if addressID != "" {
|
if addressID != "" {
|
||||||
reqURL += ("&AddressID=" + addressID)
|
reqURL += ("&AddressID=" + addressID)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -184,7 +184,7 @@ func TestMessage_Encrypt(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func routeLabelMessages(tb testing.TB, w http.ResponseWriter, r *http.Request) string {
|
func routeLabelMessages(tb testing.TB, w http.ResponseWriter, r *http.Request) string {
|
||||||
Ok(tb, checkMethodAndPath(r, "PUT", "/messages/label"))
|
Ok(tb, checkMethodAndPath(r, "PUT", "/mail/v4/messages/label"))
|
||||||
|
|
||||||
return "messages/label/put_response.json"
|
return "messages/label/put_response.json"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -134,9 +134,6 @@ func checkMethodAndPath(r *http.Request, method, path string) error {
|
|||||||
if err := checkHeader(r.Header, "x-pm-appversion", "GoPMAPI_1.0.14"); err != nil {
|
if err := checkHeader(r.Header, "x-pm-appversion", "GoPMAPI_1.0.14"); err != nil {
|
||||||
result = multierror.Append(result, err)
|
result = multierror.Append(result, err)
|
||||||
}
|
}
|
||||||
if err := checkHeader(r.Header, "x-pm-apiversion", "3"); err != nil {
|
|
||||||
result = multierror.Append(result, err)
|
|
||||||
}
|
|
||||||
if r.Method != method {
|
if r.Method != method {
|
||||||
err := fmt.Errorf("Invalid request method expected %v, got %v", method, r.Method)
|
err := fmt.Errorf("Invalid request method expected %v, got %v", method, r.Method)
|
||||||
result = multierror.Append(result, err)
|
result = multierror.Append(result, err)
|
||||||
|
|||||||
@ -104,7 +104,7 @@ const (
|
|||||||
|
|
||||||
// GetMailSettings gets contact details specified by contact ID.
|
// GetMailSettings gets contact details specified by contact ID.
|
||||||
func (c *client) GetMailSettings() (settings MailSettings, err error) {
|
func (c *client) GetMailSettings() (settings MailSettings, err error) {
|
||||||
req, err := c.NewRequest("GET", "/settings/mail", nil)
|
req, err := c.NewRequest("GET", "/mail/v4/settings", nil)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
|||||||
@ -143,7 +143,6 @@ func (r tlsReport) sendReport(uri, userAgent string) {
|
|||||||
|
|
||||||
req.Header.Add("Content-Type", "application/json")
|
req.Header.Add("Content-Type", "application/json")
|
||||||
req.Header.Set("User-Agent", userAgent)
|
req.Header.Set("User-Agent", userAgent)
|
||||||
req.Header.Set("x-pm-apiversion", strconv.Itoa(Version))
|
|
||||||
req.Header.Set("x-pm-appversion", r.AppVersion)
|
req.Header.Set("x-pm-appversion", r.AppVersion)
|
||||||
|
|
||||||
logrus.WithField("request", req).Warn("Reporting TLS mismatch")
|
logrus.WithField("request", req).Warn("Reporting TLS mismatch")
|
||||||
|
|||||||
@ -43,11 +43,11 @@ func apiIsCalledWith(endpoint string, data *gherkin.DocString) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func messageIsSentWithAPICall(data *gherkin.DocString) error {
|
func messageIsSentWithAPICall(data *gherkin.DocString) error {
|
||||||
endpoint := "POST /messages"
|
endpoint := "POST /mail/v4/messages"
|
||||||
if err := apiIsCalledWith(endpoint, data); err != nil {
|
if err := apiIsCalledWith(endpoint, data); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for _, request := range ctx.GetPMAPIController().GetCalls("POST", "/messages") {
|
for _, request := range ctx.GetPMAPIController().GetCalls("POST", "/mail/v4/messages") {
|
||||||
if !checkAllRequiredFieldsForSendingMessage(request) {
|
if !checkAllRequiredFieldsForSendingMessage(request) {
|
||||||
return fmt.Errorf("%s was not called with all required fields: %s", endpoint, request)
|
return fmt.Errorf("%s was not called with all required fields: %s", endpoint, request)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,7 +27,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (api *FakePMAPI) GetAttachment(attachmentID string) (io.ReadCloser, error) {
|
func (api *FakePMAPI) GetAttachment(attachmentID string) (io.ReadCloser, error) {
|
||||||
if err := api.checkAndRecordCall(GET, "/attachments/"+attachmentID, nil); err != nil {
|
if err := api.checkAndRecordCall(GET, "/mail/v4/attachments/"+attachmentID, nil); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
data := strings.NewReader("data")
|
data := strings.NewReader("data")
|
||||||
@ -35,7 +35,7 @@ func (api *FakePMAPI) GetAttachment(attachmentID string) (io.ReadCloser, error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (api *FakePMAPI) CreateAttachment(attachment *pmapi.Attachment, data io.Reader, signature io.Reader) (*pmapi.Attachment, error) {
|
func (api *FakePMAPI) CreateAttachment(attachment *pmapi.Attachment, data io.Reader, signature io.Reader) (*pmapi.Attachment, error) {
|
||||||
if err := api.checkAndRecordCall(POST, "/attachments", nil); err != nil {
|
if err := api.checkAndRecordCall(POST, "/mail/v4/attachments", nil); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
bytes, err := ioutil.ReadAll(data)
|
bytes, err := ioutil.ReadAll(data)
|
||||||
@ -47,7 +47,7 @@ func (api *FakePMAPI) CreateAttachment(attachment *pmapi.Attachment, data io.Rea
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (api *FakePMAPI) DeleteAttachment(attID string) error {
|
func (api *FakePMAPI) DeleteAttachment(attID string) error {
|
||||||
if err := api.checkAndRecordCall(DELETE, "/attachments/"+attID, nil); err != nil {
|
if err := api.checkAndRecordCall(DELETE, "/mail/v4/attachments/"+attID, nil); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@ -20,7 +20,7 @@ package fakeapi
|
|||||||
import "github.com/ProtonMail/proton-bridge/pkg/pmapi"
|
import "github.com/ProtonMail/proton-bridge/pkg/pmapi"
|
||||||
|
|
||||||
func (api *FakePMAPI) CountMessages(addressID string) ([]*pmapi.MessagesCount, error) {
|
func (api *FakePMAPI) CountMessages(addressID string) ([]*pmapi.MessagesCount, error) {
|
||||||
if err := api.checkAndRecordCall(GET, "/messages/count?AddressID="+addressID, nil); err != nil {
|
if err := api.checkAndRecordCall(GET, "/mail/v4/messages/count?AddressID="+addressID, nil); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return api.getCounts(addressID), nil
|
return api.getCounts(addressID), nil
|
||||||
|
|||||||
@ -30,7 +30,7 @@ import (
|
|||||||
var errWasNotUpdated = errors.New("message was not updated")
|
var errWasNotUpdated = errors.New("message was not updated")
|
||||||
|
|
||||||
func (api *FakePMAPI) GetMessage(apiID string) (*pmapi.Message, error) {
|
func (api *FakePMAPI) GetMessage(apiID string) (*pmapi.Message, error) {
|
||||||
if err := api.checkAndRecordCall(GET, "/messages/"+apiID, nil); err != nil {
|
if err := api.checkAndRecordCall(GET, "/mail/v4/messages/"+apiID, nil); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
for _, message := range api.messages {
|
for _, message := range api.messages {
|
||||||
@ -50,7 +50,7 @@ func (api *FakePMAPI) GetMessage(apiID string) (*pmapi.Message, error) {
|
|||||||
// * Attachments
|
// * Attachments
|
||||||
// * AutoWildcard
|
// * AutoWildcard
|
||||||
func (api *FakePMAPI) ListMessages(filter *pmapi.MessagesFilter) ([]*pmapi.Message, int, error) {
|
func (api *FakePMAPI) ListMessages(filter *pmapi.MessagesFilter) ([]*pmapi.Message, int, error) {
|
||||||
if err := api.checkAndRecordCall(GET, "/messages", filter); err != nil {
|
if err := api.checkAndRecordCall(GET, "/mail/v4/messages", filter); err != nil {
|
||||||
return nil, 0, err
|
return nil, 0, err
|
||||||
}
|
}
|
||||||
pageSize := filter.PageSize
|
pageSize := filter.PageSize
|
||||||
@ -151,7 +151,7 @@ func copyFilteredMessage(message *pmapi.Message) *pmapi.Message {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (api *FakePMAPI) CreateDraft(message *pmapi.Message, parentID string, action int) (*pmapi.Message, error) {
|
func (api *FakePMAPI) CreateDraft(message *pmapi.Message, parentID string, action int) (*pmapi.Message, error) {
|
||||||
if err := api.checkAndRecordCall(POST, "/messages", &pmapi.DraftReq{
|
if err := api.checkAndRecordCall(POST, "/mail/v4/messages", &pmapi.DraftReq{
|
||||||
Message: message,
|
Message: message,
|
||||||
ParentID: parentID,
|
ParentID: parentID,
|
||||||
Action: action,
|
Action: action,
|
||||||
@ -175,7 +175,7 @@ func (api *FakePMAPI) CreateDraft(message *pmapi.Message, parentID string, actio
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (api *FakePMAPI) SendMessage(messageID string, sendMessageRequest *pmapi.SendMessageReq) (sent, parent *pmapi.Message, err error) {
|
func (api *FakePMAPI) SendMessage(messageID string, sendMessageRequest *pmapi.SendMessageReq) (sent, parent *pmapi.Message, err error) {
|
||||||
if err := api.checkAndRecordCall(POST, "/messages/"+messageID, sendMessageRequest); err != nil {
|
if err := api.checkAndRecordCall(POST, "/mail/v4/messages/"+messageID, sendMessageRequest); err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
message, err := api.GetMessage(messageID)
|
message, err := api.GetMessage(messageID)
|
||||||
@ -225,7 +225,7 @@ func (api *FakePMAPI) addMessage(message *pmapi.Message) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (api *FakePMAPI) DeleteMessages(apiIDs []string) error {
|
func (api *FakePMAPI) DeleteMessages(apiIDs []string) error {
|
||||||
err := api.deleteMessages(PUT, "/messages/delete", &pmapi.MessagesActionReq{
|
err := api.deleteMessages(PUT, "/mail/v4/messages/delete", &pmapi.MessagesActionReq{
|
||||||
IDs: apiIDs,
|
IDs: apiIDs,
|
||||||
}, func(message *pmapi.Message) bool {
|
}, func(message *pmapi.Message) bool {
|
||||||
return hasItem(apiIDs, message.ID)
|
return hasItem(apiIDs, message.ID)
|
||||||
@ -242,7 +242,7 @@ func (api *FakePMAPI) DeleteMessages(apiIDs []string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (api *FakePMAPI) EmptyFolder(labelID string, addressID string) error {
|
func (api *FakePMAPI) EmptyFolder(labelID string, addressID string) error {
|
||||||
err := api.deleteMessages(DELETE, "/messages/empty?LabelID="+labelID+"&AddressID="+addressID, nil, func(message *pmapi.Message) bool {
|
err := api.deleteMessages(DELETE, "/mail/v4/messages/empty?LabelID="+labelID+"&AddressID="+addressID, nil, func(message *pmapi.Message) bool {
|
||||||
return hasItem(message.LabelIDs, labelID) && message.AddressID == addressID
|
return hasItem(message.LabelIDs, labelID) && message.AddressID == addressID
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -277,7 +277,7 @@ func (api *FakePMAPI) deleteMessages(method method, path string, request interfa
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (api *FakePMAPI) LabelMessages(apiIDs []string, labelID string) error {
|
func (api *FakePMAPI) LabelMessages(apiIDs []string, labelID string) error {
|
||||||
return api.updateMessages(PUT, "/messages/label", &pmapi.LabelMessagesReq{
|
return api.updateMessages(PUT, "/mail/v4/messages/label", &pmapi.LabelMessagesReq{
|
||||||
IDs: apiIDs,
|
IDs: apiIDs,
|
||||||
LabelID: labelID,
|
LabelID: labelID,
|
||||||
}, apiIDs, func(message *pmapi.Message) error {
|
}, apiIDs, func(message *pmapi.Message) error {
|
||||||
@ -303,7 +303,7 @@ func (api *FakePMAPI) LabelMessages(apiIDs []string, labelID string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (api *FakePMAPI) UnlabelMessages(apiIDs []string, labelID string) error {
|
func (api *FakePMAPI) UnlabelMessages(apiIDs []string, labelID string) error {
|
||||||
return api.updateMessages(PUT, "/messages/unlabel", &pmapi.LabelMessagesReq{
|
return api.updateMessages(PUT, "/mail/v4/messages/unlabel", &pmapi.LabelMessagesReq{
|
||||||
IDs: apiIDs,
|
IDs: apiIDs,
|
||||||
LabelID: labelID,
|
LabelID: labelID,
|
||||||
}, apiIDs, func(message *pmapi.Message) error {
|
}, apiIDs, func(message *pmapi.Message) error {
|
||||||
@ -321,7 +321,7 @@ func (api *FakePMAPI) UnlabelMessages(apiIDs []string, labelID string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (api *FakePMAPI) MarkMessagesRead(apiIDs []string) error {
|
func (api *FakePMAPI) MarkMessagesRead(apiIDs []string) error {
|
||||||
return api.updateMessages(PUT, "/messages/read", &pmapi.MessagesActionReq{
|
return api.updateMessages(PUT, "/mail/v4/messages/read", &pmapi.MessagesActionReq{
|
||||||
IDs: apiIDs,
|
IDs: apiIDs,
|
||||||
}, apiIDs, func(message *pmapi.Message) error {
|
}, apiIDs, func(message *pmapi.Message) error {
|
||||||
if message.Unread == 0 {
|
if message.Unread == 0 {
|
||||||
@ -333,7 +333,7 @@ func (api *FakePMAPI) MarkMessagesRead(apiIDs []string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (api *FakePMAPI) MarkMessagesUnread(apiIDs []string) error {
|
func (api *FakePMAPI) MarkMessagesUnread(apiIDs []string) error {
|
||||||
err := api.updateMessages(PUT, "/messages/unread", &pmapi.MessagesActionReq{
|
err := api.updateMessages(PUT, "/mail/v4/messages/unread", &pmapi.MessagesActionReq{
|
||||||
IDs: apiIDs,
|
IDs: apiIDs,
|
||||||
}, apiIDs, func(message *pmapi.Message) error {
|
}, apiIDs, func(message *pmapi.Message) error {
|
||||||
if message.Unread == 1 {
|
if message.Unread == 1 {
|
||||||
|
|||||||
@ -23,7 +23,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (api *FakePMAPI) GetMailSettings() (pmapi.MailSettings, error) {
|
func (api *FakePMAPI) GetMailSettings() (pmapi.MailSettings, error) {
|
||||||
if err := api.checkAndRecordCall(GET, "/settings/mail", nil); err != nil {
|
if err := api.checkAndRecordCall(GET, "/mail/v4/settings", nil); err != nil {
|
||||||
return pmapi.MailSettings{}, err
|
return pmapi.MailSettings{}, err
|
||||||
}
|
}
|
||||||
return pmapi.MailSettings{}, nil
|
return pmapi.MailSettings{}, nil
|
||||||
|
|||||||
Reference in New Issue
Block a user