1
2
3
4
5
6 package github
7
8 import (
9 "context"
10 "fmt"
11 )
12
13
14
15 type ProjectListOptions struct {
16
17 State string `url:"state,omitempty"`
18
19 ListOptions
20 }
21
22
23
24
25 func (s *RepositoriesService) ListProjects(ctx context.Context, owner, repo string, opts *ProjectListOptions) ([]*Project, *Response, error) {
26 u := fmt.Sprintf("repos/%v/%v/projects", owner, repo)
27 u, err := addOptions(u, opts)
28 if err != nil {
29 return nil, nil, err
30 }
31
32 req, err := s.client.NewRequest("GET", u, nil)
33 if err != nil {
34 return nil, nil, err
35 }
36
37
38 req.Header.Set("Accept", mediaTypeProjectsPreview)
39
40 var projects []*Project
41 resp, err := s.client.Do(ctx, req, &projects)
42 if err != nil {
43 return nil, resp, err
44 }
45
46 return projects, resp, nil
47 }
48
49
50
51
52 func (s *RepositoriesService) CreateProject(ctx context.Context, owner, repo string, opts *ProjectOptions) (*Project, *Response, error) {
53 u := fmt.Sprintf("repos/%v/%v/projects", owner, repo)
54 req, err := s.client.NewRequest("POST", u, opts)
55 if err != nil {
56 return nil, nil, err
57 }
58
59
60 req.Header.Set("Accept", mediaTypeProjectsPreview)
61
62 project := &Project{}
63 resp, err := s.client.Do(ctx, req, project)
64 if err != nil {
65 return nil, resp, err
66 }
67
68 return project, resp, nil
69 }
70
View as plain text