From 2b6cd1ab382fb1915574573f731d76f524359077 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 24 May 2022 21:06:25 +0200 Subject: [PATCH] Upgrade dependencies go-webdav has breaking changes. --- carddav/carddav.go | 29 +++++++++++++++++++---------- go.mod | 14 +++++++------- go.sum | 28 ++++++++++++++-------------- 3 files changed, 40 insertions(+), 31 deletions(-) diff --git a/carddav/carddav.go b/carddav/carddav.go index 76c9b8d..7c5505d 100644 --- a/carddav/carddav.go +++ b/carddav/carddav.go @@ -2,6 +2,7 @@ package carddav import ( "bytes" + "context" "errors" "fmt" "io" @@ -83,14 +84,14 @@ func formatCard(card vcard.Card, privateKey *openpgp.Entity) (*protonmail.Contac func parseAddressObjectPath(p string) (string, error) { dirname, filename := path.Split(p) ext := path.Ext(filename) - if dirname != "/" || ext != ".vcf" { + if dirname != "/contacts/default/" || ext != ".vcf" { return "", errNotFound } return strings.TrimSuffix(filename, ext), nil } func formatAddressObjectPath(id string) string { - return "/" + id + ".vcf" + return "/contacts/default/" + id + ".vcf" } func (b *backend) toAddressObject(contact *protonmail.Contact, req *carddav.AddressDataRequest) (*carddav.AddressObject, error) { @@ -139,9 +140,17 @@ type backend struct { privateKeys openpgp.EntityList } -func (b *backend) AddressBook() (*carddav.AddressBook, error) { +func (b *backend) CurrentUserPrincipal(ctx context.Context) (string, error) { + return "/", nil +} + +func (b *backend) AddressbookHomeSetPath(ctx context.Context) (string, error) { + return "/contacts", nil +} + +func (b *backend) AddressBook(ctx context.Context) (*carddav.AddressBook, error) { return &carddav.AddressBook{ - Path: "/", + Path: "/contacts/default", Name: "ProtonMail", Description: "ProtonMail contacts", MaxResourceSize: 100 * 1024, @@ -173,7 +182,7 @@ func (b *backend) deleteCache(id string) { b.locker.Unlock() } -func (b *backend) GetAddressObject(path string, req *carddav.AddressDataRequest) (*carddav.AddressObject, error) { +func (b *backend) GetAddressObject(ctx context.Context, path string, req *carddav.AddressDataRequest) (*carddav.AddressObject, error) { id, err := parseAddressObjectPath(path) if err != nil { return nil, err @@ -197,7 +206,7 @@ func (b *backend) GetAddressObject(path string, req *carddav.AddressDataRequest) return b.toAddressObject(contact, req) } -func (b *backend) ListAddressObjects(req *carddav.AddressDataRequest) ([]carddav.AddressObject, error) { +func (b *backend) ListAddressObjects(ctx context.Context, req *carddav.AddressDataRequest) ([]carddav.AddressObject, error) { if b.cacheComplete() { b.locker.Lock() defer b.locker.Unlock() @@ -262,11 +271,11 @@ func (b *backend) ListAddressObjects(req *carddav.AddressDataRequest) ([]carddav return aos, nil } -func (b *backend) QueryAddressObjects(query *carddav.AddressBookQuery) ([]carddav.AddressObject, error) { +func (b *backend) QueryAddressObjects(ctx context.Context, query *carddav.AddressBookQuery) ([]carddav.AddressObject, error) { panic("TODO") } -func (b *backend) PutAddressObject(path string, card vcard.Card) (loc string, err error) { +func (b *backend) PutAddressObject(ctx context.Context, path string, card vcard.Card, opts *carddav.PutAddressObjectOptions) (loc string, err error) { id, err := parseAddressObjectPath(path) if err != nil { return "", err @@ -280,7 +289,7 @@ func (b *backend) PutAddressObject(path string, card vcard.Card) (loc string, er var contact *protonmail.Contact var req carddav.AddressDataRequest - if _, getErr := b.GetAddressObject(path, &req); getErr == nil { + if _, getErr := b.GetAddressObject(ctx, path, &req); getErr == nil { contact, err = b.c.UpdateContact(id, contactImport) if err != nil { return "", err @@ -306,7 +315,7 @@ func (b *backend) PutAddressObject(path string, card vcard.Card) (loc string, er return formatAddressObjectPath(contact.ID), nil } -func (b *backend) DeleteAddressObject(path string) error { +func (b *backend) DeleteAddressObject(ctx context.Context, path string) error { id, err := parseAddressObjectPath(path) if err != nil { return err diff --git a/go.mod b/go.mod index 59782e2..4e8a66d 100644 --- a/go.mod +++ b/go.mod @@ -3,20 +3,20 @@ module github.com/emersion/hydroxide go 1.13 require ( - github.com/ProtonMail/go-crypto v0.0.0-20211112122917-428f8eabeeb3 + github.com/ProtonMail/go-crypto v0.0.0-20220517143526-88bb52951d5b github.com/boltdb/bolt v1.3.1 github.com/emersion/go-bcrypt v0.0.0-20170822072041-6e724a1baa63 - github.com/emersion/go-imap v1.2.0 + github.com/emersion/go-imap v1.2.1 github.com/emersion/go-imap-move v0.0.0-20210907172020-fe4558f9c872 github.com/emersion/go-imap-specialuse v0.0.0-20201101201809-1ab93d3d150e github.com/emersion/go-mbox v1.0.2 github.com/emersion/go-message v0.15.0 github.com/emersion/go-sasl v0.0.0-20211008083017-0b9dcfb154ac // indirect github.com/emersion/go-smtp v0.15.0 - github.com/emersion/go-vcard v0.0.0-20210521075357-3445b9171995 - github.com/emersion/go-webdav v0.3.1 + github.com/emersion/go-vcard v0.0.0-20220507122617-d4056df0ec4a + github.com/emersion/go-webdav v0.3.2-0.20220524091811-5d845721d8f7 github.com/mattn/go-isatty v0.0.14 - golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871 - golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1 // indirect - golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect + golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898 + golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect + golang.org/x/term v0.0.0-20220411215600-e5f449aeb171 // indirect ) diff --git a/go.sum b/go.sum index cef1d80..f79c9d7 100644 --- a/go.sum +++ b/go.sum @@ -1,12 +1,12 @@ -github.com/ProtonMail/go-crypto v0.0.0-20211112122917-428f8eabeeb3 h1:XcF0cTDJeiuZ5NU8w7WUDge0HRwwNRmxj/GGk6KSA6g= -github.com/ProtonMail/go-crypto v0.0.0-20211112122917-428f8eabeeb3/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= +github.com/ProtonMail/go-crypto v0.0.0-20220517143526-88bb52951d5b h1:lcbBNuQhppsc7A5gjdHmdlqUqJfgGMylBdGyDs0j7G8= +github.com/ProtonMail/go-crypto v0.0.0-20220517143526-88bb52951d5b/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/emersion/go-bcrypt v0.0.0-20170822072041-6e724a1baa63 h1:7aCSuwTBzg7BCPRRaBJD0weKZYdeAykOrY6ktpx8Vvc= github.com/emersion/go-bcrypt v0.0.0-20170822072041-6e724a1baa63/go.mod h1:eRwwJnuLVFtYTC+AI2JDJTMcuQUTYhBIK4I6bC5tpqw= github.com/emersion/go-ical v0.0.0-20200224201310-cd514449c39e/go.mod h1:4xVTBPcT43a1pp3vdaa+FuRdX5XhKCZPpWv7m0z9ByM= -github.com/emersion/go-imap v1.2.0 h1:lyUQ3+EVM21/qbWE/4Ya5UG9r5+usDxlg4yfp3TgHFA= -github.com/emersion/go-imap v1.2.0/go.mod h1:Qlx1FSx2FTxjnjWpIlVNEuX+ylerZQNFE5NsmKFSejY= +github.com/emersion/go-imap v1.2.1 h1:+s9ZjMEjOB8NzZMVTM3cCenz2JrQIGGo5j1df19WjTA= +github.com/emersion/go-imap v1.2.1/go.mod h1:Qlx1FSx2FTxjnjWpIlVNEuX+ylerZQNFE5NsmKFSejY= github.com/emersion/go-imap-move v0.0.0-20210907172020-fe4558f9c872 h1:HGBfonz0q/zq7y3ew+4oy4emHSvk6bkmV0mdDG3E77M= github.com/emersion/go-imap-move v0.0.0-20210907172020-fe4558f9c872/go.mod h1:QuMaZcKFDVI0yCrnAbPLfbwllz1wtOrZH8/vZ5yzp4w= github.com/emersion/go-imap-specialuse v0.0.0-20201101201809-1ab93d3d150e h1:AwVkRMFFUMNu+tx0jchwyoXhS2VClQSzTtByVuzxbsE= @@ -23,26 +23,26 @@ github.com/emersion/go-smtp v0.15.0/go.mod h1:qm27SGYgoIPRot6ubfQ/GpiPy/g3PaZAVR github.com/emersion/go-textwrapper v0.0.0-20200911093747-65d896831594 h1:IbFBtwoTQyw0fIM5xv1HF+Y+3ZijDR839WMulgxCcUY= github.com/emersion/go-textwrapper v0.0.0-20200911093747-65d896831594/go.mod h1:aqO8z8wPrjkscevZJFVE1wXJrLpC5LtJG7fqLOsPb2U= github.com/emersion/go-vcard v0.0.0-20191221110513-5f81fa0d3cc7/go.mod h1:HMJKR5wlh/ziNp+sHEDV2ltblO4JD2+IdDOWtGcQBTM= -github.com/emersion/go-vcard v0.0.0-20210521075357-3445b9171995 h1:DpVfmcoBs6o9VYcccNWbuKFQxuHCgt25/y4q9H8AUvc= -github.com/emersion/go-vcard v0.0.0-20210521075357-3445b9171995/go.mod h1:HMJKR5wlh/ziNp+sHEDV2ltblO4JD2+IdDOWtGcQBTM= -github.com/emersion/go-webdav v0.3.1 h1:8ISu6AlBwu7DKg9RQE3iRpE3CPM8Bfpfz7L3bi/xlGI= -github.com/emersion/go-webdav v0.3.1/go.mod h1:uSM1VveeKtogBVWaYccTksToczooJ0rrVGNsgnDsr4Q= +github.com/emersion/go-vcard v0.0.0-20220507122617-d4056df0ec4a h1:cltZpe6s0SJtqK5c/5y2VrIYi8BAtDM6qjmiGYqfTik= +github.com/emersion/go-vcard v0.0.0-20220507122617-d4056df0ec4a/go.mod h1:HMJKR5wlh/ziNp+sHEDV2ltblO4JD2+IdDOWtGcQBTM= +github.com/emersion/go-webdav v0.3.2-0.20220524091811-5d845721d8f7 h1:HqrKOBl8HdSnlo8kz72tCU36aK3WwSmpnnz04+dD0oc= +github.com/emersion/go-webdav v0.3.2-0.20220524091811-5d845721d8f7/go.mod h1:uSM1VveeKtogBVWaYccTksToczooJ0rrVGNsgnDsr4Q= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871 h1:/pEO3GD/ABYAjuakUS6xSEmmlyVS4kxBNkeA9tLJiTI= -golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898 h1:SLP7Q4Di66FONjDJbCYrCRrh97focO6sLogHO7/g8F0= +golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1 h1:kwrAHlwJ0DUBZwQ238v+Uod/3eZ8B2K5rYsUHBQvzmI= -golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220411215600-e5f449aeb171 h1:EH1Deb8WZJ0xc0WK//leUHXcX9aLE5SymusoTmMZye8= +golang.org/x/term v0.0.0-20220411215600-e5f449aeb171/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=