hydroxide-push/protonmail/contacts.go

117 lines
1.9 KiB
Go
Raw Normal View History

2017-08-22 13:40:27 +03:00
package protonmail
import (
"net/http"
)
type Contact struct {
2017-08-22 14:22:27 +03:00
ID string
Name string
2017-08-22 13:40:27 +03:00
LabelIDs []string
Emails []*ContactEmail
2017-08-22 14:22:27 +03:00
Data []*ContactData
2017-08-22 13:40:27 +03:00
}
type ContactEmail struct {
2017-08-22 14:22:27 +03:00
ID string
Name string
Email string
Type string
Encrypt int
Order int
2017-08-22 13:40:27 +03:00
ContactID string
2017-08-22 14:22:27 +03:00
LabelIDs []string
2017-08-22 13:40:27 +03:00
}
type ContactDataType int
2017-08-22 14:22:27 +03:00
const (
ContactDataEncrypted ContactDataType = 1
)
2017-08-22 13:40:27 +03:00
type ContactData struct {
Type ContactDataType
Data string
}
2017-08-22 14:22:27 +03:00
func (c *Client) ListContacts() ([]*Contact, error) {
req, err := c.newRequest(http.MethodGet, "/contacts", nil)
if err != nil {
return nil, err
}
var respData struct {
resp
Contacts []*Contact
}
if err := c.doJSON(req, &respData); err != nil {
return nil, err
}
return respData.Contacts, nil
2017-08-22 13:40:27 +03:00
}
2017-08-22 14:22:27 +03:00
func (c *Client) ListContactsEmails() ([]*ContactEmail, error) {
req, err := c.newRequest(http.MethodGet, "/contacts/emails", nil)
2017-08-22 13:40:27 +03:00
if err != nil {
return nil, err
}
2017-08-22 14:22:27 +03:00
var respData struct {
resp
Contacts []*ContactEmail
}
2017-08-22 13:40:27 +03:00
if err := c.doJSON(req, &respData); err != nil {
return nil, err
}
return respData.Contacts, nil
}
2017-08-22 14:22:27 +03:00
func (c *Client) GetContact(id string) (*Contact, error) {
req, err := c.newRequest(http.MethodGet, "/contacts/"+id, nil)
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 CreateContactResp struct {
Input *Contact
Response struct {
resp
Contact *Contact
}
}
func (c *Client) CreateContacts(contacts []*Contact) ([]*CreateContactResp, error) {
reqData := struct {
Contacts []*Contact
}{contacts}
req, err := c.newJSONRequest(http.MethodPost, "/contacts", &reqData)
if err != nil {
return nil, err
}
var respData struct {
resp
Responses []*CreateContactResp
}
if err := c.doJSON(req, &respData); err != nil {
return nil, err
}
return respData.Responses, nil
}