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
|
|
|
|
}
|