1
2
3
4
5
6 package github
7
8 import (
9 "context"
10 "fmt"
11 )
12
13
14 type Pages struct {
15 URL *string `json:"url,omitempty"`
16 Status *string `json:"status,omitempty"`
17 CNAME *string `json:"cname,omitempty"`
18 Custom404 *bool `json:"custom_404,omitempty"`
19 HTMLURL *string `json:"html_url,omitempty"`
20 BuildType *string `json:"build_type,omitempty"`
21 Source *PagesSource `json:"source,omitempty"`
22 Public *bool `json:"public,omitempty"`
23 HTTPSCertificate *PagesHTTPSCertificate `json:"https_certificate,omitempty"`
24 HTTPSEnforced *bool `json:"https_enforced,omitempty"`
25 }
26
27
28 type PagesSource struct {
29 Branch *string `json:"branch,omitempty"`
30 Path *string `json:"path,omitempty"`
31 }
32
33
34 type PagesError struct {
35 Message *string `json:"message,omitempty"`
36 }
37
38
39 type PagesBuild struct {
40 URL *string `json:"url,omitempty"`
41 Status *string `json:"status,omitempty"`
42 Error *PagesError `json:"error,omitempty"`
43 Pusher *User `json:"pusher,omitempty"`
44 Commit *string `json:"commit,omitempty"`
45 Duration *int `json:"duration,omitempty"`
46 CreatedAt *Timestamp `json:"created_at,omitempty"`
47 UpdatedAt *Timestamp `json:"updated_at,omitempty"`
48 }
49
50
51 type PagesDomain struct {
52 Host *string `json:"host,omitempty"`
53 URI *string `json:"uri,omitempty"`
54 Nameservers *string `json:"nameservers,omitempty"`
55 DNSResolves *bool `json:"dns_resolves,omitempty"`
56 IsProxied *bool `json:"is_proxied,omitempty"`
57 IsCloudflareIP *bool `json:"is_cloudflare_ip,omitempty"`
58 IsFastlyIP *bool `json:"is_fastly_ip,omitempty"`
59 IsOldIPAddress *bool `json:"is_old_ip_address,omitempty"`
60 IsARecord *bool `json:"is_a_record,omitempty"`
61 HasCNAMERecord *bool `json:"has_cname_record,omitempty"`
62 HasMXRecordsPresent *bool `json:"has_mx_records_present,omitempty"`
63 IsValidDomain *bool `json:"is_valid_domain,omitempty"`
64 IsApexDomain *bool `json:"is_apex_domain,omitempty"`
65 ShouldBeARecord *bool `json:"should_be_a_record,omitempty"`
66 IsCNAMEToGithubUserDomain *bool `json:"is_cname_to_github_user_domain,omitempty"`
67 IsCNAMEToPagesDotGithubDotCom *bool `json:"is_cname_to_pages_dot_github_dot_com,omitempty"`
68 IsCNAMEToFastly *bool `json:"is_cname_to_fastly,omitempty"`
69 IsPointedToGithubPagesIP *bool `json:"is_pointed_to_github_pages_ip,omitempty"`
70 IsNonGithubPagesIPPresent *bool `json:"is_non_github_pages_ip_present,omitempty"`
71 IsPagesDomain *bool `json:"is_pages_domain,omitempty"`
72 IsServedByPages *bool `json:"is_served_by_pages,omitempty"`
73 IsValid *bool `json:"is_valid,omitempty"`
74 Reason *string `json:"reason,omitempty"`
75 RespondsToHTTPS *bool `json:"responds_to_https,omitempty"`
76 EnforcesHTTPS *bool `json:"enforces_https,omitempty"`
77 HTTPSError *string `json:"https_error,omitempty"`
78 IsHTTPSEligible *bool `json:"is_https_eligible,omitempty"`
79 CAAError *string `json:"caa_error,omitempty"`
80 }
81
82
83 type PagesHealthCheckResponse struct {
84 Domain *PagesDomain `json:"domain,omitempty"`
85 AltDomain *PagesDomain `json:"alt_domain,omitempty"`
86 }
87
88
89 type PagesHTTPSCertificate struct {
90 State *string `json:"state,omitempty"`
91 Description *string `json:"description,omitempty"`
92 Domains []string `json:"domains,omitempty"`
93
94 ExpiresAt *string `json:"expires_at,omitempty"`
95 }
96
97
98
99 type createPagesRequest struct {
100 BuildType *string `json:"build_type,omitempty"`
101 Source *PagesSource `json:"source,omitempty"`
102 }
103
104
105
106
107 func (s *RepositoriesService) EnablePages(ctx context.Context, owner, repo string, pages *Pages) (*Pages, *Response, error) {
108 u := fmt.Sprintf("repos/%v/%v/pages", owner, repo)
109
110 pagesReq := &createPagesRequest{
111 BuildType: pages.BuildType,
112 Source: pages.Source,
113 }
114
115 req, err := s.client.NewRequest("POST", u, pagesReq)
116 if err != nil {
117 return nil, nil, err
118 }
119
120 req.Header.Set("Accept", mediaTypeEnablePagesAPIPreview)
121
122 enable := new(Pages)
123 resp, err := s.client.Do(ctx, req, enable)
124 if err != nil {
125 return nil, resp, err
126 }
127
128 return enable, resp, nil
129 }
130
131
132 type PagesUpdate struct {
133
134
135 CNAME *string `json:"cname"`
136
137
138
139 BuildType *string `json:"build_type,omitempty"`
140
141
142
143
144 Source *PagesSource `json:"source,omitempty"`
145
146
147
148
149 Public *bool `json:"public,omitempty"`
150
151 HTTPSEnforced *bool `json:"https_enforced,omitempty"`
152 }
153
154
155
156
157 func (s *RepositoriesService) UpdatePages(ctx context.Context, owner, repo string, opts *PagesUpdate) (*Response, error) {
158 u := fmt.Sprintf("repos/%v/%v/pages", owner, repo)
159
160 req, err := s.client.NewRequest("PUT", u, opts)
161 if err != nil {
162 return nil, err
163 }
164
165 resp, err := s.client.Do(ctx, req, nil)
166 if err != nil {
167 return resp, err
168 }
169
170 return resp, nil
171 }
172
173
174
175
176 func (s *RepositoriesService) DisablePages(ctx context.Context, owner, repo string) (*Response, error) {
177 u := fmt.Sprintf("repos/%v/%v/pages", owner, repo)
178 req, err := s.client.NewRequest("DELETE", u, nil)
179 if err != nil {
180 return nil, err
181 }
182
183
184 req.Header.Set("Accept", mediaTypeEnablePagesAPIPreview)
185
186 return s.client.Do(ctx, req, nil)
187 }
188
189
190
191
192 func (s *RepositoriesService) GetPagesInfo(ctx context.Context, owner, repo string) (*Pages, *Response, error) {
193 u := fmt.Sprintf("repos/%v/%v/pages", owner, repo)
194 req, err := s.client.NewRequest("GET", u, nil)
195 if err != nil {
196 return nil, nil, err
197 }
198
199 site := new(Pages)
200 resp, err := s.client.Do(ctx, req, site)
201 if err != nil {
202 return nil, resp, err
203 }
204
205 return site, resp, nil
206 }
207
208
209
210
211 func (s *RepositoriesService) ListPagesBuilds(ctx context.Context, owner, repo string, opts *ListOptions) ([]*PagesBuild, *Response, error) {
212 u := fmt.Sprintf("repos/%v/%v/pages/builds", owner, repo)
213 u, err := addOptions(u, opts)
214 if err != nil {
215 return nil, nil, err
216 }
217
218 req, err := s.client.NewRequest("GET", u, nil)
219 if err != nil {
220 return nil, nil, err
221 }
222
223 var pages []*PagesBuild
224 resp, err := s.client.Do(ctx, req, &pages)
225 if err != nil {
226 return nil, resp, err
227 }
228
229 return pages, resp, nil
230 }
231
232
233
234
235 func (s *RepositoriesService) GetLatestPagesBuild(ctx context.Context, owner, repo string) (*PagesBuild, *Response, error) {
236 u := fmt.Sprintf("repos/%v/%v/pages/builds/latest", owner, repo)
237 req, err := s.client.NewRequest("GET", u, nil)
238 if err != nil {
239 return nil, nil, err
240 }
241
242 build := new(PagesBuild)
243 resp, err := s.client.Do(ctx, req, build)
244 if err != nil {
245 return nil, resp, err
246 }
247
248 return build, resp, nil
249 }
250
251
252
253
254 func (s *RepositoriesService) GetPageBuild(ctx context.Context, owner, repo string, id int64) (*PagesBuild, *Response, error) {
255 u := fmt.Sprintf("repos/%v/%v/pages/builds/%v", owner, repo, id)
256 req, err := s.client.NewRequest("GET", u, nil)
257 if err != nil {
258 return nil, nil, err
259 }
260
261 build := new(PagesBuild)
262 resp, err := s.client.Do(ctx, req, build)
263 if err != nil {
264 return nil, resp, err
265 }
266
267 return build, resp, nil
268 }
269
270
271
272
273 func (s *RepositoriesService) RequestPageBuild(ctx context.Context, owner, repo string) (*PagesBuild, *Response, error) {
274 u := fmt.Sprintf("repos/%v/%v/pages/builds", owner, repo)
275 req, err := s.client.NewRequest("POST", u, nil)
276 if err != nil {
277 return nil, nil, err
278 }
279
280 build := new(PagesBuild)
281 resp, err := s.client.Do(ctx, req, build)
282 if err != nil {
283 return nil, resp, err
284 }
285
286 return build, resp, nil
287 }
288
289
290
291
292 func (s *RepositoriesService) GetPageHealthCheck(ctx context.Context, owner, repo string) (*PagesHealthCheckResponse, *Response, error) {
293 u := fmt.Sprintf("repos/%v/%v/pages/health", owner, repo)
294 req, err := s.client.NewRequest("GET", u, nil)
295 if err != nil {
296 return nil, nil, err
297 }
298
299 healthCheckResponse := new(PagesHealthCheckResponse)
300 resp, err := s.client.Do(ctx, req, healthCheckResponse)
301 if err != nil {
302 return nil, resp, err
303 }
304
305 return healthCheckResponse, resp, nil
306 }
307
View as plain text