emailforwardings.go raw
1 package namecom
2
3 import (
4 "bytes"
5 "encoding/json"
6 "fmt"
7 "net/url"
8 )
9
10 var _ = bytes.MinRead
11
12 // ListEmailForwardings returns a paginated list of email forwarding entries for a domain.
13 func (n *NameCom) ListEmailForwardings(request *ListEmailForwardingsRequest) (*ListEmailForwardingsResponse, error) {
14 endpoint := fmt.Sprintf("/v4/domains/%s/email/forwarding", request.DomainName)
15
16 values := url.Values{}
17 if request.PerPage != 0 {
18 values.Set("perPage", fmt.Sprintf("%d", request.PerPage))
19 }
20 if request.Page != 0 {
21 values.Set("page", fmt.Sprintf("%d", request.Page))
22 }
23
24 body, err := n.get(endpoint, values)
25 if err != nil {
26 return nil, err
27 }
28
29 resp := &ListEmailForwardingsResponse{}
30
31 err = json.NewDecoder(body).Decode(resp)
32 if err != nil {
33 return nil, err
34 }
35
36 return resp, nil
37 }
38
39 // GetEmailForwarding returns an email forwarding entry.
40 func (n *NameCom) GetEmailForwarding(request *GetEmailForwardingRequest) (*EmailForwarding, error) {
41 endpoint := fmt.Sprintf("/v4/domains/%s/email/forwarding/%s", request.DomainName, request.EmailBox)
42
43 values := url.Values{}
44
45 body, err := n.get(endpoint, values)
46 if err != nil {
47 return nil, err
48 }
49
50 resp := &EmailForwarding{}
51
52 err = json.NewDecoder(body).Decode(resp)
53 if err != nil {
54 return nil, err
55 }
56
57 return resp, nil
58 }
59
60 // CreateEmailForwarding creates an email forwarding entry. If this is the first email forwarding entry, it may modify the MX records for the domain accordingly.
61 func (n *NameCom) CreateEmailForwarding(request *EmailForwarding) (*EmailForwarding, error) {
62 endpoint := fmt.Sprintf("/v4/domains/%s/email/forwarding", request.DomainName)
63
64 post := &bytes.Buffer{}
65 err := json.NewEncoder(post).Encode(request)
66 if err != nil {
67 return nil, err
68 }
69
70 body, err := n.post(endpoint, post)
71 if err != nil {
72 return nil, err
73 }
74
75 resp := &EmailForwarding{}
76
77 err = json.NewDecoder(body).Decode(resp)
78 if err != nil {
79 return nil, err
80 }
81
82 return resp, nil
83 }
84
85 // UpdateEmailForwarding updates which email address the email is being forwarded to.
86 func (n *NameCom) UpdateEmailForwarding(request *EmailForwarding) (*EmailForwarding, error) {
87 endpoint := fmt.Sprintf("/v4/domains/%s/email/forwarding/%s", request.DomainName, request.EmailBox)
88
89 post := &bytes.Buffer{}
90 err := json.NewEncoder(post).Encode(request)
91 if err != nil {
92 return nil, err
93 }
94
95 body, err := n.put(endpoint, post)
96 if err != nil {
97 return nil, err
98 }
99
100 resp := &EmailForwarding{}
101
102 err = json.NewDecoder(body).Decode(resp)
103 if err != nil {
104 return nil, err
105 }
106
107 return resp, nil
108 }
109
110 // DeleteEmailForwarding deletes the email forwarding entry.
111 func (n *NameCom) DeleteEmailForwarding(request *DeleteEmailForwardingRequest) (*EmptyResponse, error) {
112 endpoint := fmt.Sprintf("/v4/domains/%s/email/forwarding/%s", request.DomainName, request.EmailBox)
113
114 post := &bytes.Buffer{}
115 err := json.NewEncoder(post).Encode(request)
116 if err != nil {
117 return nil, err
118 }
119
120 body, err := n.delete(endpoint, post)
121 if err != nil {
122 return nil, err
123 }
124
125 resp := &EmptyResponse{}
126
127 err = json.NewDecoder(body).Decode(resp)
128 if err != nil {
129 return nil, err
130 }
131
132 return resp, nil
133 }
134