From 9218598140ec79262b31bb84279bbcb15058d8f9 Mon Sep 17 00:00:00 2001 From: Michal Horejsek Date: Thu, 27 Aug 2020 10:13:28 +0200 Subject: [PATCH] Update routes to API v4 --- Changelog.md | 1 + internal/bridge/credits.go | 4 ++-- pkg/pmapi/attachments.go | 8 ++++---- pkg/pmapi/attachments_test.go | 6 +++--- pkg/pmapi/client.go | 1 - pkg/pmapi/client_test.go | 3 --- pkg/pmapi/conversations.go | 2 +- pkg/pmapi/import.go | 2 +- pkg/pmapi/import_test.go | 2 +- pkg/pmapi/messages.go | 18 +++++++++--------- pkg/pmapi/messages_test.go | 2 +- pkg/pmapi/server_test.go | 3 --- pkg/pmapi/settings.go | 2 +- pkg/pmapi/tlsreport.go | 1 - test/api_checks_test.go | 4 ++-- test/fakeapi/attachments.go | 6 +++--- test/fakeapi/counts.go | 2 +- test/fakeapi/messages.go | 20 ++++++++++---------- test/fakeapi/user.go | 2 +- 19 files changed, 41 insertions(+), 48 deletions(-) diff --git a/Changelog.md b/Changelog.md index 7f267ef3..2b67e9c6 100644 --- a/Changelog.md +++ b/Changelog.md @@ -34,6 +34,7 @@ Changelog [format](http://keepachangelog.com/en/1.0.0/) * golang.org/x/text v0.3.2 -> v0.3.3 * Set first-start to false in bridge, not in frontend. * GODT-400 Refactor sendingInfo. +* GODT-513 Update routes to API v4. ### Fixed diff --git a/internal/bridge/credits.go b/internal/bridge/credits.go index 2df79e67..d78d56c7 100644 --- a/internal/bridge/credits.go +++ b/internal/bridge/credits.go @@ -15,8 +15,8 @@ // You should have received a copy of the GNU General Public License // along with ProtonMail Bridge. If not, see . -// 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 -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;" diff --git a/pkg/pmapi/attachments.go b/pkg/pmapi/attachments.go index bbf44f53..ccf388df 100644 --- a/pkg/pmapi/attachments.go +++ b/pkg/pmapi/attachments.go @@ -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. 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 { return } @@ -213,7 +213,7 @@ type UpdateAttachmentSignatureReq struct { func (c *client) UpdateAttachmentSignature(attachmentID, signature string) (err error) { 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 { 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. 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 { return } @@ -249,7 +249,7 @@ func (c *client) GetAttachment(id string) (att io.ReadCloser, err error) { return } - req, err := c.NewRequest("GET", "/attachments/"+id, nil) + req, err := c.NewRequest("GET", "/mail/v4/attachments/"+id, nil) if err != nil { return } diff --git a/pkg/pmapi/attachments_test.go b/pkg/pmapi/attachments_test.go index 0c1ee56c..f0737a8c 100644 --- a/pkg/pmapi/attachments_test.go +++ b/pkg/pmapi/attachments_test.go @@ -95,7 +95,7 @@ func TestAttachment_UnmarshalJSON(t *testing.T) { func TestClient_CreateAttachment(t *testing.T) { 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")) if err != nil { @@ -153,7 +153,7 @@ func TestClient_CreateAttachment(t *testing.T) { func TestClient_DeleteAttachment(t *testing.T) { 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{} if n, _ := b.ReadFrom(r.Body); n != 0 { @@ -172,7 +172,7 @@ func TestClient_DeleteAttachment(t *testing.T) { func TestClient_GetAttachment(t *testing.T) { 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) })) diff --git a/pkg/pmapi/client.go b/pkg/pmapi/client.go index 42f5e862..8fbd6f6f 100644 --- a/pkg/pmapi/client.go +++ b/pkg/pmapi/client.go @@ -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("x-pm-appversion", c.cm.config.AppVersion) - req.Header.Set("x-pm-apiversion", strconv.Itoa(Version)) if c.uid != "" { req.Header.Set("x-pm-uid", c.uid) diff --git a/pkg/pmapi/client_test.go b/pkg/pmapi/client_test.go index 238431a9..40803468 100644 --- a/pkg/pmapi/client_test.go +++ b/pkg/pmapi/client_test.go @@ -74,9 +74,6 @@ func TestClient_Do(t *testing.T) { 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")) } - 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") != "" { t.Fatalf("Expected no uid header when not authenticated, got %v", h.Get("x-pm-uid")) } diff --git a/pkg/pmapi/conversations.go b/pkg/pmapi/conversations.go index 88e673d8..279608db 100644 --- a/pkg/pmapi/conversations.go +++ b/pkg/pmapi/conversations.go @@ -32,7 +32,7 @@ type Conversation struct{} // CountConversations counts conversations by label. func (c *client) CountConversations(addressID string) (counts []*ConversationsCount, err error) { - reqURL := "/conversations/count" + reqURL := "/mail/v4/conversations/count" if addressID != "" { reqURL += ("?AddressID=" + addressID) } diff --git a/pkg/pmapi/import.go b/pkg/pmapi/import.go index 2a7f9d96..674ad1bb 100644 --- a/pkg/pmapi/import.go +++ b/pkg/pmapi/import.go @@ -120,7 +120,7 @@ type ImportMsgRes struct { func (c *client) Import(reqs []*ImportMsgReq) (resps []*ImportMsgRes, err error) { importReq := &ImportReq{Messages: reqs} - req, w, err := c.NewMultipartRequest("POST", "/import") + req, w, err := c.NewMultipartRequest("POST", "/mail/v4/messages/import") if err != nil { return } diff --git a/pkg/pmapi/import_test.go b/pkg/pmapi/import_test.go index c20e2688..38d8fe91 100644 --- a/pkg/pmapi/import_test.go +++ b/pkg/pmapi/import_test.go @@ -55,7 +55,7 @@ var testImportRes = &ImportMsgRes{ func TestClient_Import(t *testing.T) { // nolint[funlen] 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")) if err != nil { diff --git a/pkg/pmapi/messages.go b/pkg/pmapi/messages.go index 73a9539c..ed5d38b5 100644 --- a/pkg/pmapi/messages.go +++ b/pkg/pmapi/messages.go @@ -500,7 +500,7 @@ type MessagesListRes struct { // ListMessages gets message metadata. 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 { return } @@ -528,7 +528,7 @@ type MessagesCountsRes struct { // CountMessages counts messages by label. func (c *client) CountMessages(addressID string) (counts []*MessagesCount, err error) { - reqURL := "/messages/count" + reqURL := "/mail/v4/messages/count" if addressID != "" { reqURL += ("?AddressID=" + addressID) } @@ -554,7 +554,7 @@ type MessageRes struct { // GetMessage retrieves a message. 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 { return } @@ -631,7 +631,7 @@ func (c *client) SendMessage(id string, sendReq *SendMessageReq) (sent, parent * sendReq.Packages = []*MessagePackage{} } - req, err := c.NewJSONRequest("POST", "/messages/"+id, sendReq) + req, err := c.NewJSONRequest("POST", "/mail/v4/messages/"+id, sendReq) if err != nil { return } @@ -661,7 +661,7 @@ type DraftReq struct { func (c *client) CreateDraft(m *Message, parent string, action int) (created *Message, err error) { 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 { 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). func (c *client) doMessagesActionInner(action string, ids []string) (err error) { 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 { 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) { 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 { 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) { 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 { return } @@ -820,7 +820,7 @@ func (c *client) EmptyFolder(labelID, addressID string) (err error) { if labelID == "" { return errors.New("pmapi: labelID parameter is empty string") } - reqURL := "/messages/empty?LabelID=" + labelID + reqURL := "/mail/v4/messages/empty?LabelID=" + labelID if addressID != "" { reqURL += ("&AddressID=" + addressID) } diff --git a/pkg/pmapi/messages_test.go b/pkg/pmapi/messages_test.go index 3d53ab17..d6abe875 100644 --- a/pkg/pmapi/messages_test.go +++ b/pkg/pmapi/messages_test.go @@ -184,7 +184,7 @@ func TestMessage_Encrypt(t *testing.T) { } 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" } diff --git a/pkg/pmapi/server_test.go b/pkg/pmapi/server_test.go index 9ac6e419..a565832b 100644 --- a/pkg/pmapi/server_test.go +++ b/pkg/pmapi/server_test.go @@ -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 { 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 { err := fmt.Errorf("Invalid request method expected %v, got %v", method, r.Method) result = multierror.Append(result, err) diff --git a/pkg/pmapi/settings.go b/pkg/pmapi/settings.go index 32102f09..03575ca0 100644 --- a/pkg/pmapi/settings.go +++ b/pkg/pmapi/settings.go @@ -104,7 +104,7 @@ const ( // GetMailSettings gets contact details specified by contact ID. 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 { return diff --git a/pkg/pmapi/tlsreport.go b/pkg/pmapi/tlsreport.go index 8b6ddd74..0c948f55 100644 --- a/pkg/pmapi/tlsreport.go +++ b/pkg/pmapi/tlsreport.go @@ -143,7 +143,6 @@ func (r tlsReport) sendReport(uri, userAgent string) { req.Header.Add("Content-Type", "application/json") req.Header.Set("User-Agent", userAgent) - req.Header.Set("x-pm-apiversion", strconv.Itoa(Version)) req.Header.Set("x-pm-appversion", r.AppVersion) logrus.WithField("request", req).Warn("Reporting TLS mismatch") diff --git a/test/api_checks_test.go b/test/api_checks_test.go index 089f7767..8073a3ac 100644 --- a/test/api_checks_test.go +++ b/test/api_checks_test.go @@ -43,11 +43,11 @@ func apiIsCalledWith(endpoint string, 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 { return err } - for _, request := range ctx.GetPMAPIController().GetCalls("POST", "/messages") { + for _, request := range ctx.GetPMAPIController().GetCalls("POST", "/mail/v4/messages") { if !checkAllRequiredFieldsForSendingMessage(request) { return fmt.Errorf("%s was not called with all required fields: %s", endpoint, request) } diff --git a/test/fakeapi/attachments.go b/test/fakeapi/attachments.go index 32a5b37a..c0d4fc19 100644 --- a/test/fakeapi/attachments.go +++ b/test/fakeapi/attachments.go @@ -27,7 +27,7 @@ import ( ) 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 } 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) { - if err := api.checkAndRecordCall(POST, "/attachments", nil); err != nil { + if err := api.checkAndRecordCall(POST, "/mail/v4/attachments", nil); err != nil { return nil, err } 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 { - 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 nil diff --git a/test/fakeapi/counts.go b/test/fakeapi/counts.go index 3f0e0871..20419bcc 100644 --- a/test/fakeapi/counts.go +++ b/test/fakeapi/counts.go @@ -20,7 +20,7 @@ package fakeapi import "github.com/ProtonMail/proton-bridge/pkg/pmapi" 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 api.getCounts(addressID), nil diff --git a/test/fakeapi/messages.go b/test/fakeapi/messages.go index 3fa76943..7c63e72c 100644 --- a/test/fakeapi/messages.go +++ b/test/fakeapi/messages.go @@ -30,7 +30,7 @@ import ( var errWasNotUpdated = errors.New("message was not updated") 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 } for _, message := range api.messages { @@ -50,7 +50,7 @@ func (api *FakePMAPI) GetMessage(apiID string) (*pmapi.Message, error) { // * Attachments // * AutoWildcard 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 } 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) { - if err := api.checkAndRecordCall(POST, "/messages", &pmapi.DraftReq{ + if err := api.checkAndRecordCall(POST, "/mail/v4/messages", &pmapi.DraftReq{ Message: message, ParentID: parentID, 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) { - 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 } message, err := api.GetMessage(messageID) @@ -225,7 +225,7 @@ func (api *FakePMAPI) addMessage(message *pmapi.Message) { } 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, }, func(message *pmapi.Message) bool { 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 { - 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 }) 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 { - return api.updateMessages(PUT, "/messages/label", &pmapi.LabelMessagesReq{ + return api.updateMessages(PUT, "/mail/v4/messages/label", &pmapi.LabelMessagesReq{ IDs: apiIDs, LabelID: labelID, }, 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 { - return api.updateMessages(PUT, "/messages/unlabel", &pmapi.LabelMessagesReq{ + return api.updateMessages(PUT, "/mail/v4/messages/unlabel", &pmapi.LabelMessagesReq{ IDs: apiIDs, LabelID: labelID, }, 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 { - return api.updateMessages(PUT, "/messages/read", &pmapi.MessagesActionReq{ + return api.updateMessages(PUT, "/mail/v4/messages/read", &pmapi.MessagesActionReq{ IDs: apiIDs, }, apiIDs, func(message *pmapi.Message) error { if message.Unread == 0 { @@ -333,7 +333,7 @@ func (api *FakePMAPI) MarkMessagesRead(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, }, apiIDs, func(message *pmapi.Message) error { if message.Unread == 1 { diff --git a/test/fakeapi/user.go b/test/fakeapi/user.go index 18d552cb..fd2963db 100644 --- a/test/fakeapi/user.go +++ b/test/fakeapi/user.go @@ -23,7 +23,7 @@ import ( ) 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{}, nil