octokit 1.17.1 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  # CHANGELOG
2
2
 
3
+ * [1.18.0 - October 15, 2012](https://github.com/pengwynn/octokit/compare/v1.17.1...v1.18.0)
3
4
  * [1.17.1 - October 11, 2012](https://github.com/pengwynn/octokit/compare/v1.17.0...v1.17.1)
4
5
  * [1.17.0 - October 8, 2012](https://github.com/pengwynn/octokit/compare/v1.16.0...v1.17.0)
5
6
  * [1.16.0 - September 25,2012](https://github.com/pengwynn/octokit/compare/v1.15.1...v1.16.0)
@@ -132,6 +132,74 @@ module Octokit
132
132
  response.status == 204
133
133
  end
134
134
 
135
+ # List gist comments
136
+ #
137
+ # @param gist_id [Integer] Gist Id.
138
+ # @return [Array<Hashie::Mash>] Array of hashes representing comments.
139
+ # @see http://developer.github.com/v3/gists/comments/#list-comments-on-a-gist
140
+ # @example
141
+ # Octokit.gist_comments(3528645)
142
+ def gist_comments(gist_id, options={})
143
+ get "gists/#{gist_id}/comments", options, 3
144
+ end
145
+
146
+ # Get gist comment
147
+ #
148
+ # @param gist_comment_id [Integer] Id of the gist comment.
149
+ # @return [Hashie::Mash] Hash representing gist comment.
150
+ # @see http://developer.github.com/v3/gists/comments/#get-a-single-comment
151
+ # @example
152
+ # Octokit.gist_comment(451398)
153
+ def gist_comment(gist_comment_id, options={})
154
+ get "gists/comments/#{gist_comment_id}", options, 3
155
+ end
156
+
157
+ # Create gist comment
158
+ #
159
+ # Requires authenticated client.
160
+ #
161
+ # @param gist_id [Integer] Id of the gist.
162
+ # @param comment [String] Comment contents.
163
+ # @return [Hashie::Mash] Hash representing the new comment.
164
+ # @see Octokit::Client
165
+ # @see http://developer.github.com/v3/gists/comments/#create-a-comment
166
+ # @example
167
+ # @client.create_gist_comment(3528645, 'This is very helpful.')
168
+ def create_gist_comment(gist_id, comment, options={})
169
+ options.merge!({:body => comment})
170
+ post "gists/#{gist_id}/comments", options, 3
171
+ end
172
+
173
+ # Update gist comment
174
+ #
175
+ # Requires authenticated client
176
+ #
177
+ # @param gist_comment_id [Integer] Id of the gist comment to update.
178
+ # @param comment [String] Updated comment contents.
179
+ # @return [Hashie::Mash] Hash representing the updated comment.
180
+ # @see Octokit::Client
181
+ # @see http://developer.github.com/v3/gists/comments/#edit-a-comment
182
+ # @example
183
+ # @client.update_gist_comment(3528645, ':heart:')
184
+ def update_gist_comment(gist_comment_id, comment, options={})
185
+ options.merge!({:body => comment})
186
+ patch "gists/comments/#{gist_comment_id}", options, 3
187
+ end
188
+
189
+ # Delete gist comment
190
+ #
191
+ # Requires authenticated client.
192
+ #
193
+ # @param gist_comment_id [Integer] Id of the gist comment to delete.
194
+ # @return [Boolean] True if comment deleted, false otherwise.
195
+ # @see Octokit::Client
196
+ # @see http://developer.github.com/v3/gists/comments/#delete-a-comment
197
+ # @example
198
+ # @client.delete_gist_comment(586399)
199
+ def delete_gist_comment(gist_comment_id, options={})
200
+ delete("gists/comments/#{gist_comment_id}", options, 3, true, true).status == 204
201
+ end
202
+
135
203
  end
136
204
  end
137
205
  end
@@ -75,6 +75,60 @@ module Octokit
75
75
  }
76
76
  post("repos/#{Repository.new(repo)}/git/blobs", options.merge(parameters), 3).sha
77
77
  end
78
+
79
+ # Get a tag
80
+ #
81
+ # @param repo [String, Hash, Repository] A GitHub repository.
82
+ # @param tag_sha [String] The SHA of the tag to fetch.
83
+ # @return [Hashie::Mash] Hash representing the tag.
84
+ # @see http://developer.github.com/v3/git/tags/#get-a-tag
85
+ # @example Fetch a tag
86
+ # Octokit.tag('pengwynn/octokit', '23aad20633f4d2981b1c7209a800db3014774e96')
87
+ def tag(repo, tag_sha, options={})
88
+ get("repos/#{Repository.new repo}/git/tags/#{tag_sha}", options, 3)
89
+ end
90
+
91
+ # Create a tag
92
+ #
93
+ # Requires authenticated client.
94
+ #
95
+ # @param repo [String, Hash, Repository] A GitHub repository.
96
+ # @param tag [String] Tag string.
97
+ # @param message [String] Tag message.
98
+ # @param object_sha [String] SHA of the git object this is tagging.
99
+ # @param type [String] Type of the object we're tagging. Normally this is
100
+ # a `commit` but it can also be a `tree` or a `blob`.
101
+ # @param tagger_name [String] Name of the author of the tag.
102
+ # @param tagger_email [String] Email of the author of the tag.
103
+ # @param tagger_date [string] Timestamp of when this object was tagged.
104
+ # @return [Hashie::Mash] Hash representing new tag.
105
+ # @see Octokit::Client
106
+ # @see http://developer.github.com/v3/git/tags/#create-a-tag-object
107
+ # @example
108
+ # @client.create_tag(
109
+ # "pengwynn/octokit",
110
+ # "v9000.0.0",
111
+ # "Version 9000\n",
112
+ # "f4cdf6eb734f32343ce3f27670c17b35f54fd82e",
113
+ # "commit",
114
+ # "Wynn Netherland",
115
+ # "wynn.netherland@gmail.com",
116
+ # "2012-06-03T17:03:11-07:00"
117
+ # )
118
+ def create_tag(repo, tag, message, object_sha, type, tagger_name, tagger_email, tagger_date, options={})
119
+ options.merge!(
120
+ :tag => tag,
121
+ :message => message,
122
+ :object => object_sha,
123
+ :type => type,
124
+ :tagger => {
125
+ :name => tagger_name,
126
+ :email => tagger_email,
127
+ :date => tagger_date
128
+ }
129
+ )
130
+ post("repos/#{Repository.new repo}/git/tags", options, 3)
131
+ end
78
132
  end
79
133
  end
80
134
  end
@@ -1,16 +1,76 @@
1
1
  module Octokit
2
2
  class Client
3
3
  module Organizations
4
+ # Get an organization
5
+ #
6
+ # @param org [String] Organization GitHub username.
7
+ # @return [Hashie::Mash] Hash representing GitHub organization.
8
+ # @see http://developer.github.com/v3/orgs/#get-an-organization
9
+ # @example
10
+ # Octokit.organization('github')
11
+ # @example
12
+ # Octokit.org('github')
4
13
  def organization(org, options={})
5
14
  get("orgs/#{org}", options, 3)
6
15
  end
7
16
  alias :org :organization
8
17
 
18
+ # Update an organization.
19
+ #
20
+ # Requires authenticated client with proper organization permissions.
21
+ #
22
+ # @param org [String] Organization GitHub username.
23
+ # @param values [Hash] The updated organization attributes.
24
+ # @option values [String] :billing_email Billing email address. This address is not publicized.
25
+ # @option values [String] :company Company name.
26
+ # @option values [String] :email Publicly visible email address.
27
+ # @option values [String] :location Location of organization.
28
+ # @option values [String] :name GitHub username for organization.
29
+ # @return [Hashie::Mash] Hash representing GitHub organization.
30
+ # @see Octokit::Client
31
+ # @see http://developer.github.com/v3/orgs/#edit-an-organization
32
+ # @example
33
+ # @client.update_organization('github', {
34
+ # :billing_email => 'support@github.com',
35
+ # :company => 'GitHub',
36
+ # :email => 'support@github.com',
37
+ # :location => 'San Francisco',
38
+ # :name => 'github'
39
+ # })
40
+ # @example
41
+ # @client.update_org('github', {:company => 'Unicorns, Inc.'})
9
42
  def update_organization(org, values, options={})
10
43
  patch("orgs/#{org}", options.merge({:organization => values}), 3)
11
44
  end
12
45
  alias :update_org :update_organization
13
46
 
47
+ # Get organizations for a user.
48
+ #
49
+ # Nonauthenticated calls to this method will return organizations that
50
+ # the user is a public member.
51
+ #
52
+ # Use an authenicated client to get both public and private organizations
53
+ # for a user.
54
+ #
55
+ # Calling this method on a `@client` will return that users organizations.
56
+ # Private organizations are included only if the `@client` is authenticated.
57
+ #
58
+ # @param user [String] Username of the user to get list of organizations.
59
+ # @return [Array<Hashie::Mash>] Array of hashes representing organizations.
60
+ # @see Octokit::Client
61
+ # @see http://developer.github.com/v3/orgs/#list-user-organizations
62
+ # @example
63
+ # Octokit.organizations('pengwynn')
64
+ # @example
65
+ # @client.organizations('pengwynn')
66
+ # @example
67
+ # Octokit.orgs('pengwynn')
68
+ # @example
69
+ # Octokit.list_organizations('pengwynn')
70
+ # @example
71
+ # Octokit.list_orgs('pengwynn')
72
+ # @example
73
+ # @client.organizations
14
74
  def organizations(user=nil, options={})
15
75
  if user
16
76
  get("users/#{user}/orgs", options, 3)
@@ -24,45 +84,171 @@ module Octokit
24
84
 
25
85
  # List organization repositories
26
86
  #
27
- # @see http://developer.github.com/v3/repos/#list-organization-repositories
87
+ # Public repositories are available without authentication. Private repos
88
+ # require authenticated organization member.
89
+ #
28
90
  # @param org [String] Organization handle for which to list repos
91
+ # @option options [String] :type ('all') Filter by repository type.
92
+ # `all`, `public`, `member` or `private`.
93
+ #
29
94
  # @return [Array<Hashie::Mash>] List of repositories
95
+ # @see Octokit::Client
96
+ # @see http://developer.github.com/v3/repos/#list-organization-repositories
97
+ # @example
98
+ # Octokit.organization_repositories('github')
99
+ # @example
100
+ # Octokit.org_repositories('github')
101
+ # @example
102
+ # Octokit.org_repos('github')
103
+ # @example
104
+ # @client.org_repos('github', {:type => 'private'})
30
105
  def organization_repositories(org, options={})
31
106
  get("orgs/#{org}/repos", options, 3)
32
107
  end
33
108
  alias :org_repositories :organization_repositories
34
109
  alias :org_repos :organization_repositories
35
110
 
111
+ # Get organization members
112
+ #
113
+ # Public members of the organization are returned by default. An
114
+ # authenticated client that is a member of the GitHub organization
115
+ # is required to get private members.
116
+ #
117
+ # @param org [String] Organization GitHub username.
118
+ # @return [Array<Hashie::Mash>] Array of hashes representing users.
119
+ # @see Octokit::Client
120
+ # @see http://developer.github.com/v3/orgs/members/#list-members
121
+ # @example
122
+ # Octokit.organization_members('github')
123
+ # @example
124
+ # @client.organization_members('github')
125
+ # @example
126
+ # Octokit.org_members('github')
36
127
  def organization_members(org, options={})
37
128
  get("orgs/#{org}/members", options, 3)
38
129
  end
39
130
  alias :org_members :organization_members
40
131
 
132
+ # List teams
133
+ #
134
+ # Requires authenticated organization member.
135
+ #
136
+ # @param org [String] Organization GitHub username.
137
+ # @return [Array<Hashie::Mash>] Array of hashes representing teams.
138
+ # @see Octokit::Client
139
+ # @see http://developer.github.com/v3/orgs/teams/#list-teams
140
+ # @example
141
+ # @client.organization_teams('github')
142
+ # @example
143
+ # @client.org_teams('github')
41
144
  def organization_teams(org, options={})
42
145
  get("orgs/#{org}/teams", options, 3)
43
146
  end
44
147
  alias :org_teams :organization_teams
45
148
 
149
+ # Create team
150
+ #
151
+ # Requires authenticated organization owner.
152
+ #
153
+ # @param org [String] Organization GitHub username.
154
+ # @option options [String] :name Team name.
155
+ # @option options [Array<String>] :repo_names Repositories for the team.
156
+ # @option options [String, optional] :permission ('pull') Permissions the
157
+ # team has for team repositories.
158
+ #
159
+ # `pull` - team members can pull, but not push to or administer these repositories.
160
+ # `push` - team members can pull and push, but not administer these repositories.
161
+ # `admin` - team members can pull, push and administer these repositories.
162
+ # @return [Hashie::Mash] Hash representing new team.
163
+ # @see Octokit::Client
164
+ # @see http://developer.github.com/v3/orgs/teams/#create-team
165
+ # @example
166
+ # @client.create_team('github', {
167
+ # :name => 'Designers',
168
+ # :repo_names => ['dotcom', 'developer.github.com'],
169
+ # :permission => 'push'
170
+ # })
46
171
  def create_team(org, options={})
47
172
  post("orgs/#{org}/teams", options, 3)
48
173
  end
49
174
 
175
+ # Get team
176
+ #
177
+ # Requires authenticated organization member.
178
+ #
179
+ # @param team_id [Integer] Team id.
180
+ # @return [Hashie::Mash] Hash representing team.
181
+ # @see Octokit::Client
182
+ # @see http://developer.github.com/v3/orgs/teams/#get-team
183
+ # @example
184
+ # @client.team(100000)
50
185
  def team(team_id, options={})
51
186
  get("teams/#{team_id}", options, 3)
52
187
  end
53
188
 
189
+ # Update team
190
+ #
191
+ # Requires authenticated organization owner.
192
+ #
193
+ # @param team_id [Integer] Team id.
194
+ # @option options [String] :name Team name.
195
+ # @option options [String] :permission Permissions the team has for team repositories.
196
+ #
197
+ # `pull` - team members can pull, but not push to or administer these repositories.
198
+ # `push` - team members can pull and push, but not administer these repositories.
199
+ # `admin` - team members can pull, push and administer these repositories.
200
+ # @return [Hashie::Mash] Hash representing updated team.
201
+ # @see Octokit::Client
202
+ # @see http://developer.github.com/v3/orgs/teams/#edit-team
203
+ # @example
204
+ # @client.update_team(100000, {
205
+ # :name => 'Front-end Designers',
206
+ # :permission => 'push'
207
+ # })
54
208
  def update_team(team_id, options={})
55
209
  patch("teams/#{team_id}", options, 3)
56
210
  end
57
211
 
212
+ # Delete team
213
+ #
214
+ # Requires authenticated organization owner.
215
+ #
216
+ # @param team_id [Integer] Team id.
217
+ # @return [Boolean] True if deletion successful, false otherwise.
218
+ # @see Octokit::Client
219
+ # @see http://developer.github.com/v3/orgs/teams/#delete-team
220
+ # @example
221
+ # @client.delete_team(100000)
58
222
  def delete_team(team_id, options={})
59
223
  delete("teams/#{team_id}", options, 3, true, true)
60
224
  end
61
225
 
226
+ # List team members
227
+ #
228
+ # Requires authenticated organization member.
229
+ #
230
+ # @param team_id [Integer] Team id.
231
+ # @return [Array<Hashie::Mash>] Array of hashes representing users.
232
+ # @see Octokit::Client
233
+ # @see http://developer.github.com/v3/orgs/teams/#list-team-members
234
+ # @example
235
+ # @client.team_members(100000)
62
236
  def team_members(team_id, options={})
63
237
  get("teams/#{team_id}/members", options, 3)
64
238
  end
65
239
 
240
+ # Add team member
241
+ #
242
+ # Requires authenticated organization owner or member with team
243
+ # `admin` permission.
244
+ #
245
+ # @param team_id [Integer] Team id.
246
+ # @param user [String] GitHub username of new team member.
247
+ # @return [Boolean] True on successful addition, false otherwise.
248
+ # @see Octokit::Client
249
+ # @see http://developer.github.com/v3/orgs/teams/#add-team-member
250
+ # @example
251
+ # @client.add_team_member(100000, 'pengwynn')
66
252
  def add_team_member(team_id, user, options={})
67
253
  # There's a bug in this API call. The docs say to leave the body blank,
68
254
  # but it fails if the body is both blank and the content-length header
@@ -70,25 +256,94 @@ module Octokit
70
256
  put("teams/#{team_id}/members/#{user}", options.merge({:name => user}), 3, true, raw=true).status == 204
71
257
  end
72
258
 
259
+ # Remove team member
260
+ #
261
+ # Requires authenticated organization owner or member with team
262
+ # `admin` permission.
263
+ #
264
+ # @param team_id [Integer] Team id.
265
+ # @param user [String] GitHub username of the user to boot.
266
+ # @return [Boolean] True if user removed, false otherwise.
267
+ # @see Octokit::Client
268
+ # @see http://developer.github.com/v3/orgs/teams/#remove-team-member
269
+ # @example
270
+ # @client.remove_team_member(100000, 'pengwynn')
73
271
  def remove_team_member(team_id, user, options={})
74
272
  delete("teams/#{team_id}/members/#{user}", options, 3, true, raw=true).status == 204
75
273
  end
76
274
 
275
+ # List team repositories
276
+ #
277
+ # Requires authenticated organization member.
278
+ #
279
+ # @param team_id [Integer] Team id.
280
+ # @return [Array<Hashie::Mash>] Array of hashes representing repositories.
281
+ # @see Octokit::Client
282
+ # @see http://developer.github.com/v3/orgs/teams/#list-team-repos
283
+ # @example
284
+ # @client.team_repositories(100000)
285
+ # @example
286
+ # @client.team_repos(100000)
77
287
  def team_repositories(team_id, options={})
78
288
  get("teams/#{team_id}/repos", options, 3)
79
289
  end
80
290
  alias :team_repos :team_repositories
81
291
 
292
+ # Add team repository
293
+ #
294
+ # Requires authenticated user to be an owner of the organization that the
295
+ # team is associated with. Also, the repo must be owned by the
296
+ # organization, or a direct form of a repo owned by the organization.
297
+ #
298
+ # @param team_id [Integer] Team id.
299
+ # @param repo [String, Hash, Repository] A GitHub repository.
300
+ # @return [Boolean] True if successful, false otherwise.
301
+ # @see Octokit::Client
302
+ # @see Octokit::Repository
303
+ # @see http://developer.github.com/v3/orgs/teams/#add-team-repo
304
+ # @example
305
+ # @client.add_team_repository(100000, 'github/developer.github.com')
306
+ # @example
307
+ # @client.add_team_repo(100000, 'github/developer.github.com')
82
308
  def add_team_repository(team_id, repo, options={})
83
309
  put("teams/#{team_id}/repos/#{Repository.new(repo)}", options.merge(:name => Repository.new(repo)), 3, true, raw=true).status == 204
84
310
  end
85
311
  alias :add_team_repo :add_team_repository
86
312
 
313
+ # Remove team repository
314
+ #
315
+ # Removes repository from team. Does not delete the repository.
316
+ #
317
+ # Requires authenticated organization owner.
318
+ #
319
+ # @param team_id [Integer] Team id.
320
+ # @param repo [String, Hash, Repository] A GitHub repository.
321
+ # @return [Boolean] Return true if repo removed from team, false otherwise.
322
+ # @see Octokit::Client
323
+ # @see Octokit::Repository
324
+ # @see http://developer.github.com/v3/orgs/teams/#remove-team-repo
325
+ # @example
326
+ # @client.remove_team_repository(100000, 'github/developer.github.com')
327
+ # @example
328
+ # @client.remove_team_repo(100000, 'github/developer.github.com')
87
329
  def remove_team_repository(team_id, repo, options={})
88
330
  delete("teams/#{team_id}/repos/#{Repository.new(repo)}", options, 3, true, raw=true).status == 204
89
331
  end
90
332
  alias :remove_team_repo :remove_team_repository
91
333
 
334
+ # Remove organization member
335
+ #
336
+ # Requires authenticated organization owner or member with team `admin` access.
337
+ #
338
+ # @param org [String] Organization GitHub username.
339
+ # @param user [String] GitHub username of user to remove.
340
+ # @return [Boolean] True if removal is successful, false otherwise.
341
+ # @see Octokit::Client
342
+ # @see http://developer.github.com/v3/orgs/teams/#remove-team-member
343
+ # @example
344
+ # @client.remove_organization_member('github', 'pengwynn')
345
+ # @example
346
+ # @client.remove_org_member('github', 'pengwynn')
92
347
  def remove_organization_member(org, user, options={})
93
348
  # this is a synonym for: for team in org.teams: remove_team_member(team.id, user)
94
349
  # provided in the GH API v3
@@ -96,10 +351,34 @@ module Octokit
96
351
  end
97
352
  alias :remove_org_member :remove_organization_member
98
353
 
354
+ # Publicize a user's membership of an organization
355
+ #
356
+ # Requires authenticated organization owner.
357
+ #
358
+ # @param org [String] Organization GitHub username.
359
+ # @param user [String] GitHub username of user to publicize.
360
+ # @return [Boolean] True if publicization successful, false otherwise.
361
+ # @see Octokit::Client
362
+ # @see http://developer.github.com/v3/orgs/members/#publicize-a-users-membership
363
+ # @example
364
+ # @client.publicize_membership('github', 'pengwynn')
99
365
  def publicize_membership(org, user, options={})
100
366
  put("orgs/#{org}/public_members/#{user}", options, 3, true, raw=true).status == 204
101
367
  end
102
368
 
369
+ # Conceal a user's membership of an organization.
370
+ #
371
+ # Requires authenticated organization owner.
372
+ #
373
+ # @param org [String] Organization GitHub username.
374
+ # @param user [String] GitHub username of user to unpublicize.
375
+ # @return [Boolean] True of unpublicization successful, false otherwise.
376
+ # @see Octokit::Client
377
+ # @see http://developer.github.com/v3/orgs/members/#conceal-a-users-membership
378
+ # @example
379
+ # @client.unpublicize_membership('github', 'pengwynn')
380
+ # @example
381
+ # @client.conceal_membership('github', 'pengwynn')
103
382
  def unpublicize_membership(org, user, options={})
104
383
  delete("orgs/#{org}/public_members/#{user}", options, 3, true, raw=true).status == 204
105
384
  end