1
2
3
4
5
6 package github
7
8 import (
9 "context"
10 "fmt"
11 )
12
13
14 type TeamDiscussion struct {
15 Author *User `json:"author,omitempty"`
16 Body *string `json:"body,omitempty"`
17 BodyHTML *string `json:"body_html,omitempty"`
18 BodyVersion *string `json:"body_version,omitempty"`
19 CommentsCount *int `json:"comments_count,omitempty"`
20 CommentsURL *string `json:"comments_url,omitempty"`
21 CreatedAt *Timestamp `json:"created_at,omitempty"`
22 LastEditedAt *Timestamp `json:"last_edited_at,omitempty"`
23 HTMLURL *string `json:"html_url,omitempty"`
24 NodeID *string `json:"node_id,omitempty"`
25 Number *int `json:"number,omitempty"`
26 Pinned *bool `json:"pinned,omitempty"`
27 Private *bool `json:"private,omitempty"`
28 TeamURL *string `json:"team_url,omitempty"`
29 Title *string `json:"title,omitempty"`
30 UpdatedAt *Timestamp `json:"updated_at,omitempty"`
31 URL *string `json:"url,omitempty"`
32 Reactions *Reactions `json:"reactions,omitempty"`
33 }
34
35 func (d TeamDiscussion) String() string {
36 return Stringify(d)
37 }
38
39
40
41 type DiscussionListOptions struct {
42
43
44 Direction string `url:"direction,omitempty"`
45
46 ListOptions
47 }
48
49
50
51
52
53 func (s *TeamsService) ListDiscussionsByID(ctx context.Context, orgID, teamID int64, opts *DiscussionListOptions) ([]*TeamDiscussion, *Response, error) {
54 u := fmt.Sprintf("organizations/%v/team/%v/discussions", orgID, teamID)
55 u, err := addOptions(u, opts)
56 if err != nil {
57 return nil, nil, err
58 }
59
60 req, err := s.client.NewRequest("GET", u, nil)
61 if err != nil {
62 return nil, nil, err
63 }
64
65 var teamDiscussions []*TeamDiscussion
66 resp, err := s.client.Do(ctx, req, &teamDiscussions)
67 if err != nil {
68 return nil, resp, err
69 }
70
71 return teamDiscussions, resp, nil
72 }
73
74
75
76
77
78 func (s *TeamsService) ListDiscussionsBySlug(ctx context.Context, org, slug string, opts *DiscussionListOptions) ([]*TeamDiscussion, *Response, error) {
79 u := fmt.Sprintf("orgs/%v/teams/%v/discussions", org, slug)
80 u, err := addOptions(u, opts)
81 if err != nil {
82 return nil, nil, err
83 }
84
85 req, err := s.client.NewRequest("GET", u, nil)
86 if err != nil {
87 return nil, nil, err
88 }
89
90 var teamDiscussions []*TeamDiscussion
91 resp, err := s.client.Do(ctx, req, &teamDiscussions)
92 if err != nil {
93 return nil, resp, err
94 }
95
96 return teamDiscussions, resp, nil
97 }
98
99
100
101
102
103 func (s *TeamsService) GetDiscussionByID(ctx context.Context, orgID, teamID int64, discussionNumber int) (*TeamDiscussion, *Response, error) {
104 u := fmt.Sprintf("organizations/%v/team/%v/discussions/%v", orgID, teamID, discussionNumber)
105 req, err := s.client.NewRequest("GET", u, nil)
106 if err != nil {
107 return nil, nil, err
108 }
109
110 teamDiscussion := &TeamDiscussion{}
111 resp, err := s.client.Do(ctx, req, teamDiscussion)
112 if err != nil {
113 return nil, resp, err
114 }
115
116 return teamDiscussion, resp, nil
117 }
118
119
120
121
122
123 func (s *TeamsService) GetDiscussionBySlug(ctx context.Context, org, slug string, discussionNumber int) (*TeamDiscussion, *Response, error) {
124 u := fmt.Sprintf("orgs/%v/teams/%v/discussions/%v", org, slug, discussionNumber)
125 req, err := s.client.NewRequest("GET", u, nil)
126 if err != nil {
127 return nil, nil, err
128 }
129
130 teamDiscussion := &TeamDiscussion{}
131 resp, err := s.client.Do(ctx, req, teamDiscussion)
132 if err != nil {
133 return nil, resp, err
134 }
135
136 return teamDiscussion, resp, nil
137 }
138
139
140
141
142
143 func (s *TeamsService) CreateDiscussionByID(ctx context.Context, orgID, teamID int64, discussion TeamDiscussion) (*TeamDiscussion, *Response, error) {
144 u := fmt.Sprintf("organizations/%v/team/%v/discussions", orgID, teamID)
145 req, err := s.client.NewRequest("POST", u, discussion)
146 if err != nil {
147 return nil, nil, err
148 }
149
150 teamDiscussion := &TeamDiscussion{}
151 resp, err := s.client.Do(ctx, req, teamDiscussion)
152 if err != nil {
153 return nil, resp, err
154 }
155
156 return teamDiscussion, resp, nil
157 }
158
159
160
161
162
163 func (s *TeamsService) CreateDiscussionBySlug(ctx context.Context, org, slug string, discussion TeamDiscussion) (*TeamDiscussion, *Response, error) {
164 u := fmt.Sprintf("orgs/%v/teams/%v/discussions", org, slug)
165 req, err := s.client.NewRequest("POST", u, discussion)
166 if err != nil {
167 return nil, nil, err
168 }
169
170 teamDiscussion := &TeamDiscussion{}
171 resp, err := s.client.Do(ctx, req, teamDiscussion)
172 if err != nil {
173 return nil, resp, err
174 }
175
176 return teamDiscussion, resp, nil
177 }
178
179
180
181
182
183
184 func (s *TeamsService) EditDiscussionByID(ctx context.Context, orgID, teamID int64, discussionNumber int, discussion TeamDiscussion) (*TeamDiscussion, *Response, error) {
185 u := fmt.Sprintf("organizations/%v/team/%v/discussions/%v", orgID, teamID, discussionNumber)
186 req, err := s.client.NewRequest("PATCH", u, discussion)
187 if err != nil {
188 return nil, nil, err
189 }
190
191 teamDiscussion := &TeamDiscussion{}
192 resp, err := s.client.Do(ctx, req, teamDiscussion)
193 if err != nil {
194 return nil, resp, err
195 }
196
197 return teamDiscussion, resp, nil
198 }
199
200
201
202
203
204
205 func (s *TeamsService) EditDiscussionBySlug(ctx context.Context, org, slug string, discussionNumber int, discussion TeamDiscussion) (*TeamDiscussion, *Response, error) {
206 u := fmt.Sprintf("orgs/%v/teams/%v/discussions/%v", org, slug, discussionNumber)
207 req, err := s.client.NewRequest("PATCH", u, discussion)
208 if err != nil {
209 return nil, nil, err
210 }
211
212 teamDiscussion := &TeamDiscussion{}
213 resp, err := s.client.Do(ctx, req, teamDiscussion)
214 if err != nil {
215 return nil, resp, err
216 }
217
218 return teamDiscussion, resp, nil
219 }
220
221
222
223
224
225 func (s *TeamsService) DeleteDiscussionByID(ctx context.Context, orgID, teamID int64, discussionNumber int) (*Response, error) {
226 u := fmt.Sprintf("organizations/%v/team/%v/discussions/%v", orgID, teamID, discussionNumber)
227 req, err := s.client.NewRequest("DELETE", u, nil)
228 if err != nil {
229 return nil, err
230 }
231
232 return s.client.Do(ctx, req, nil)
233 }
234
235
236
237
238
239 func (s *TeamsService) DeleteDiscussionBySlug(ctx context.Context, org, slug string, discussionNumber int) (*Response, error) {
240 u := fmt.Sprintf("orgs/%v/teams/%v/discussions/%v", org, slug, discussionNumber)
241 req, err := s.client.NewRequest("DELETE", u, nil)
242 if err != nil {
243 return nil, err
244 }
245
246 return s.client.Do(ctx, req, nil)
247 }
248
View as plain text