cloudflare/Cloudflare-Pivotal-Cloud-Foundry

Public

mirrored fromhttps://github.com/cloudflare/Cloudflare-Pivotal-Cloud-Foundry

CodeCommitsIssuesPull requestsActionsInsightsSecurity
3679cedc2a32d0b5feb187a966f7f417953707b2

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

api/cloudflare.go

80lines · modecode

1package api
2
3import (
4 "bytes"
5 "io/ioutil"
6 "net/http"
7)
8
9const CLOUDFLARE_CLIENT_API_ENDPOINT = "https://api.cloudflare.com/client/v4/"
10const CLOUDFLARE_CLIENT_API_ZONES = CLOUDFLARE_CLIENT_API_ENDPOINT + "zones/"
11const X_AUTH_EMAIL_HEADER = "X-Auth-Email"
12const X_AUTH_KEY_HEADER = "X-Auth-Key"
13
14type CloudflareAPIInterface interface {
15 AddZone(domain string) ([]byte, error)
16 DeleteZone(zoneId string) error
17 SetAuthHeaders(authHeaders AuthHeaders)
18}
19
20type CloudflareAPI struct {
21 Auth AuthHeaders
22}
23
24type AuthHeaders struct {
25 XAuthEmail string `json:"x-auth-email"`
26 XAuthKey string `json:"x-auth-key"`
27}
28
29func (api CloudflareAPI) GetAuthHeaders() AuthHeaders {
30 return api.Auth
31}
32
33func (api *CloudflareAPI) SetAuthHeaders(authHeaders AuthHeaders) {
34 api.Auth = authHeaders
35}
36
37func (api CloudflareAPI) AddZone(domain string) ([]byte, error) {
38 var jsonBody = []byte(`{"name" : "` + domain + `"}`)
39 request, err := http.NewRequest("POST", CLOUDFLARE_CLIENT_API_ZONES, bytes.NewReader(jsonBody))
40 if err != nil {
41 return nil, err
42 }
43
44 var authHeaders = api.GetAuthHeaders()
45 request.Header.Add(X_AUTH_EMAIL_HEADER, authHeaders.XAuthEmail)
46 request.Header.Add(X_AUTH_KEY_HEADER, authHeaders.XAuthKey)
47
48 var client = http.Client{}
49 response, err := client.Do(request)
50 if err != nil {
51 return nil, err
52 }
53 defer response.Body.Close()
54
55 data, err := ioutil.ReadAll(response.Body)
56 if err != nil {
57 return nil, err
58 }
59
60 return data, err
61}
62
63func (api CloudflareAPI) DeleteZone(zoneId string) error {
64 request, err := http.NewRequest("DELETE", CLOUDFLARE_CLIENT_API_ZONES+zoneId, nil)
65 if err != nil {
66 return err
67 }
68
69 var authHeaders = api.GetAuthHeaders()
70 request.Header.Add(X_AUTH_EMAIL_HEADER, authHeaders.XAuthEmail)
71 request.Header.Add(X_AUTH_KEY_HEADER, authHeaders.XAuthKey)
72
73 var client = http.Client{}
74 _, err = client.Do(request)
75 if err != nil {
76 return err
77 }
78
79 return nil
80}