github_api 0.10.2 → 0.11.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.
Files changed (95) hide show
  1. data/README.md +78 -59
  2. data/features/cassettes/repos/assets/delete.yml +52 -0
  3. data/features/cassettes/repos/assets/edit.yml +65 -0
  4. data/features/cassettes/repos/assets/get.yml +74 -0
  5. data/features/cassettes/repos/assets/list.yml +73 -0
  6. data/features/cassettes/repos/assets/upload.yml +66 -0
  7. data/features/cassettes/repos/list_org.yml +167 -0
  8. data/features/cassettes/repos/list_org_instance.yml +300 -0
  9. data/features/cassettes/repos/releases/create.yml +64 -0
  10. data/features/cassettes/repos/releases/delete.yml +52 -0
  11. data/features/cassettes/repos/releases/edit.yml +63 -0
  12. data/features/cassettes/repos/releases/get.yml +78 -0
  13. data/features/cassettes/repos/releases/list.yml +81 -0
  14. data/features/cassettes/search/code.yml +252 -0
  15. data/features/cassettes/search/code_query.yml +65 -0
  16. data/features/cassettes/search/issues.yml +616 -170
  17. data/features/cassettes/search/legacy/email.yml +72 -0
  18. data/features/cassettes/search/legacy/issues.yml +119 -0
  19. data/features/cassettes/search/legacy/repos.yml +394 -0
  20. data/features/cassettes/search/legacy/users.yml +72 -0
  21. data/features/cassettes/search/legacy/users_keyword.yml +63 -0
  22. data/features/cassettes/search/repos.yml +375 -364
  23. data/features/cassettes/search/users.yml +40 -22
  24. data/features/cassettes/search/users_keyword.yml +51 -56
  25. data/features/repos.feature +22 -0
  26. data/features/repos/assets.feature +59 -0
  27. data/features/repos/releases.feature +58 -0
  28. data/features/search.feature +24 -13
  29. data/features/search/legacy.feature +59 -0
  30. data/features/settings.yml +2 -5
  31. data/features/step_definitions/github_api_steps.rb +12 -0
  32. data/lib/github_api/configuration.rb +3 -1
  33. data/lib/github_api/error.rb +6 -17
  34. data/lib/github_api/error/unknown_media.rb +18 -0
  35. data/lib/github_api/params_hash.rb +20 -10
  36. data/lib/github_api/repos.rb +26 -15
  37. data/lib/github_api/repos/releases.rb +146 -0
  38. data/lib/github_api/repos/releases/assets.rb +126 -0
  39. data/lib/github_api/request.rb +14 -9
  40. data/lib/github_api/resource.rb +8 -1
  41. data/lib/github_api/search.rb +68 -27
  42. data/lib/github_api/search/legacy.rb +94 -0
  43. data/lib/github_api/ssl_certs/cacert.pem +41 -0
  44. data/lib/github_api/ssl_certs/cacerts.pem +2183 -0
  45. data/lib/github_api/version.rb +2 -2
  46. data/spec/fixtures/repos/asset.json +12 -0
  47. data/spec/fixtures/repos/assets.json +14 -0
  48. data/spec/fixtures/repos/release.json +15 -0
  49. data/spec/fixtures/repos/releases.json +17 -0
  50. data/spec/fixtures/search/code.json +76 -0
  51. data/spec/fixtures/search/issues.json +47 -16
  52. data/spec/fixtures/search/issues_legacy.json +23 -0
  53. data/spec/fixtures/search/repos.json +39 -0
  54. data/spec/fixtures/search/{repositories.json → repos_legacy.json} +0 -0
  55. data/spec/fixtures/search/users.json +15 -19
  56. data/spec/fixtures/search/users_legacy.json +24 -0
  57. data/spec/github/configuration_spec.rb +2 -0
  58. data/spec/github/error/unknown_media_spec.rb +21 -0
  59. data/spec/github/git_data/references/create_spec.rb +1 -1
  60. data/spec/github/git_data/references/get_spec.rb +6 -4
  61. data/spec/github/git_data/references/list_spec.rb +6 -16
  62. data/spec/github/pagination/iterator/number_spec.rb +2 -2
  63. data/spec/github/pagination/iterator/sha_spec.rb +2 -2
  64. data/spec/github/params_hash_spec.rb +6 -0
  65. data/spec/github/repos/assets/delete_spec.rb +40 -0
  66. data/spec/github/repos/assets/edit_spec.rb +40 -0
  67. data/spec/github/repos/assets/get_spec.rb +45 -0
  68. data/spec/github/repos/assets/list_spec.rb +55 -0
  69. data/spec/github/repos/assets/upload_spec.rb +44 -0
  70. data/spec/github/repos/downloads/upload_spec.rb +5 -5
  71. data/spec/github/repos/releases/create_spec.rb +44 -0
  72. data/spec/github/repos/releases/delete_spec.rb +40 -0
  73. data/spec/github/repos/releases/edit_spec.rb +40 -0
  74. data/spec/github/repos/releases/get_spec.rb +45 -0
  75. data/spec/github/repos/releases/list_spec.rb +54 -0
  76. data/spec/github/request/endpoint_spec.rb +1 -3
  77. data/spec/github/request/request_spec.rb +4 -8
  78. data/spec/github/request_spec.rb +3 -3
  79. data/spec/github/response_wrapper_spec.rb +3 -3
  80. data/spec/github/s3_uploader_spec.rb +2 -3
  81. data/spec/github/search/code_spec.rb +38 -0
  82. data/spec/github/search/issues_spec.rb +38 -0
  83. data/spec/github/search/legacy/email_spec.rb +34 -0
  84. data/spec/github/search/legacy/issues_spec.rb +39 -0
  85. data/spec/github/search/legacy/repos_spec.rb +36 -0
  86. data/spec/github/search/legacy/users_spec.rb +36 -0
  87. data/spec/github/search/repos_spec.rb +38 -0
  88. data/spec/github/search/users_spec.rb +38 -0
  89. data/spec/github/users/get_spec.rb +1 -1
  90. data/spec/github/validations/presence_spec.rb +2 -5
  91. data/spec/integration/repos_spec.rb +4 -0
  92. data/spec/integration/search_spec.rb +12 -0
  93. metadata +122 -62
  94. data/features/cassettes/search/email.yml +0 -99
  95. data/spec/github/search_spec.rb +0 -102
data/README.md CHANGED
@@ -1,36 +1,41 @@
1
1
  # GithubAPI
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/github_api.png)](http://badge.fury.io/rb/github_api) [![Build Status](https://secure.travis-ci.org/peter-murach/github.png?branch=master)][travis] [![Dependency Status](https://gemnasium.com/peter-murach/github.png?travis)][gemnasium] [![Code Climate](https://codeclimate.com/badge.png)][codeclimate] [![Coverage Status](https://coveralls.io/repos/peter-murach/github/badge.png?branch=master)][coveralls]
3
+ [![Gem Version](https://badge.fury.io/rb/github_api.png)][gem]
4
+ [![Build Status](https://secure.travis-ci.org/peter-murach/github.png?branch=master)][travis]
5
+ [![Dependency Status](https://gemnasium.com/peter-murach/github.png?travis)][gemnasium]
6
+ [![Code Climate](https://codeclimate.com/github/peter-murach/github.png)][codeclimate]
7
+ [![Coverage Status](https://coveralls.io/repos/peter-murach/github/badge.png?branch=master)][coveralls]
4
8
 
9
+ [gem]: http://badge.fury.io/rb/github_api
5
10
  [travis]: http://travis-ci.org/peter-murach/github
6
11
  [gemnasium]: https://gemnasium.com/peter-murach/github
7
12
  [codeclimate]: https://codeclimate.com/github/peter-murach/github
8
13
  [coveralls]: https://coveralls.io/r/peter-murach/github
9
14
 
10
- [Wiki](https://github.com/peter-murach/github/wiki) | [RDocs](http://rubydoc.info/github/peter-murach/github/master/frames)
15
+ [Website](http://peter-murach.github.io/github/) | [Wiki](https://github.com/peter-murach/github/wiki) | [RDocs](http://rubydoc.info/github/peter-murach/github/master/frames)
11
16
 
12
17
  A Ruby wrapper for the GitHub REST API v3.
13
18
 
14
- Supports all the API methods(nearly 200). It's build in a modular way, that is, you can either instantiate the whole api wrapper Github.new or use parts of it e.i. Github::Repos.new if working solely with repositories is your main concern.
19
+ Supports all the API methods (nearly 200). It's built in a modular way. You can either instantiate the whole API wrapper Github.new or use parts of it i.e. Github::Repos.new if working solely with repositories is your main concern.
15
20
 
16
21
  ## Features
17
22
 
18
23
  * Intuitive GitHub API interface navigation. [usage](#usage)
19
24
  * Modular design allows for working with parts of API. [api](#api)
20
25
  * Fully customizable including advanced middleware stack construction. [config](#advanced-configuration)
21
- * Its comprehensive, you can request all GitHub API resources.
22
- * Support OAuth2 authorization. [oauth](#oauth)
23
- * Flexible arguments parsing, you can write expressive and natural queries. [params]()
24
- * Requests pagination with convenient DSL and automatic option. [pagination](#pagination)
26
+ * It's comprehensive. You can request all GitHub API resources.
27
+ * Supports OAuth2 authorization. [oauth](#oauth)
28
+ * Flexible argument parsing. You can write expressive and natural queries. [params](#arguments--parameters)
29
+ * Requests pagination with convenient DSL and automatic options. [pagination](#pagination)
25
30
  * Easy error handling split for client and server type errors. [error](#error-handling)
26
31
  * Supports multithreaded environment.
27
- * Custom media types specification through 'media' parameter. [media](#media-types)
32
+ * Custom media type specification through the 'media' parameter. [media](#media-types)
28
33
  * Request results caching (Status: TODO)
29
- * Fully tested with test coverage above 90% with over 1,600 specs and 900 features. [testing](#testing)
34
+ * Fully tested with test coverage above 90% with over 1,600 specs and 1000 features. [testing](#testing)
30
35
 
31
36
  ## Installation
32
37
 
33
- Install the gem by issuing
38
+ Install the gem by running
34
39
 
35
40
  ```ruby
36
41
  gem install github_api
@@ -44,7 +49,7 @@ gem "github_api"
44
49
 
45
50
  ## Usage
46
51
 
47
- To start using the gem you can either perform direct call on the `Github`
52
+ To start using the gem, you can either perform direct calls on `Github`
48
53
 
49
54
  ```ruby
50
55
  Github.repos.list user: 'wycats'
@@ -56,22 +61,22 @@ or create a new client instance
56
61
  github = Github.new
57
62
  ```
58
63
 
59
- At this stage you can also supply various configuration parameters, such as
64
+ At this stage, you can also supply various configuration parameters, such as
60
65
  ```
61
66
  adapter # http client used for performing requests
62
- auto_pagination # by default false, set to true traverses requests page links
67
+ auto_pagination # false by default, set to true to traverse requests page links
63
68
  oauth_token # oauth authorization token
64
69
  basic_auth # login:password string
65
70
  client_id # oauth client id
66
71
  client_secret # oauth client secret
67
- user # global user used in requets if none provided
72
+ user # global user used in requests if none provided
68
73
  repo # global repository used in requests in none provided
69
- org # global organization used in request if none provided
70
- endpoint # enterprise api endpoint
71
- site # enterprise api web endpoint
72
- ssl # ssl settings
73
- per_page # number of items per page, max 100
74
- user_agent # custom user agent name, by default 'Github API'
74
+ org # global organization used in requests if none provided
75
+ endpoint # enterprise API endpoint
76
+ site # enterprise API web endpoint
77
+ ssl # SSL settings
78
+ per_page # number of items per page- max of 100
79
+ user_agent # custom user agent name, 'Github API' by default
75
80
  ```
76
81
  which are used throughout the API. These can be passed directly as hash options:
77
82
 
@@ -79,7 +84,7 @@ which are used throughout the API. These can be passed directly as hash options:
79
84
  github = Github.new oauth_token: 'token'
80
85
  ```
81
86
 
82
- Alternatively, you can configure the Github settings by passing a block, for instance, with custom enterprise endpoint and website like
87
+ Alternatively, you can configure the GitHub settings by passing a block, for instance, for a custom enterprise endpoint and website like
83
88
 
84
89
  ```ruby
85
90
  github = Github.new do |config|
@@ -91,20 +96,20 @@ github = Github.new do |config|
91
96
  end
92
97
  ```
93
98
 
94
- You can authenticate either using OAuth authentication convenience methods(see section OAuth) or through basic authentication by passing your login and password credentials
99
+ You can authenticate either using OAuth authentication convenience methods (see OAuth section) or through basic authentication by passing your login and password credentials
95
100
 
96
101
  ```ruby
97
102
  github = Github.new login:'peter-murach', password:'...'
98
103
  ```
99
104
 
100
- or use convenience method:
105
+ or using a convenience method:
101
106
 
102
107
  ```ruby
103
108
  github = Github.new basic_auth: 'login:password'
104
109
  ```
105
110
 
106
- This gem closely mirros the GitHub Api hierarchy e.i. if you want to create a download resource,
107
- lookup the github api spec and issue the request as in `github.repos.downloads.create`
111
+ This gem closely mirrors the GitHub API hierarchy i.e. if you want to create a download resource,
112
+ look up the GitHub API spec and issue the request as in `github.repos.downloads.create`
108
113
 
109
114
  For example to interact with GitHub Repositories API, issue the following calls that correspond directly to the GitHub API hierarchy
110
115
 
@@ -121,7 +126,7 @@ blobs = Github::GitData::Blobs.new
121
126
  blobs.create 'peter-murach', 'github', content: 'Blob content'
122
127
  ```
123
128
 
124
- The response is of type [Hashie::Mash] and allows to traverse all the json response attributes like method calls e.i.
129
+ The response is of type [Github::ResponseWrapper] which allows traversing all the json response attributes like method calls i.e.
125
130
 
126
131
  ```ruby
127
132
  repos = Github::Repos.new :user => 'peter-murach', :repo => 'github'
@@ -132,14 +137,14 @@ end
132
137
 
133
138
  ## Arguments & Parameters
134
139
 
135
- The library allows for flexible arguments parsing. Therefore arguments can be passed during instance creation:
140
+ The library allows for flexible argument parsing. Therefore, arguments can be passed during instance creation:
136
141
 
137
142
  ```ruby
138
143
  issues = Github::Issues.new user: 'peter-murach', repo: 'github'
139
144
  issues.milestones.list state: 'open'
140
145
  ```
141
146
 
142
- Further, arguments can be passed directly inside method called but then the order of parameters matters and hence please consult the method documentation or GitHub specification. For instance:
147
+ Further, arguments can be passed directly inside the method called, but then the order of parameters matters and hence please consult the method documentation or GitHub specification. For instance:
143
148
 
144
149
  ```ruby
145
150
  issues = Github::Issues.new
@@ -161,7 +166,7 @@ But why limit ourselves? You can mix and match arguments, for example:
161
166
  issues.milestones(repo: 'tty').list
162
167
  ```
163
168
 
164
- Finally, you can use a bit of syntactic sugar common among ruby libraries whereby "username/repository" can be passed as well:
169
+ You can also use a bit of syntactic sugar common among Ruby libraries whereby "username/repository" can be passed as well:
165
170
 
166
171
  ```ruby
167
172
  issues = Github::Issues.new
@@ -169,7 +174,7 @@ Finally, you can use a bit of syntactic sugar common among ruby libraries whereb
169
174
  issues.milestones.list 'peter-murach/github'
170
175
  ```
171
176
 
172
- Finally, use `with` scope to clearly denote your requests
177
+ Finally, use the `with` scope to clearly denote your requests
173
178
 
174
179
  ```ruby
175
180
  issues = Github::Issues.new
@@ -199,7 +204,7 @@ end
199
204
 
200
205
  ## Advanced Configuration
201
206
 
202
- The `github_api` gem will use the default middleware stack which is exposed by calling `stack` on client instance. However, this stack can be freely modified with methods such as `insert`, `insert_after`, `delete` and `swap`. For instance to add your `CustomMiddleware` do
207
+ The `github_api` gem will use the default middleware stack which is exposed by calling `stack` on a client instance. However, this stack can be freely modified with methods such as `insert`, `insert_after`, `delete` and `swap`. For instance, to add your `CustomMiddleware` do
203
208
 
204
209
  ```ruby
205
210
  github = Github.new do |config|
@@ -220,6 +225,7 @@ github = Github.new do |config|
220
225
  end
221
226
  ```
222
227
 
228
+
223
229
  ## API
224
230
 
225
231
  Main API methods are grouped into the following classes that can be instantiated on their own
@@ -232,25 +238,25 @@ Github::Orgs Github::Issues Github::Authorizations
232
238
  Github::PullRequests Github::Users Github::Activity
233
239
  ```
234
240
 
235
- Some parts of GitHub API v3 require you to be autheticated, for instance the following are examples of APIs only for the authenticated user
241
+ Some parts of GitHub API v3 require you to be authenticated, for instance the following are examples of APIs only for the authenticated user
236
242
 
237
243
  ```ruby
238
244
  Github::Users::Emails
239
245
  Github::Users::Keys
240
246
  ```
241
247
 
242
- All method calls form ruby like sentences and allow for intuitive api navigation, for instance
248
+ All method calls form Ruby like sentences and allow for intuitive API navigation, for instance
243
249
 
244
250
  ```ruby
245
251
  github = Github.new :oauth_token => '...'
246
252
  github.users.followers.following 'wycats' # => returns users that 'wycats' is following
247
- github.users.followers.following 'wycats' # => returns true if following, otherwise false
253
+ github.users.followers.following? 'wycats' # => returns true if following, otherwise false
248
254
  ```
249
255
 
250
- For specification on all available methods go to http://developer.github.com/v3/ or
251
- read the rdoc, all methods are documented there with examples of usage.
256
+ For specifications on all available methods, go to http://developer.github.com/v3/ or
257
+ read the rdoc. All methods are documented there with examples of usage.
252
258
 
253
- Alternatively, you can find out supported methods by calling `actions` on a class instance in your `irb`:
259
+ Alternatively, you can find out which methods are supported by calling `actions` on a class instance in your `irb`:
254
260
 
255
261
  ```ruby
256
262
  >> Github::Repos.actions >> github.issues.actions
@@ -298,14 +304,14 @@ Once you have your access token, configure your github instance following instru
298
304
 
299
305
  ### Authorizations API
300
306
 
301
- Alternatively you can use OAuth Authorizations API. For instance, to create access token through GitHub API you required to pass your basic credentials as in the following:
307
+ Alternatively, you can use the OAuth Authorizations API. For instance, to create an access token through the GitHub API, you are required to pass your basic credentials as in the following:
302
308
 
303
309
  ```ruby
304
310
  github = Github.new basic_auth: 'login:password'
305
311
  github.oauth.create 'scopes' => ['repo']
306
312
  ```
307
313
 
308
- You can add more than one scope from the `user`, `public_repo`, `repo`, `gist` or leave the scopes parameter out, in which case, the default read-only access will be assumed(includes public user profile info, public repo info, and gists).
314
+ You can add more than one scope from the `user`, `public_repo`, `repo`, `gist` or leave the scopes parameter out, in which case, the default read-only access will be assumed (includes public user profile info, public repo info, and gists).
309
315
 
310
316
  ### Scopes
311
317
 
@@ -316,7 +322,7 @@ You can check OAuth scopes you have by:
316
322
  github.scopes.list # => ['repo']
317
323
  ```
318
324
 
319
- To list the scopes that the particular Github API action checks for do:
325
+ To list the scopes that the particular GitHub API action checks for do:
320
326
 
321
327
  ```ruby
322
328
  repos = Github::Repos.new
@@ -334,7 +340,7 @@ By default requests over SSL are set to OpenSSL::SSL::VERIFY_PEER. However, you
334
340
  Github.new ssl: { verify: false }
335
341
  ```
336
342
 
337
- If your client fails to find CA certs you can pass other SSL options to specify exactly how the information is sourced
343
+ If your client fails to find CA certs, you can pass other SSL options to specify exactly how the information is sourced
338
344
 
339
345
  ```ruby
340
346
  ssl: {
@@ -360,7 +366,7 @@ github.issues.get 'peter-murach', 'github', 108, media: 'text'
360
366
 
361
367
  This will be expanded into `application/vnd.github.v3.text+json`
362
368
 
363
- If you wish to specify the version pass `media: 'beta.text'` which will be converted to `application/vnd/github.beta.text+json`.
369
+ If you wish to specify the version, pass `media: 'beta.text'` which will be converted to `application/vnd/github.beta.text+json`.
364
370
 
365
371
  Finally, you can always pass the whole accept header like so
366
372
 
@@ -368,6 +374,11 @@ Finally, you can always pass the whole accept header like so
368
374
  github.issues.get 'peter-murach', 'github', 108, accept: 'application/vnd.github.raw'
369
375
  ```
370
376
 
377
+ ## Hypermedia
378
+
379
+ TODO: explain how it works
380
+ Github::Resource for each *_url key
381
+
371
382
  ## Configuration
372
383
 
373
384
  Certain methods require authentication. To get your GitHub OAuth v2 credentials,
@@ -386,10 +397,10 @@ Github.new(:oauth_token => YOUR_OAUTH_TOKEN)
386
397
  Github.new(:basic_auth => 'login:password')
387
398
  ```
388
399
 
389
- All parameters can be overwirtten as per method call. By passing parameters hash...
400
+ All parameters can be overwritten each method call by passing a parameters hash.
390
401
 
391
402
 
392
- By default no caching will be performed. In order to set the cache do... If no cache type is provided a default memoization is done.
403
+ By default, no caching will be performed. In order to set the cache do... If no cache type is provided, a default memoization is done.
393
404
 
394
405
  ## Pagination
395
406
 
@@ -400,7 +411,7 @@ repos = Github::Repos.new
400
411
  repos.list user: 'wycats', per_page: 10, page: 5
401
412
  ```
402
413
 
403
- Then you can query pagination information included in the link header by:
414
+ Then you can query the pagination information included in the link header by:
404
415
 
405
416
  ```ruby
406
417
  res.links.first # Shows the URL of the first page of results.
@@ -428,21 +439,21 @@ while res.has_next_page?
428
439
  end
429
440
  ```
430
441
 
431
- Alternatively, you can retrieve all pages in one invocation by passing `auto_pagination` option like so:
442
+ Alternatively, you can retrieve all pages in one invocation by passing the `auto_pagination` option like so:
432
443
 
433
444
  ```ruby
434
445
  github = Github.new auto_pagination: true
435
446
  ```
436
447
 
437
- Depending at what stage you pass the `auto_pagination` it will affect all or only single request:
448
+ Depending at what stage you pass the `auto_pagination` it will affect all or only a single request:
438
449
 
439
450
  ```ruby
440
451
  Github::Repos.new auto_pagination: true # affects Repos part of API
441
452
 
442
- Github::Repos.new.list user: '...', auto_pagination: true # affects single request
453
+ Github::Repos.new.list user: '...', auto_pagination: true # affects a single request
443
454
  ```
444
455
 
445
- One can also navigate straight to specific page by:
456
+ One can also navigate straight to the specific page by:
446
457
 
447
458
  ```ruby
448
459
  res.count_pages # Number of pages
@@ -453,9 +464,17 @@ res.prev_page # Get previous page
453
464
  res.last_page # Get last page
454
465
  ```
455
466
 
467
+ ### Caching
468
+
469
+ TODO: explaing how to add faraday-cache midlleware
470
+
471
+ ### Debugging requests
472
+
473
+ run with ENV['DEBUG'] flag or include middleware by passing `debug` flag
474
+
456
475
  ## Error Handling
457
476
 
458
- The generic error class `Github::Error::GithubError` will handle both the client(`Github::Error::ClientError`) and service(`Github::Error::ServiceError`) side errors. For instance in your code you can catch erros like
477
+ The generic error class `Github::Error::GithubError` will handle both the client (`Github::Error::ClientError`) and service (`Github::Error::ServiceError`) side errors. For instance in your code you can catch errors like
459
478
 
460
479
  ```ruby
461
480
  begin
@@ -473,7 +492,7 @@ end
473
492
 
474
493
  ## Response Message
475
494
 
476
- Each response comes packaged with methods allowing for inspection of HTTP start line and headers. For example to check for rate limits and status code issue
495
+ Each response comes packaged with methods allowing for inspection of HTTP start line and headers. For example, to check for rate limits and status codes, call
477
496
 
478
497
  ```ruby
479
498
  res = Github::Repos.new.branches 'peter-murach', 'github'
@@ -487,7 +506,7 @@ res.headers.cache_control # "public, max-age=60, s-maxage=60"
487
506
 
488
507
  ## Examples
489
508
 
490
- Some api methods require input parameters, these are added simply as a hash properties, for instance
509
+ Some API methods require input parameters. These are simply added as a hash of properties, for instance
491
510
 
492
511
  ```ruby
493
512
  issues = Github::Issues.new user:'peter-murach', repo: 'github-api'
@@ -501,7 +520,7 @@ users = Github::Users.new oauth_token: 'token'
501
520
  users.emails.add 'email1', 'email2', ..., 'emailn' # => Adds emails to the authenticated user
502
521
  ```
503
522
 
504
- If a method returns a collection, you can iterator over it by supplying a block parameter,
523
+ If a method returns a collection, you can iterate over it by supplying a block parameter,
505
524
 
506
525
  ```ruby
507
526
  events = Github::Activity::Events.new
@@ -510,16 +529,16 @@ events.public do |event|
510
529
  end
511
530
  ```
512
531
 
513
- Query requests instead of http responses return boolean values
532
+ Query requests return boolean values instead of HTTP responses
514
533
 
515
534
  ```ruby
516
535
  github = Github.new
517
- github.orgs.members.public_member? 'github', 'technoweenie' # => true
536
+ github.orgs.members.member? 'github', 'technoweenie', public: true # => true
518
537
  ```
519
538
 
520
539
  ## Rails Example
521
540
 
522
- A Rails controller that allows a user to authorize their GitHub account and then perform request.
541
+ A Rails controller that allows a user to authorize their GitHub account and then performs a request.
523
542
 
524
543
  ```ruby
525
544
  class GithubController < ApplicationController
@@ -543,11 +562,11 @@ end
543
562
 
544
563
  ## Testing
545
564
 
546
- The test suite is split into two groups `live` and `mock`.
565
+ The test suite is split into two groups, `live` and `mock`.
547
566
 
548
- The `live` tests are the ones in `features` folder and they simply exercise the GitHub API by making live requests and then being cached with VCR in directory named `features\cassettes`. For details on how to get setup please navigate to `features` folder.
567
+ The `live` tests are the ones in `features` folder and they simply exercise the GitHub API by making live requests and then being cached with VCR in directory named `features\cassettes`. For details on how to get set up, please navigate to the `features` folder.
549
568
 
550
- The `mock` tests are in `spec` directory and their primary concern is to test the gem internals without the hindrance of external calls.
569
+ The `mock` tests are in the `spec` directory and their primary concern is to test the gem internals without the hindrance of external calls.
551
570
 
552
571
  ## Development
553
572
 
@@ -0,0 +1,52 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: delete
5
+ uri: https://<BASIC_AUTH>@api.github.com/repos/<USER>/github_api_test/releases/assets/46073?access_token=<TOKEN>
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ""
9
+ headers:
10
+ Accept:
11
+ - application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1
12
+ Accept-Charset:
13
+ - utf-8
14
+ User-Agent:
15
+ - Github Ruby Gem 0.10.2
16
+ response:
17
+ status:
18
+ code: 204
19
+ message: No Content
20
+ headers:
21
+ Server:
22
+ - GitHub.com
23
+ Date:
24
+ - Sat, 07 Dec 2013 21:27:04 GMT
25
+ Status:
26
+ - 204 No Content
27
+ X-Ratelimit-Limit:
28
+ - "5000"
29
+ X-Ratelimit-Remaining:
30
+ - "4990"
31
+ X-Ratelimit-Reset:
32
+ - "1386451969"
33
+ X-Github-Media-Type:
34
+ - github.v3; format=json
35
+ X-Content-Type-Options:
36
+ - nosniff
37
+ Access-Control-Allow-Credentials:
38
+ - "true"
39
+ Access-Control-Expose-Headers:
40
+ - ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
41
+ Access-Control-Allow-Origin:
42
+ - "*"
43
+ X-Github-Request-Id:
44
+ - 4D649864:2A9D:172CB9E:52A392A8
45
+ Vary:
46
+ - Accept-Encoding
47
+ body:
48
+ encoding: US-ASCII
49
+ string: ""
50
+ http_version:
51
+ recorded_at: Sat, 07 Dec 2013 21:27:04 GMT
52
+ recorded_with: VCR 2.6.0
@@ -0,0 +1,65 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: patch
5
+ uri: https://<BASIC_AUTH>@api.github.com/repos/murek/github_api_test/releases/assets/46084?access_token=<TOKEN>
6
+ body:
7
+ encoding: UTF-8
8
+ string: "{\"name\":\"Rake\",\"label\":\"Ruby code\"}"
9
+ headers:
10
+ Accept:
11
+ - application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1
12
+ Accept-Charset:
13
+ - utf-8
14
+ User-Agent:
15
+ - Github Ruby Gem 0.10.2
16
+ Content-Type:
17
+ - application/json
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Server:
24
+ - GitHub.com
25
+ Date:
26
+ - Sat, 07 Dec 2013 21:16:20 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Status:
30
+ - 200 OK
31
+ X-Ratelimit-Limit:
32
+ - "5000"
33
+ X-Ratelimit-Remaining:
34
+ - "4991"
35
+ X-Ratelimit-Reset:
36
+ - "1386451969"
37
+ Cache-Control:
38
+ - private, max-age=60, s-maxage=60
39
+ Last-Modified:
40
+ - Sat, 07 Dec 2013 21:16:20 GMT
41
+ Etag:
42
+ - "\"00bde8b488647e7a3b3ba20a812788e6\""
43
+ Vary:
44
+ - Accept, Authorization, Cookie, X-GitHub-OTP
45
+ - Accept-Encoding
46
+ X-Github-Media-Type:
47
+ - github.v3; format=json
48
+ X-Content-Type-Options:
49
+ - nosniff
50
+ Content-Length:
51
+ - "290"
52
+ Access-Control-Allow-Credentials:
53
+ - "true"
54
+ Access-Control-Expose-Headers:
55
+ - ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
56
+ Access-Control-Allow-Origin:
57
+ - "*"
58
+ X-Github-Request-Id:
59
+ - 4D649864:70CB:1D9EC01:52A39023
60
+ body:
61
+ encoding: US-ASCII
62
+ string: "{\"url\":\"https://api.github.com/repos/murek/github_api_test/releases/assets/46084\",\"id\":46084,\"name\":\"Rake\",\"label\":\"Ruby code\",\"content_type\":\"application/octet-stream\",\"state\":\"uploaded\",\"size\":333,\"download_count\":0,\"created_at\":\"2013-12-07T21:00:29Z\",\"updated_at\":\"2013-12-07T21:16:20Z\"}"
63
+ http_version:
64
+ recorded_at: Sat, 07 Dec 2013 21:16:20 GMT
65
+ recorded_with: VCR 2.6.0