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 Source *PagesSource `json:"source,omitempty"`
21 Public *bool `json:"public,omitempty"`
22 HTTPSCertificate *PagesHTTPSCertificate `json:"https_certificate,omitempty"`
23 HTTPSEnforced *bool `json:"https_enforced,omitempty"`
24 }
25
26
27 type PagesSource struct {
28 Branch *string `json:"branch,omitempty"`
29 Path *string `json:"path,omitempty"`
30 }
31
32
33 type PagesError struct {
34 Message *string `json:"message,omitempty"`
35 }
36
37
38 type PagesBuild struct {
39 URL *string `json:"url,omitempty"`
40 Status *string `json:"status,omitempty"`
41 Error *PagesError `json:"error,omitempty"`
42 Pusher *User `json:"pusher,omitempty"`
43 Commit *string `json:"commit,omitempty"`
44 Duration *int `json:"duration,omitempty"`
45 CreatedAt *Timestamp `json:"created_at,omitempty"`
46 UpdatedAt *Timestamp `json:"updated_at,omitempty"`
47 }
48
49
50 type PagesHTTPSCertificate struct {
51 State *string `json:"state,omitempty"`
52 Description *string `json:"description,omitempty"`
53 Domains []string `json:"domains,omitempty"`
54
55 ExpiresAt *string `json:"expires_at,omitempty"`
56 }
57
58
59
60 type createPagesRequest struct {
61 Source *PagesSource `json:"source,omitempty"`
62 }
63
64
65
66
67 func (s *RepositoriesService) EnablePages(ctx context.Context, owner, repo string, pages *Pages) (*Pages, *Response, error) {
68 u := fmt.Sprintf("repos/%v/%v/pages", owner, repo)
69
70 pagesReq := &createPagesRequest{
71 Source: pages.Source,
72 }
73
74 req, err := s.client.NewRequest("POST", u, pagesReq)
75 if err != nil {
76 return nil, nil, err
77 }
78
79 req.Header.Set("Accept", mediaTypeEnablePagesAPIPreview)
80
81 enable := new(Pages)
82 resp, err := s.client.Do(ctx, req, enable)
83 if err != nil {
84 return nil, resp, err
85 }
86
87 return enable, resp, nil
88 }
89
90
91 type PagesUpdate struct {
92
93
94 CNAME *string `json:"cname"`
95
96
97
98
99 Source *PagesSource `json:"source,omitempty"`
100
101
102
103
104 Public *bool `json:"public,omitempty"`
105
106 HTTPSEnforced *bool `json:"https_enforced,omitempty"`
107 }
108
109
110
111
112 func (s *RepositoriesService) UpdatePages(ctx context.Context, owner, repo string, opts *PagesUpdate) (*Response, error) {
113 u := fmt.Sprintf("repos/%v/%v/pages", owner, repo)
114
115 req, err := s.client.NewRequest("PUT", u, opts)
116 if err != nil {
117 return nil, err
118 }
119
120 resp, err := s.client.Do(ctx, req, nil)
121 if err != nil {
122 return resp, err
123 }
124
125 return resp, nil
126 }
127
128
129
130
131 func (s *RepositoriesService) DisablePages(ctx context.Context, owner, repo string) (*Response, error) {
132 u := fmt.Sprintf("repos/%v/%v/pages", owner, repo)
133 req, err := s.client.NewRequest("DELETE", u, nil)
134 if err != nil {
135 return nil, err
136 }
137
138
139 req.Header.Set("Accept", mediaTypeEnablePagesAPIPreview)
140
141 return s.client.Do(ctx, req, nil)
142 }
143
144
145
146
147 func (s *RepositoriesService) GetPagesInfo(ctx context.Context, owner, repo string) (*Pages, *Response, error) {
148 u := fmt.Sprintf("repos/%v/%v/pages", owner, repo)
149 req, err := s.client.NewRequest("GET", u, nil)
150 if err != nil {
151 return nil, nil, err
152 }
153
154 site := new(Pages)
155 resp, err := s.client.Do(ctx, req, site)
156 if err != nil {
157 return nil, resp, err
158 }
159
160 return site, resp, nil
161 }
162
163
164
165
166 func (s *RepositoriesService) ListPagesBuilds(ctx context.Context, owner, repo string, opts *ListOptions) ([]*PagesBuild, *Response, error) {
167 u := fmt.Sprintf("repos/%v/%v/pages/builds", owner, repo)
168 u, err := addOptions(u, opts)
169 if err != nil {
170 return nil, nil, err
171 }
172
173 req, err := s.client.NewRequest("GET", u, nil)
174 if err != nil {
175 return nil, nil, err
176 }
177
178 var pages []*PagesBuild
179 resp, err := s.client.Do(ctx, req, &pages)
180 if err != nil {
181 return nil, resp, err
182 }
183
184 return pages, resp, nil
185 }
186
187
188
189
190 func (s *RepositoriesService) GetLatestPagesBuild(ctx context.Context, owner, repo string) (*PagesBuild, *Response, error) {
191 u := fmt.Sprintf("repos/%v/%v/pages/builds/latest", owner, repo)
192 req, err := s.client.NewRequest("GET", u, nil)
193 if err != nil {
194 return nil, nil, err
195 }
196
197 build := new(PagesBuild)
198 resp, err := s.client.Do(ctx, req, build)
199 if err != nil {
200 return nil, resp, err
201 }
202
203 return build, resp, nil
204 }
205
206
207
208
209 func (s *RepositoriesService) GetPageBuild(ctx context.Context, owner, repo string, id int64) (*PagesBuild, *Response, error) {
210 u := fmt.Sprintf("repos/%v/%v/pages/builds/%v", owner, repo, id)
211 req, err := s.client.NewRequest("GET", u, nil)
212 if err != nil {
213 return nil, nil, err
214 }
215
216 build := new(PagesBuild)
217 resp, err := s.client.Do(ctx, req, build)
218 if err != nil {
219 return nil, resp, err
220 }
221
222 return build, resp, nil
223 }
224
225
226
227
228 func (s *RepositoriesService) RequestPageBuild(ctx context.Context, owner, repo string) (*PagesBuild, *Response, error) {
229 u := fmt.Sprintf("repos/%v/%v/pages/builds", owner, repo)
230 req, err := s.client.NewRequest("POST", u, nil)
231 if err != nil {
232 return nil, nil, err
233 }
234
235 build := new(PagesBuild)
236 resp, err := s.client.Do(ctx, req, build)
237 if err != nil {
238 return nil, resp, err
239 }
240
241 return build, resp, nil
242 }
243
View as plain text