lingfennan-github_api 0.18.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +20 -0
  3. data/README.md +741 -0
  4. data/lib/github_api.rb +93 -0
  5. data/lib/github_api/api.rb +398 -0
  6. data/lib/github_api/api/actions.rb +60 -0
  7. data/lib/github_api/api/arguments.rb +253 -0
  8. data/lib/github_api/api/config.rb +105 -0
  9. data/lib/github_api/api/config/property.rb +30 -0
  10. data/lib/github_api/api/config/property_set.rb +120 -0
  11. data/lib/github_api/api/factory.rb +33 -0
  12. data/lib/github_api/authorization.rb +75 -0
  13. data/lib/github_api/client.rb +77 -0
  14. data/lib/github_api/client/activity.rb +31 -0
  15. data/lib/github_api/client/activity/events.rb +233 -0
  16. data/lib/github_api/client/activity/feeds.rb +50 -0
  17. data/lib/github_api/client/activity/notifications.rb +181 -0
  18. data/lib/github_api/client/activity/starring.rb +130 -0
  19. data/lib/github_api/client/activity/watching.rb +176 -0
  20. data/lib/github_api/client/authorizations.rb +142 -0
  21. data/lib/github_api/client/authorizations/app.rb +98 -0
  22. data/lib/github_api/client/emojis.rb +19 -0
  23. data/lib/github_api/client/gists.rb +289 -0
  24. data/lib/github_api/client/gists/comments.rb +100 -0
  25. data/lib/github_api/client/git_data.rb +31 -0
  26. data/lib/github_api/client/git_data/blobs.rb +51 -0
  27. data/lib/github_api/client/git_data/commits.rb +101 -0
  28. data/lib/github_api/client/git_data/references.rb +150 -0
  29. data/lib/github_api/client/git_data/tags.rb +95 -0
  30. data/lib/github_api/client/git_data/trees.rb +113 -0
  31. data/lib/github_api/client/gitignore.rb +57 -0
  32. data/lib/github_api/client/issues.rb +248 -0
  33. data/lib/github_api/client/issues/assignees.rb +77 -0
  34. data/lib/github_api/client/issues/comments.rb +146 -0
  35. data/lib/github_api/client/issues/events.rb +50 -0
  36. data/lib/github_api/client/issues/labels.rb +189 -0
  37. data/lib/github_api/client/issues/milestones.rb +146 -0
  38. data/lib/github_api/client/markdown.rb +62 -0
  39. data/lib/github_api/client/meta.rb +19 -0
  40. data/lib/github_api/client/orgs.rb +127 -0
  41. data/lib/github_api/client/orgs/hooks.rb +182 -0
  42. data/lib/github_api/client/orgs/members.rb +142 -0
  43. data/lib/github_api/client/orgs/memberships.rb +131 -0
  44. data/lib/github_api/client/orgs/projects.rb +57 -0
  45. data/lib/github_api/client/orgs/teams.rb +407 -0
  46. data/lib/github_api/client/projects.rb +83 -0
  47. data/lib/github_api/client/projects/cards.rb +158 -0
  48. data/lib/github_api/client/projects/columns.rb +146 -0
  49. data/lib/github_api/client/pull_requests.rb +195 -0
  50. data/lib/github_api/client/pull_requests/comments.rb +140 -0
  51. data/lib/github_api/client/pull_requests/reviews.rb +158 -0
  52. data/lib/github_api/client/repos.rb +468 -0
  53. data/lib/github_api/client/repos/branches.rb +48 -0
  54. data/lib/github_api/client/repos/branches/protections.rb +75 -0
  55. data/lib/github_api/client/repos/collaborators.rb +84 -0
  56. data/lib/github_api/client/repos/comments.rb +125 -0
  57. data/lib/github_api/client/repos/commits.rb +80 -0
  58. data/lib/github_api/client/repos/contents.rb +246 -0
  59. data/lib/github_api/client/repos/deployments.rb +138 -0
  60. data/lib/github_api/client/repos/downloads.rb +62 -0
  61. data/lib/github_api/client/repos/forks.rb +48 -0
  62. data/lib/github_api/client/repos/hooks.rb +214 -0
  63. data/lib/github_api/client/repos/keys.rb +104 -0
  64. data/lib/github_api/client/repos/merging.rb +47 -0
  65. data/lib/github_api/client/repos/pages.rb +48 -0
  66. data/lib/github_api/client/repos/projects.rb +62 -0
  67. data/lib/github_api/client/repos/pub_sub_hubbub.rb +133 -0
  68. data/lib/github_api/client/repos/releases.rb +189 -0
  69. data/lib/github_api/client/repos/releases/assets.rb +136 -0
  70. data/lib/github_api/client/repos/releases/tags.rb +24 -0
  71. data/lib/github_api/client/repos/statistics.rb +89 -0
  72. data/lib/github_api/client/repos/statuses.rb +91 -0
  73. data/lib/github_api/client/say.rb +25 -0
  74. data/lib/github_api/client/scopes.rb +46 -0
  75. data/lib/github_api/client/search.rb +133 -0
  76. data/lib/github_api/client/search/legacy.rb +111 -0
  77. data/lib/github_api/client/users.rb +117 -0
  78. data/lib/github_api/client/users/emails.rb +65 -0
  79. data/lib/github_api/client/users/followers.rb +115 -0
  80. data/lib/github_api/client/users/keys.rb +104 -0
  81. data/lib/github_api/configuration.rb +70 -0
  82. data/lib/github_api/connection.rb +82 -0
  83. data/lib/github_api/constants.rb +61 -0
  84. data/lib/github_api/core_ext/array.rb +25 -0
  85. data/lib/github_api/core_ext/hash.rb +91 -0
  86. data/lib/github_api/core_ext/ordered_hash.rb +107 -0
  87. data/lib/github_api/deprecation.rb +39 -0
  88. data/lib/github_api/error.rb +32 -0
  89. data/lib/github_api/error/client_error.rb +89 -0
  90. data/lib/github_api/error/service_error.rb +223 -0
  91. data/lib/github_api/ext/faraday.rb +38 -0
  92. data/lib/github_api/mash.rb +7 -0
  93. data/lib/github_api/middleware.rb +37 -0
  94. data/lib/github_api/mime_type.rb +33 -0
  95. data/lib/github_api/normalizer.rb +23 -0
  96. data/lib/github_api/null_encoder.rb +25 -0
  97. data/lib/github_api/page_iterator.rb +138 -0
  98. data/lib/github_api/page_links.rb +63 -0
  99. data/lib/github_api/paged_request.rb +42 -0
  100. data/lib/github_api/pagination.rb +115 -0
  101. data/lib/github_api/parameter_filter.rb +35 -0
  102. data/lib/github_api/params_hash.rb +115 -0
  103. data/lib/github_api/rate_limit.rb +25 -0
  104. data/lib/github_api/request.rb +85 -0
  105. data/lib/github_api/request/basic_auth.rb +36 -0
  106. data/lib/github_api/request/jsonize.rb +54 -0
  107. data/lib/github_api/request/oauth2.rb +44 -0
  108. data/lib/github_api/request/verbs.rb +63 -0
  109. data/lib/github_api/response.rb +48 -0
  110. data/lib/github_api/response/atom_parser.rb +22 -0
  111. data/lib/github_api/response/follow_redirects.rb +140 -0
  112. data/lib/github_api/response/header.rb +87 -0
  113. data/lib/github_api/response/jsonize.rb +28 -0
  114. data/lib/github_api/response/mashify.rb +24 -0
  115. data/lib/github_api/response/raise_error.rb +22 -0
  116. data/lib/github_api/response/xmlize.rb +27 -0
  117. data/lib/github_api/response_wrapper.rb +161 -0
  118. data/lib/github_api/ssl_certs/cacerts.pem +2183 -0
  119. data/lib/github_api/utils/url.rb +63 -0
  120. data/lib/github_api/validations.rb +22 -0
  121. data/lib/github_api/validations/format.rb +26 -0
  122. data/lib/github_api/validations/presence.rb +32 -0
  123. data/lib/github_api/validations/required.rb +21 -0
  124. data/lib/github_api/validations/token.rb +41 -0
  125. data/lib/github_api/version.rb +5 -0
  126. metadata +338 -0
@@ -0,0 +1,142 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../api'
4
+
5
+ module Github
6
+ # OAuth Authorizations API
7
+ class Client::Authorizations < API
8
+
9
+ require_all 'github_api/client/authorizations', 'app'
10
+
11
+ # Access to Authorizations::App API
12
+ namespace :app
13
+
14
+ # List authorizations
15
+ #
16
+ # @see https://developer.github.com/v3/oauth_authorizations/#list-your-authorizations
17
+ #
18
+ # @example
19
+ # github = Github.new basic_auth: 'login:password'
20
+ # github.auth.list
21
+ # github.auth.list { |auth| ... }
22
+ #
23
+ # @api public
24
+ def list(*args)
25
+ raise_authentication_error unless authenticated?
26
+ arguments(args)
27
+
28
+ response = get_request('/authorizations', arguments.params)
29
+ return response unless block_given?
30
+ response.each { |el| yield el }
31
+ end
32
+ alias_method :all, :list
33
+
34
+ # Get a single authorization
35
+ #
36
+ # @see https://developer.github.com/v3/oauth_authorizations/#get-a-single-authorization
37
+ #
38
+ # @example
39
+ # github = Github.new basic_auth: 'login:password'
40
+ # github.oauth.get 'authorization-id'
41
+ #
42
+ # @return [ResponseWrapper]
43
+ #
44
+ # @api public
45
+ def get(*args)
46
+ raise_authentication_error unless authenticated?
47
+ arguments(args, required: [:id])
48
+
49
+ get_request("/authorizations/#{arguments.id}", arguments.params)
50
+ end
51
+ alias_method :find, :get
52
+
53
+ # Create a new authorization
54
+ #
55
+ # @see https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization
56
+ #
57
+ # @param [Hash] params
58
+ # @option params [Array[String]] :scopes
59
+ # A list of scopes that this authorization is in.
60
+ # @option params [String] :note
61
+ # Required. A note to remind you what the OAuth token is for.
62
+ # @option params [String] :note_url
63
+ # A URL to remind you what the OAuth token is for.
64
+ # @option params [String] :client_id
65
+ # The 20 character OAuth app client key for which to create the token.
66
+ # @option params [String] :client_secret
67
+ # The 40 character OAuth app client secret for which to create the token.
68
+ # @option params [String] :fingerprint
69
+ # A unique string to distinguish an authorization from others
70
+ # created for the same client ID and user.
71
+ #
72
+ # @example
73
+ # github = Github.new basic_auth: 'login:password'
74
+ # github.oauth.create scopes: ["public_repo"], note: 'amdmin script'
75
+ #
76
+ # @api public
77
+ def create(*args)
78
+ raise_authentication_error unless authenticated?
79
+ arguments(args) do
80
+ assert_required :note, :scopes
81
+ end
82
+
83
+ post_request('/authorizations', arguments.params)
84
+ end
85
+
86
+ # Update an existing authorization
87
+ #
88
+ # @see https://developer.github.com/v3/oauth_authorizations/#update-an-existing-authorization
89
+ #
90
+ # @param [Hash] inputs
91
+ # @option inputs [Array] :scopes
92
+ # Optional array - A list of scopes that this authorization is in.
93
+ # @option inputs [Array] :add_scopes
94
+ # Optional array - A list of scopes to add to this authorization.
95
+ # @option inputs [Array] :remove_scopes
96
+ # Optional array - A list of scopes to remove from this authorization.
97
+ # @option inputs [String] :note
98
+ # Optional string - A note to remind you what the OAuth token is for.
99
+ # @optoin inputs [String] :note_url
100
+ # Optional string - A URL to remind you what the OAuth token is for.
101
+ # @option params [String] :fingerprint
102
+ # A unique string to distinguish an authorization from others
103
+ # created for the same client ID and user.
104
+ #
105
+ # @example
106
+ # github = Github.new basic_auth: 'login:password'
107
+ # github.oauth.update "authorization-id", add_scopes: ["repo"]
108
+ #
109
+ # @api public
110
+ def update(*args)
111
+ raise_authentication_error unless authenticated?
112
+ arguments(args, required: [:id])
113
+
114
+ patch_request("/authorizations/#{arguments.id}", arguments.params)
115
+ end
116
+ alias_method :edit, :update
117
+
118
+ # Delete an authorization
119
+ #
120
+ # @see https://developer.github.com/v3/oauth_authorizations/#delete-an-authorization
121
+ #
122
+ # @example
123
+ # github = Github.new
124
+ # github.oauth.delete 'authorization-id'
125
+ #
126
+ # @api public
127
+ def delete(*args)
128
+ raise_authentication_error unless authenticated?
129
+ arguments(args, required: [:id])
130
+
131
+ delete_request("/authorizations/#{arguments.id}", arguments.params)
132
+ end
133
+ alias_method :remove, :delete
134
+
135
+ protected
136
+
137
+ def raise_authentication_error
138
+ raise ArgumentError, 'You can only access your own tokens' \
139
+ ' via Basic Authentication'
140
+ end
141
+ end # Client::Authorizations
142
+ end # Github
@@ -0,0 +1,98 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../../api'
4
+
5
+ module Github
6
+ class Client::Authorizations::App < Client::Authorizations
7
+ # Get-or-create an authorization for a specific app
8
+ #
9
+ # @see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app
10
+ #
11
+ # @param [Hash] params
12
+ # @option params [String] client_secret
13
+ # The 40 character OAuth app client secret associated with the client
14
+ # ID specified in the URL.
15
+ # @option params [Array] :scopes
16
+ # Optional array - A list of scopes that this authorization is in.
17
+ # @option params [String] :note
18
+ # Optional string - A note to remind you what the OAuth token is for.
19
+ # @option params [String] :note_url
20
+ # Optional string - A URL to remind you what the OAuth token is for.
21
+ #
22
+ # @example
23
+ # github = Github.new
24
+ # github.oauth.app.create 'client-id', client_secret: '...'
25
+ #
26
+ # @api public
27
+ def create(*args)
28
+ raise_authentication_error unless authenticated?
29
+ arguments(args, required: [:client_id])
30
+
31
+ if arguments.client_id
32
+ put_request("/authorizations/clients/#{arguments.client_id}", arguments.params)
33
+ else
34
+ raise raise_app_authentication_error
35
+ end
36
+ end
37
+
38
+ # Check if an access token is a valid authorization for an application
39
+ #
40
+ # @example
41
+ # github = Github.new basic_auth: "client_id:client_secret"
42
+ # github.oauth.app.check 'client_id', 'access-token'
43
+ #
44
+ # @api public
45
+ def check(*args)
46
+ raise_authentication_error unless authenticated?
47
+ params = arguments(args, required: [:client_id, :access_token]).params
48
+
49
+ if arguments.client_id
50
+ begin
51
+ get_request("/applications/#{arguments.client_id}/tokens/#{arguments.access_token}", params)
52
+ rescue Github::Error::NotFound
53
+ nil
54
+ end
55
+ else
56
+ raise raise_app_authentication_error
57
+ end
58
+ end
59
+
60
+ # Revoke all authorizations for an application
61
+ #
62
+ # @example
63
+ # github = Github.new basic_auth: "client_id:client_secret"
64
+ # github.oauth.app.delete 'client-id'
65
+ #
66
+ # Revoke an authorization for an application
67
+ #
68
+ # @example
69
+ # github = Github.new basic_auth: "client_id:client_secret"
70
+ # github.oauth.app.delete 'client-id', 'access-token'
71
+ #
72
+ # @api public
73
+ def delete(*args)
74
+ raise_authentication_error unless authenticated?
75
+ params = arguments(args, required: [:client_id]).params
76
+
77
+ if arguments.client_id
78
+ if access_token = (params.delete('access_token') || args[1])
79
+ delete_request("/applications/#{arguments.client_id}/tokens/#{access_token}", params)
80
+ else
81
+ # Revokes all tokens
82
+ delete_request("/applications/#{arguments.client_id}/tokens", params)
83
+ end
84
+ else
85
+ raise raise_app_authentication_error
86
+ end
87
+ end
88
+ alias :remove :delete
89
+ alias :revoke :delete
90
+
91
+ protected
92
+
93
+ def raise_app_authentication_error
94
+ raise ArgumentError, 'To create authorization for the app, ' +
95
+ 'you need to provide client_id argument and client_secret parameter'
96
+ end
97
+ end # Client::Authorizations::App
98
+ end # Github
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../api'
4
+
5
+ module Github
6
+ class Client::Emojis < API
7
+ # Lists all the emojis.
8
+ #
9
+ # @example
10
+ # Github.emojis.list
11
+ #
12
+ # @api public
13
+ def list(*args)
14
+ arguments(args)
15
+
16
+ get_request("/emojis", arguments.params)
17
+ end
18
+ end # Client::Emojis
19
+ end # Github
@@ -0,0 +1,289 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../api'
4
+
5
+ module Github
6
+ class Client::Gists < API
7
+
8
+ require_all 'github_api/client/gists', 'comments'
9
+
10
+ # Access to Gists::Comments API
11
+ namespace :comments
12
+
13
+ # List a user's gists
14
+ #
15
+ # @see https://developer.github.com/v3/gists/#list-a-users-gists
16
+ #
17
+ # @example
18
+ # github = Github.new
19
+ # github.gists.list user: 'user-name'
20
+ #
21
+ # List the authenticated user’s gists or if called anonymously,
22
+ # this will returns all public gists
23
+ #
24
+ # @example
25
+ # github = Github.new oauth_token: '...'
26
+ # github.gists.list
27
+ #
28
+ # List all public gists
29
+ #
30
+ # @see https://developer.github.com/v3/gists/#list-all-public-gists
31
+ #
32
+ # github = Github.new
33
+ # github.gists.list :public
34
+ #
35
+ # @return [Hash]
36
+ #
37
+ # @api public
38
+ def list(*args)
39
+ params = arguments(args).params
40
+
41
+ response = if (user = params.delete('user'))
42
+ get_request("/users/#{user}/gists", params)
43
+ elsif args.map(&:to_s).include?('public')
44
+ get_request("/gists/public", params)
45
+ else
46
+ get_request("/gists", params)
47
+ end
48
+ return response unless block_given?
49
+ response.each { |el| yield el }
50
+ end
51
+ alias_method :all, :list
52
+
53
+ # List the authenticated user's starred gists
54
+ #
55
+ # @see https://developer.github.com/v3/gists/#list-starred-gists
56
+ #
57
+ # @example
58
+ # github = Github.new oauth_token: '...'
59
+ # github.gists.starred
60
+ #
61
+ # @return [Hash]
62
+ #
63
+ # @api public
64
+ def starred(*args)
65
+ arguments(args)
66
+ response = get_request("/gists/starred", arguments.params)
67
+ return response unless block_given?
68
+ response.each { |el| yield el }
69
+ end
70
+
71
+ # Get a single gist
72
+ #
73
+ # @see https://developer.github.com/v3/gists/#get-a-single-gist
74
+ #
75
+ # @example
76
+ # github = Github.new
77
+ # github.gists.get 'gist-id'
78
+ #
79
+ # Get a specific revision of gist
80
+ #
81
+ # @see https://developer.github.com/v3/gists/#get-a-specific-revision-of-a-gist
82
+ #
83
+ # @example
84
+ # github = Github.new
85
+ # github.gists.get 'gist-id', sha: '
86
+ #
87
+ # @return [Hash]
88
+ #
89
+ # @api public
90
+ def get(*args)
91
+ arguments(args, required: [:id])
92
+
93
+ if (sha = arguments.params.delete('sha'))
94
+ get_request("/gists/#{arguments.id}/#{sha}")
95
+ else
96
+ get_request("/gists/#{arguments.id}", arguments.params)
97
+ end
98
+ end
99
+ alias_method :find, :get
100
+
101
+ # Create a gist
102
+ #
103
+ # @see https://developer.github.com/v3/gists/#create-a-gist
104
+ #
105
+ # @param [Hash] params
106
+ # @option params [String] :description
107
+ # Optional string
108
+ # @option params [Boolean] :public
109
+ # Required boolean
110
+ # @option params [Hash] :files
111
+ # Required hash - Files that make up this gist.
112
+ # The key of which should be a required string filename and
113
+ # the value another required hash with parameters:
114
+ # @option files [String] :content
115
+ # Required string - File contents.
116
+ #
117
+ # @example
118
+ # github = Github.new
119
+ # github.gists.create
120
+ # description: 'the description for this gist',
121
+ # public: true,
122
+ # files: {
123
+ # 'file1.txt' => {
124
+ # content: 'String file contents'
125
+ # }
126
+ # }
127
+ #
128
+ # @return [Hash]
129
+ #
130
+ # @api public
131
+ def create(*args)
132
+ arguments(args)
133
+
134
+ post_request("/gists", arguments.params)
135
+ end
136
+
137
+ # Edit a gist
138
+ #
139
+ # @see https://developer.github.com/v3/gists/#edit-a-gist
140
+ #
141
+ # @param [Hash] params
142
+ # @option [String] :description
143
+ # Optional string
144
+ # @option [Hash] :files
145
+ # Optional hash - Files that make up this gist.
146
+ # The key of which should be a optional string filename and
147
+ # the value another optional hash with parameters:
148
+ # @option [String] :content
149
+ # Updated string - Update file contents.
150
+ # @option [String] :filename
151
+ # Optional string - New name for this file.
152
+ #
153
+ # @xample
154
+ # github = Github.new oauth_token: '...'
155
+ # github.gists.edit 'gist-id',
156
+ # description: 'the description for this gist',
157
+ # files: {
158
+ # 'file1.txt' => {
159
+ # content: 'Updated file contents'
160
+ # },
161
+ # 'old_name.txt' => {
162
+ # filename: 'new_name.txt',
163
+ # content: 'modified contents'
164
+ # },
165
+ # 'new_file.txt' => {
166
+ # content: 'a new file contents'
167
+ # },
168
+ # 'delete_the_file.txt' => nil
169
+ # }
170
+ #
171
+ # @return [Hash]
172
+ #
173
+ # @api public
174
+ def edit(*args)
175
+ arguments(args, required: [:id])
176
+
177
+ patch_request("/gists/#{arguments.id}", arguments.params)
178
+ end
179
+
180
+ # List gist commits
181
+ #
182
+ # @see https://developer.github.com/v3/gists/#list-gist-commits
183
+ #
184
+ # @example
185
+ # github = Github.new
186
+ # github.gists.commits 'gist-id'
187
+ #
188
+ # @api public
189
+ def commits(*args)
190
+ arguments(args, required: [:id])
191
+
192
+ response = get_request("/gists/#{arguments.id}/commits")
193
+ return response unless block_given?
194
+ response.each { |el| yield el }
195
+ end
196
+
197
+ # Star a gist
198
+ #
199
+ # @see https://developer.github.com/v3/gists/#star-a-gist
200
+ #
201
+ # @example
202
+ # github = Github.new
203
+ # github.gists.star 'gist-id'
204
+ #
205
+ # @api public
206
+ def star(*args)
207
+ arguments(args, required: [:id])
208
+
209
+ put_request("/gists/#{arguments.id}/star", arguments.params)
210
+ end
211
+
212
+ # Unstar a gist
213
+ #
214
+ # @see https://developer.github.com/v3/gists/#unstar-a-gist
215
+ #
216
+ # @xample
217
+ # github = Github.new
218
+ # github.gists.unstar 'gist-id'
219
+ #
220
+ # @api public
221
+ def unstar(*args)
222
+ arguments(args, required: [:id])
223
+
224
+ delete_request("/gists/#{arguments.id}/star", arguments.params)
225
+ end
226
+
227
+ # Check if a gist is starred
228
+ #
229
+ # @see https://developer.github.com/v3/gists/#check-if-a-gist-is-starred
230
+ #
231
+ # @example
232
+ # github = Github.new
233
+ # github.gists.starred? 'gist-id'
234
+ #
235
+ # @api public
236
+ def starred?(*args)
237
+ arguments(args, required: [:id])
238
+ get_request("/gists/#{arguments.id}/star", arguments.params)
239
+ true
240
+ rescue Github::Error::NotFound
241
+ false
242
+ end
243
+
244
+ # Fork a gist
245
+ #
246
+ # @example
247
+ # github = Github.new
248
+ # github.gists.fork 'gist-id'
249
+ #
250
+ # @api public
251
+ def fork(*args)
252
+ arguments(args, required: [:id])
253
+
254
+ post_request("/gists/#{arguments.id}/forks", arguments.params)
255
+ end
256
+
257
+ # List gist forks
258
+ #
259
+ # @see https://developer.github.com/v3/gists/#list-gist-forks
260
+ #
261
+ # @example
262
+ # github = Github.new
263
+ # github.gists.forks 'gist-id'
264
+ #
265
+ # @api public
266
+ def forks(*args)
267
+ arguments(args, required: [:id])
268
+
269
+ response = get_request("/gists/#{arguments.id}/forks")
270
+ return response unless block_given?
271
+ response.each { |el| yield el }
272
+ end
273
+
274
+ # Delete a gist
275
+ #
276
+ # @see https://developer.github.com/v3/gists/#delete-a-gist
277
+ #
278
+ # @example
279
+ # github = Github.new
280
+ # github.gists.delete 'gist-id'
281
+ #
282
+ # @api public
283
+ def delete(*args)
284
+ arguments(args, required: [:id])
285
+
286
+ delete_request("/gists/#{arguments.id}", arguments.params)
287
+ end
288
+ end # Gists
289
+ end # Github