1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package gitlab
18
19 import (
20 "fmt"
21 "net/http"
22 "time"
23 )
24
25
26
27
28
29 type PagesDomainsService struct {
30 client *Client
31 }
32
33
34
35
36 type PagesDomain struct {
37 Domain string `json:"domain"`
38 AutoSslEnabled bool `json:"auto_ssl_enabled"`
39 URL string `json:"url"`
40 ProjectID int `json:"project_id"`
41 Verified bool `json:"verified"`
42 VerificationCode string `json:"verification_code"`
43 EnabledUntil *time.Time `json:"enabled_until"`
44 Certificate struct {
45 Subject string `json:"subject"`
46 Expired bool `json:"expired"`
47 Expiration *time.Time `json:"expiration"`
48 Certificate string `json:"certificate"`
49 CertificateText string `json:"certificate_text"`
50 } `json:"certificate"`
51 }
52
53
54
55
56
57 type ListPagesDomainsOptions ListOptions
58
59
60
61
62
63 func (s *PagesDomainsService) ListPagesDomains(pid interface{}, opt *ListPagesDomainsOptions, options ...RequestOptionFunc) ([]*PagesDomain, *Response, error) {
64 project, err := parseID(pid)
65 if err != nil {
66 return nil, nil, err
67 }
68 u := fmt.Sprintf("projects/%s/pages/domains", PathEscape(project))
69
70 req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
71 if err != nil {
72 return nil, nil, err
73 }
74
75 var pd []*PagesDomain
76 resp, err := s.client.Do(req, &pd)
77 if err != nil {
78 return nil, resp, err
79 }
80
81 return pd, resp, nil
82 }
83
84
85
86
87
88 func (s *PagesDomainsService) ListAllPagesDomains(options ...RequestOptionFunc) ([]*PagesDomain, *Response, error) {
89 req, err := s.client.NewRequest(http.MethodGet, "pages/domains", nil, options)
90 if err != nil {
91 return nil, nil, err
92 }
93
94 var pd []*PagesDomain
95 resp, err := s.client.Do(req, &pd)
96 if err != nil {
97 return nil, resp, err
98 }
99
100 return pd, resp, nil
101 }
102
103
104
105
106
107 func (s *PagesDomainsService) GetPagesDomain(pid interface{}, domain string, options ...RequestOptionFunc) (*PagesDomain, *Response, error) {
108 project, err := parseID(pid)
109 if err != nil {
110 return nil, nil, err
111 }
112 u := fmt.Sprintf("projects/%s/pages/domains/%s", PathEscape(project), domain)
113
114 req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
115 if err != nil {
116 return nil, nil, err
117 }
118
119 pd := new(PagesDomain)
120 resp, err := s.client.Do(req, pd)
121 if err != nil {
122 return nil, resp, err
123 }
124
125 return pd, resp, nil
126 }
127
128
129
130
131
132 type CreatePagesDomainOptions struct {
133 Domain *string `url:"domain,omitempty" json:"domain,omitempty"`
134 AutoSslEnabled *bool `url:"auto_ssl_enabled,omitempty" json:"auto_ssl_enabled,omitempty"`
135 Certificate *string `url:"certificate,omitempty" json:"certificate,omitempty"`
136 Key *string `url:"key,omitempty" json:"key,omitempty"`
137 }
138
139
140
141
142
143 func (s *PagesDomainsService) CreatePagesDomain(pid interface{}, opt *CreatePagesDomainOptions, options ...RequestOptionFunc) (*PagesDomain, *Response, error) {
144 project, err := parseID(pid)
145 if err != nil {
146 return nil, nil, err
147 }
148 u := fmt.Sprintf("projects/%s/pages/domains", PathEscape(project))
149
150 req, err := s.client.NewRequest(http.MethodPost, u, opt, options)
151 if err != nil {
152 return nil, nil, err
153 }
154
155 pd := new(PagesDomain)
156 resp, err := s.client.Do(req, pd)
157 if err != nil {
158 return nil, resp, err
159 }
160
161 return pd, resp, nil
162 }
163
164
165
166
167
168 type UpdatePagesDomainOptions struct {
169 AutoSslEnabled *bool `url:"auto_ssl_enabled,omitempty" json:"auto_ssl_enabled,omitempty"`
170 Certificate *string `url:"certificate,omitempty" json:"certificate,omitempty"`
171 Key *string `url:"key,omitempty" json:"key,omitempty"`
172 }
173
174
175
176
177
178 func (s *PagesDomainsService) UpdatePagesDomain(pid interface{}, domain string, opt *UpdatePagesDomainOptions, options ...RequestOptionFunc) (*PagesDomain, *Response, error) {
179 project, err := parseID(pid)
180 if err != nil {
181 return nil, nil, err
182 }
183 u := fmt.Sprintf("projects/%s/pages/domains/%s", PathEscape(project), domain)
184
185 req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
186 if err != nil {
187 return nil, nil, err
188 }
189
190 pd := new(PagesDomain)
191 resp, err := s.client.Do(req, pd)
192 if err != nil {
193 return nil, resp, err
194 }
195
196 return pd, resp, nil
197 }
198
199
200
201
202
203 func (s *PagesDomainsService) DeletePagesDomain(pid interface{}, domain string, options ...RequestOptionFunc) (*Response, error) {
204 project, err := parseID(pid)
205 if err != nil {
206 return nil, err
207 }
208 u := fmt.Sprintf("projects/%s/pages/domains/%s", PathEscape(project), domain)
209
210 req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
211 if err != nil {
212 return nil, err
213 }
214
215 return s.client.Do(req, nil)
216 }
217
View as plain text