protonmail: add Client.{UpdateContact,DeleteContacts,DeleteAllContacts}

This commit is contained in:
emersion 2017-09-12 22:20:25 +02:00
parent 340cdc878d
commit 5cc5a2f843
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48
2 changed files with 70 additions and 1 deletions

View File

@ -195,6 +195,7 @@ func (ab *addressBook) GetAddressObject(id string) (carddav.AddressObject, error
contact, err := ab.c.GetContact(id) contact, err := ab.c.GetContact(id)
if err != nil { if err != nil {
// TODO: return carddav.ErrNotFound if appropriate
return nil, err return nil, err
} }

View File

@ -170,11 +170,14 @@ type CreateContactResp struct {
} }
} }
func (resp *CreateContactResp) Err() error {
return resp.Response.Err()
}
func (c *Client) CreateContacts(contacts []*Contact) ([]*CreateContactResp, error) { func (c *Client) CreateContacts(contacts []*Contact) ([]*CreateContactResp, error) {
reqData := struct { reqData := struct {
Contacts []*Contact Contacts []*Contact
}{contacts} }{contacts}
req, err := c.newJSONRequest(http.MethodPost, "/contacts", &reqData) req, err := c.newJSONRequest(http.MethodPost, "/contacts", &reqData)
if err != nil { if err != nil {
return nil, err return nil, err
@ -190,3 +193,68 @@ func (c *Client) CreateContacts(contacts []*Contact) ([]*CreateContactResp, erro
return respData.Responses, nil return respData.Responses, nil
} }
func (c *Client) UpdateContact(id string, cards []*ContactCard) (*Contact, error) {
reqData := struct {
Cards []*ContactCard
}{cards}
req, err := c.newJSONRequest(http.MethodPut, "/contacts/"+id, &reqData)
if err != nil {
return nil, err
}
var respData struct {
resp
Contact *Contact
}
if err := c.doJSON(req, &respData); err != nil {
return nil, err
}
return respData.Contact, nil
}
type DeleteContactResp struct {
ID string
Response struct {
resp
}
}
func (resp *DeleteContactResp) Err() error {
return resp.Response.Err()
}
func (c *Client) DeleteContacts(ids []string) ([]*DeleteContactResp, error) {
reqData := struct {
IDs []string
}{ids}
req, err := c.newJSONRequest(http.MethodPut, "/contacts/delete", &reqData)
if err != nil {
return nil, err
}
var respData struct {
resp
Responses []*DeleteContactResp
}
if err := c.doJSON(req, &respData); err != nil {
return nil, err
}
return respData.Responses, nil
}
func (c *Client) DeleteAllContacts() error {
req, err := c.newRequest(http.MethodDelete, "/contacts", nil)
if err != nil {
return err
}
var respData resp
if err := c.doJSON(req, &respData); err != nil {
return err
}
return nil
}