Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 545 lines (398 sloc) 17.618 kb
5c058a5a »
2013-02-09 Add badges [ci skip]
1 # Octokit
2
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
3 Ruby toolkit for the GitHub API.
5c058a5a »
2013-02-09 Add badges [ci skip]
4
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
5 ![Logo][logo]
23b5eaa6 »
2013-08-22 Fix logo
6 [logo]: http://cl.ly/image/3Y013H0A2z3z/gundam-ruby.png
59ddfde3 »
2013-05-31 Update README with new repo home
7
1af13dc1 »
2013-08-23 Guide to upgrade from 1.x
8 Octokit 2.0 is out, check the [Upgrade Guide](#upgrading-guide) before
9 upgrading from 1.x.
10
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
11 ## Philosophy
67c9f488 »
2011-11-24 Reformat [ci skip]
12
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
13 API wrappers [should reflect the idioms of the language in which they were
14 written][wrappers]. Octokit.rb wraps the [GitHub API][github-api] in a flat API
30b33ae2 »
2013-08-22 Docs updates
15 client that follows Ruby conventions and requires little knowledge of REST.
16 Most methods have positional arguments for required input and an options hash
17 for optional parameters, headers, or other options:
3d56c375 »
2011-05-05 Replace manual changelog with links to compare views
18
75928c35 »
2012-04-30 Syntax highlighting in the README
19 ```ruby
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
20 # Fetch a README with Accept header for HTML format
21 Octokit.readme 'al3x/sovereign', :accept => 'application/vnd.github.html'
75928c35 »
2012-04-30 Syntax highlighting in the README
22 ```
3d56c375 »
2011-05-05 Replace manual changelog with links to compare views
23
30b33ae2 »
2013-08-22 Docs updates
24
25 [wrappers]: http://wynnnetherland.com/journal/what-makes-a-good-api-wrapper
26 [github-api]: http://developer.github.com
27
28 ## Quick start
29
30 Install via Rubygems
31
32 gem install octokit
33
34 ... or add to your Gemfile
35
36 gem "octokit", "~> 2.0"
37
38 ### Making requests
39
40 API methods are available as module methods (consuming module-level
41 configuration) or as client instance methods.
3d56c375 »
2011-05-05 Replace manual changelog with links to compare views
42
75928c35 »
2012-04-30 Syntax highlighting in the README
43 ```ruby
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
44 # Provide authentication credentials
45 Octokit.configure do |c|
8370c05d »
2013-08-27 small update on README
46 c.login = 'defunkt'
47 c.password = 'c0d3b4ssssss!'
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
48 end
315ceabd »
2012-06-28 Tweaked README formatting
49
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
50 # Fetch the current user
51 Octokit.user
75928c35 »
2012-04-30 Syntax highlighting in the README
52 ```
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
53 or
ce14c2ee »
2012-11-09 adding commit doc to readme
54
55 ```ruby
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
56 # Provide authentication credentials
dfd8b7b4 »
2014-02-26 Fix warning: ambiguous first argument
57 client = Octokit::Client.new(:login => 'defunkt', :password => 'c0d3b4ssssss!')
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
58 # Fetch the current user
59 client.user
ce14c2ee »
2012-11-09 adding commit doc to readme
60 ```
61
30b33ae2 »
2013-08-22 Docs updates
62 ### Consuming resources
7dd393fc »
2012-11-29 Bump version
63
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
64 Most methods return a `Resource` object which provides dot notation and `[]`
30b33ae2 »
2013-08-22 Docs updates
65 access for fields returned in the API response.
bba977f5 »
2013-02-09 Use relative links [ci skip]
66
7dd393fc »
2012-11-29 Bump version
67 ```ruby
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
68 # Fetch a user
69 user = Octokit.user 'jbarnette'
70 puts user.name
71 # => "John Barnette"
72 puts user.fields
73 # => <Set: {:login, :id, :gravatar_id, :type, :name, :company, :blog, :location, :email, :hireable, :bio, :public_repos, :followers, :following, :created_at, :updated_at, :public_gists}>
30b33ae2 »
2013-08-22 Docs updates
74 puts user[:company]
75 # => "GitHub"
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
76 user.rels[:gists].href
77 # => "https://api.github.com/users/jbarnette/gists"
7dd393fc »
2012-11-29 Bump version
78 ```
79
4e36d106 »
2013-08-22 Formatting tweaks
80 **Note:** URL fields are culled into a separate `.rels` collection for easier
81 [Hypermedia](#hypermedia-agent) support.
c4dd3200 »
2012-06-28 Add Enterprise instructions
82
2cd9ecad »
2013-08-22 Does this README make me look fat?
83 ### Accessing HTTP responses
c4dd3200 »
2012-06-28 Add Enterprise instructions
84
2cd9ecad »
2013-08-22 Does this README make me look fat?
85 While most methods return a `Resource` object or a Boolean, sometimes you may
86 need access to the raw HTTP response headers. You can access the last HTTP
87 response with `Client#last_response`:
c4dd3200 »
2012-06-28 Add Enterprise instructions
88
2cd9ecad »
2013-08-22 Does this README make me look fat?
89 ```ruby
90 user = Octokit.user 'andrewpthorp'
91 response = Octokit.last_response
92 etag = response.headers[:etag]
93 ```
94
95 ## Authentication
96
97 Octokit supports the various [authentication methods supported by the GitHub
98 API][auth]:
99
100 ### Basic Authentication
101
102 Using your GitHub username and password is the easiest way to get started
103 making authenticated requests:
104
105 ```ruby
106 client = Octokit::Client.new \
107 :login => 'defunkt',
108 :password => 'c0d3b4ssssss!'
109
110 user = client.user
111 user.login
112 # => "defunkt"
113 ```
114 While Basic Authentication makes it easy to get started quickly, OAuth access
115 tokens are the preferred way to authenticate on behalf of users.
116
117 ### OAuth access tokens
118
119 [OAuth access tokens][oauth] provide two main benefits over using your username
120 and password:
121
122 * **Revokable access**. Access tokens can be revoked, removing access for just
123 that token without having to change your password everywhere.
124 * **Limited access**. Access tokens have [access scopes][] which allow for more
125 granular access to API resources. For instance, you can grant a third party
126 access to your gists but not your private repositories.
127
128 To use an access token with the Octokit client, just pass it in lieu of your
129 username and password:
130
131 ```ruby
dfd8b7b4 »
2014-02-26 Fix warning: ambiguous first argument
132 client = Octokit::Client.new(:access_token => "<your 40 char token>")
2cd9ecad »
2013-08-22 Does this README make me look fat?
133
134 user = client.user
135 user.login
136 # => "defunkt"
137 ```
138
139 You can use `.create_authorization` to create a token using Basic Authorization
140 that you can use for subsequent calls.
141
427ed6cb »
2013-12-01 Add documentation for two-factor authentication
142 ### Two-Factor Authentication
143
dfd8b7b4 »
2014-02-26 Fix warning: ambiguous first argument
144 [Two-Factor Authentication](https://help.github.com/articles/about-two-factor-authentication) brings added security to the account by requiring more information to login.
427ed6cb »
2013-12-01 Add documentation for two-factor authentication
145
146 Using two-factor authentication for API calls is as simple as adding the [required header](http://developer.github.com/v3/auth/#working-with-two-factor-authentication) as an option:
147
148 ```ruby
149 client = Octokit::Client.new \
150 :login => 'defunkt',
151 :password => 'c0d3b4ssssss!'
152
37038239 »
2013-12-01 Fix typo: Github to GitHub
153 user = client.user("defunkt", :headers => { "X-GitHub-OTP" => "<your 2FA token>" })
427ed6cb »
2013-12-01 Add documentation for two-factor authentication
154 ```
155
156 As you can imagine, this gets annoying quick since two-factor auth tokens are very short lived. So it is recommended to create an oauth token for the user to communicate with the API:
157
158 ```ruby
159 client = Octokit::Client.new \
160 :login => 'defunkt',
161 :password => 'c0d3b4ssssss!'
162
37038239 »
2013-12-01 Fix typo: Github to GitHub
163 client.create_authorization(:scopes => ["user"], :headers => { "X-GitHub-OTP" => "<your 2FA token>" })
427ed6cb »
2013-12-01 Add documentation for two-factor authentication
164 # => <your new oauth token>
165 ```
166
4e36d106 »
2013-08-22 Formatting tweaks
167 ### Using a .netrc file
2cd9ecad »
2013-08-22 Does this README make me look fat?
168
169 Octokit supports reading credentials from a netrc file (defaulting to
170 `~/.netrc`). Given these lines in your netrc:
171
172 ```
173 machine api.github.com
174 login defunkt
175 password c0d3b4ssssss!
176 ```
177 You can now create a client with those credentials:
178
179 ```ruby
dfd8b7b4 »
2014-02-26 Fix warning: ambiguous first argument
180 client = Octokit::Client.new(:netrc => true)
2cd9ecad »
2013-08-22 Does this README make me look fat?
181 client.login
182 # => "defunkt"
183 ```
184 But _I want to use OAuth_ you say. Since the GitHub API supports using an OAuth
185 token as a Basic password, you totally can:
186
187 ```
188 machine api.github.com
189 login defunkt
190 password <your 40 char token>
191 ```
192
1af13dc1 »
2013-08-23 Guide to upgrade from 1.x
193 **Note:** Support for netrc requires adding the [netrc gem][] to your Gemfile
194 or `.gemspec`.
195
2cd9ecad »
2013-08-22 Does this README make me look fat?
196 ### Application authentication
197
198 Octokit also supports application-only authentication [using OAuth application client
199 credentials][app-creds]. Using application credentials will result in making
200 anonymous API calls on behalf of an application in order to take advantage of
201 the higher rate limit.
202
203 ```ruby
204 client = Octokit::Client.new \
205 :client_id => "<your 20 char id>",
206 :client_secret => "<your 40 char secret>"
207
aa05d5de »
2013-11-05 Fix typo
208 user = client.user 'defunkt'
2cd9ecad »
2013-08-22 Does this README make me look fat?
209 ```
210
211
212
213 [auth]: http://developer.github.com/v3/#authentication
214 [oauth]: http://developer.github.com/v3/oauth/
215 [access scopes]: http://developer.github.com/v3/oauth/#scopes
216 [app-creds]: http://developer.github.com/v3/#unauthenticated-rate-limited-requests
217
089d28af »
2013-09-17 Pull stray docs into README
218 ## Pagination
219
220 Many GitHub API resources are [paginated][]. While you may be tempted to start
221 adding `:page` parameters to your calls, the API returns links to the next,
222 previous, and last pages for you in the `Link` response header as [Hypermedia
a5e514d6 »
2013-10-16 Fix link in README
223 link relations](#hypermedia-agent).
089d28af »
2013-09-17 Pull stray docs into README
224
225 ```ruby
226 issues = Octokit.issues 'rails/rails', :per_page => 100
227 issues.concat Octokit.last_response.rels[:next].get.data
228 ```
229
230 ### Auto pagination
231
232 For smallish resource lists, Octokit provides auto pagination. When this is
233 enabled, calls for paginated resources will fetch and concatenate the results
234 from every page into a single array:
235
236 ```ruby
237 Octokit.auto_paginate = true
238 issues = Octokit.issues 'rails/rails'
239 issues.length
240
241 # => 702
242 ```
243
244 **Note:** While Octokit auto pagination will set the page size to the maximum
245 `100`, and seek to not overstep your rate limit, you probably want to use a
246 custom pattern for traversing large lists.
247
248 [paginated]: http://developer.github.com/v3/#pagination
2cd9ecad »
2013-08-22 Does this README make me look fat?
249
250 ## Configuration and defaults
251
252 While `Octokit::Client` accepts a range of options when creating a new client
253 instance, Octokit's configuration API allows you to set your configuration
254 options at the module level. This is particularly handy if you're creating a
255 number of client instances based on some shared defaults.
256
257 ### Configuring module defaults
258
259 Every writable attribute in {Octokit::Configurable} can be set one at a time:
260
261 ```ruby
262 Octokit.api_endpoint = 'http://api.github.dev'
263 Octokit.web_endpoint = 'http://github.dev'
264 ```
265
266 or in batch:
267
268 ```ruby
269 Octokit.configure do |c|
270 c.api_endpoint = 'http://api.github.dev'
271 c.web_endpoint = 'http://github.dev'
272 end
273 ```
274
275 ### Using ENV variables
276
277 Default configuration values are specified in {Octokit::Default}. Many
278 attributes will look for a default value from the ENV before returning
279 Octokit's default.
280
281 ```ruby
282 # Given $OCTOKIT_API_ENDPOINT is "http://api.github.dev"
283 Octokit.api_endpoint
284
285 # => "http://api.github.dev"
286 ```
287
3ef2ffd6 »
2014-03-06 Document OCTOKIT_SILENT in the readme
288 Deprecation warnings and API endpoints in development preview warnings are
289 printed to STDOUT by default, these can be disabled by setting the ENV
290 `OCTOKIT_SILENT=true`.
291
2cd9ecad »
2013-08-22 Does this README make me look fat?
292 ## Hypermedia agent
293
294 Starting in version 2.0, Octokit is [hypermedia][]-enabled. Under the hood,
295 {Octokit::Client} uses [Sawyer][], a hypermedia client built on [Faraday][].
296
297 ### Hypermedia in Octokit
298
299 Resources returned by Octokit methods contain not only data but hypermedia
300 link relations:
301
302 ```ruby
303 user = Octokit.user 'technoweenie'
304
305 # Get the repos rel, returned from the API
306 # as repos_url in the resource
307 user.rels[:repos].href
308 # => "https://api.github.com/users/technoweenie/repos"
309
310 repos = user.rels[:repos].get.data
311 repos.last.name
312 # => "faraday-zeromq"
313 ```
314
315 When processing API responses, all `*_url` attributes are culled in to the link
316 relations collection. Any `url` attribute becomes `.rels[:self]`.
317
318 ### URI templates
319
320 You might notice many link relations have variable placeholders. Octokit
321 supports [URI Templates][uri-templates] for parameterized URI expansion:
322
323 ```ruby
324 repo = Octokit.repo 'pengwynn/pingwynn'
325 rel = repo.rels[:issues]
326 # => #<Sawyer::Relation: issues: get https://api.github.com/repos/pengwynn/pingwynn/issues{/number}>
327
328 # Get a page of issues
329 repo.rels[:issues].get.data
330
331 # Get issue #2
332 repo.rels[:issues].get(:uri => {:number => 2}).data
333 ```
334
335 ### The Full Hypermedia Experience™
336
337 If you want to use Octokit as a pure hypermedia API client, you can start at
f2610362 »
2013-12-03 Remove duplicate 'and'. There were two in a row
338 the API root and follow link relations from there:
2cd9ecad »
2013-08-22 Does this README make me look fat?
339
340 ```ruby
341 root = Octokit.root
342 root.rels[:repository].get :uri => {:owner => "octokit", :repo => "octokit.rb" }
343 ```
344
345 Octokit 3.0 aims to be hypermedia-driven, removing the internal URL
346 construction currently used throughout the client.
347
348 [hypermedia]: http://en.wikipedia.org/wiki/Hypermedia
349 [Sawyer]: https://github.com/lostisland/sawyer
350 [Faraday]: https://github.com/lostisland/faraday
351 [uri-templates]: http://tools.ietf.org/html/rfc6570
352
1af13dc1 »
2013-08-23 Guide to upgrade from 1.x
353 ## Upgrading guide
354
355 Version 2.0 includes a completely rewritten `Client` factory that now memoizes
356 client instances based on unique configuration options. Breaking changes also
357 include:
358
359 * `:oauth_token` is now `:access_token`
35d21bff »
2013-08-26 Add auto_paginate to upgrade guide
360 * `:auto_traversal` is now `:auto_paginate`
1af13dc1 »
2013-08-23 Guide to upgrade from 1.x
361 * `Hashie::Mash` has been removed. Responses now return a `Sawyer::Resource`
362 object. This new type behaves mostly like a Ruby `Hash`, but does not fully
363 support the `Hashie::Mash` API.
364 * Two new client error types are raised where appropriate:
365 `Octokit::TooManyRequests` and `Octokit::TooManyLoginAttempts`
366 * The `search_*` methods from v1.x are now found at `legacy_search_*`
367 * Support for netrc requires including the [netrc gem][] in your Gemfile or
368 gemspec.
b5b5beb9 »
2013-11-30 Added DataTime object change to the Upgrading Guide
369 * DateTime fields are now proper `DateTime` objects. Previous versions outputted DateTime fields as 'String' objects.
1af13dc1 »
2013-08-23 Guide to upgrade from 1.x
370
371 [netrc gem]: https://rubygems.org/gems/netrc
372
373
2cd9ecad »
2013-08-22 Does this README make me look fat?
374 ## Advanced usage
375
376 Since Octokit employs [Faraday][faraday] under the hood, some behavior can be
377 extended via middleware.
378
379 ### Debugging
380
381 Often, it helps to know what Octokit is doing under the hood. Faraday makes it
382 easy to peek into the underlying HTTP traffic:
383
384 ```ruby
4e362a3f »
2014-01-27 Fix Faraday::Builder is now Faraday::RackBuilder warning
385 stack = Faraday::RackBuilder.new do |builder|
2cd9ecad »
2013-08-22 Does this README make me look fat?
386 builder.response :logger
387 builder.use Octokit::Response::RaiseError
388 builder.adapter Faraday.default_adapter
389 end
390 Octokit.middleware = stack
391 Octokit.user 'pengwynn'
392 ```
393 ```
394 I, [2013-08-22T15:54:38.583300 #88227] INFO -- : get https://api.github.com/users/pengwynn
395 D, [2013-08-22T15:54:38.583401 #88227] DEBUG -- request: Accept: "application/vnd.github.beta+json"
396 User-Agent: "Octokit Ruby Gem 2.0.0.rc4"
397 I, [2013-08-22T15:54:38.843313 #88227] INFO -- Status: 200
398 D, [2013-08-22T15:54:38.843459 #88227] DEBUG -- response: server: "GitHub.com"
399 date: "Thu, 22 Aug 2013 20:54:40 GMT"
400 content-type: "application/json; charset=utf-8"
401 transfer-encoding: "chunked"
402 connection: "close"
403 status: "200 OK"
404 x-ratelimit-limit: "60"
405 x-ratelimit-remaining: "39"
406 x-ratelimit-reset: "1377205443"
407 ...
408 ```
409
410 See the [Faraday README][faraday] for more middleware magic.
411
412 ### Caching
413
414 If you want to boost performance, stretch your API rate limit, or avoid paying
415 the hypermedia tax, you can use [Faraday Http Cache][cache].
416
417 Add the gem to your Gemfile
418
419 gem 'faraday-http-cache'
420
421 Next, construct your own Faraday middleware:
422
423 ```ruby
4e362a3f »
2014-01-27 Fix Faraday::Builder is now Faraday::RackBuilder warning
424 stack = Faraday::RackBuilder.new do |builder|
2cd9ecad »
2013-08-22 Does this README make me look fat?
425 builder.use Faraday::HttpCache
426 builder.use Octokit::Response::RaiseError
427 builder.adapter Faraday.default_adapter
428 end
429 Octokit.middleware = stack
430 ```
431
432 Once configured, the middleware will store responses in cache based on ETag
433 fingerprint and serve those back up for future `304` responses for the same
434 resource. See the [project README][cache] for advanced usage.
435
436
437 [cache]: https://github.com/plataformatec/faraday-http-cache
438 [faraday]: https://github.com/lostisland/faraday
439
440 ## Hacking on Octokit.rb
441
442 If you want to hack on Octokit locally, we try to make [bootstrapping the
443 project][bootstrapping] as painless as possible. Just clone and run:
444
445 script/bootstrap
446
447 This will install project dependencies and get you up and running. If you want
448 to run a Ruby console to poke on Octokit, you can crank one up with:
449
450 script/console
451
452 Using the scripts in `./scripts` instead of `bundle exec rspec`, `bundle
453 console`, etc. ensures your dependencies are up-to-date.
454
455 ### Running and writing new tests
456
457 Octokit uses [VCR][] for recording and playing back API fixtures during test
458 runs. These fixtures are part of the Git project in the `spec/cassettes`
459 folder. For the most part, tests use an authenticated client, using a token
460 stored in `ENV['OCTOKIT_TEST_GITHUB_TOKEN']`. If you're not recording new
461 cassettes, you don't need to have this set. If you do need to record new
462 cassettes, this token can be any GitHub API token because the test suite strips
463 the actual token from the cassette output before storing to disk.
464
465 Since we periodically refresh our cassettes, please keep some points in mind
466 when writing new specs.
467
468 * **Specs should be idempotent**. The HTTP calls made during a spec should be
469 able to be run over and over. This means deleting a known resource prior to
470 creating it if the name has to be unique.
471 * **Specs should be able to be run in random order.** If a spec depends on
472 another resource as a fixture, make sure that's created in the scope of the
473 spec and not depend on a previous spec to create the data needed.
5d9abd73 »
2013-08-22 README tweaks
474 * **Do not depend on authenticated user info.** Instead of asserting
2cd9ecad »
2013-08-22 Does this README make me look fat?
475 actual values in resources, try to assert the existence of a key or that a
476 response is an Array. We're testing the client, not the API.
477
478 [bootstrapping]: http://wynnnetherland.com/linked/2013012801/bootstrapping-consistency
479 [VCR]: https://github.com/vcr/vcr
c4dd3200 »
2012-06-28 Add Enterprise instructions
480
f9fac6ed »
2012-05-03 GitHub automatically inserts anchors [ci skip]
481 ## Supported Ruby Versions
b1daac90 »
2012-10-11 Remove hard JSON dependency
482
5fce6aea »
2011-12-03 Make status images more consistent [ci skip]
483 This library aims to support and is [tested against][travis] the following Ruby
f4e4b01e »
2013-02-09 Reword [ci skip]
484 implementations:
3135e368 »
2011-07-27 Add section on Supported Rubies
485
486 * Ruby 1.9.2
ec78d11b »
2011-12-01 Add dependency status [ci skip]
487 * Ruby 1.9.3
9633f8fe »
2013-02-08 Add official support for Ruby 2.0.0
488 * Ruby 2.0.0
2f50d458 »
2013-12-25 Add Ruby 2.1 to README
489 * Ruby 2.1.0
3135e368 »
2011-07-27 Add section on Supported Rubies
490
f4e4b01e »
2013-02-09 Reword [ci skip]
491 If something doesn't work on one of these Ruby versions, it's a bug.
492
3135e368 »
2011-07-27 Add section on Supported Rubies
493 This library may inadvertently work (or seem to work) on other Ruby
494 implementations, however support will only be provided for the versions listed
495 above.
496
497 If you would like this library to support another Ruby version, you may
498 volunteer to be a maintainer. Being a maintainer entails making sure all tests
499 run and pass on that implementation. When something breaks on your
f4e4b01e »
2013-02-09 Reword [ci skip]
500 implementation, you will be responsible for providing patches in a timely
501 fashion. If critical issues for a particular implementation exist at the time
502 of a major release, support for that Ruby version may be dropped.
3135e368 »
2011-07-27 Add section on Supported Rubies
503
4acbfbe3 »
2013-08-08 Update readme to add travis link [ci skip]
504 [travis]: https://travis-ci.org/octokit/octokit.rb
505
cf70f207 »
2012-12-02 Add Versioning section
506 ## Versioning
507
508 This library aims to adhere to [Semantic Versioning 2.0.0][semver]. Violations
509 of this scheme should be reported as bugs. Specifically, if a minor or patch
510 version is released that breaks backward compatibility, that version should be
511 immediately yanked and/or a new version should be immediately released that
512 restores compatibility. Breaking changes to the public API will only be
513 introduced with new major versions. As a result of this policy, you can (and
514 should) specify a dependency on this gem using the [Pessimistic Version
515 Constraint][pvc] with two digits of precision. For example:
516
a3cf1b51 »
2013-08-21 Stubbing out new README and structure
517 spec.add_dependency 'octokit', '~> 2.0'
cf70f207 »
2012-12-02 Add Versioning section
518
519 [semver]: http://semver.org/
520 [pvc]: http://docs.rubygems.org/read/chapter/16#page74
521
ad54bea8 »
2013-08-22 Include LICENSE in README
522 ## License
59ddfde3 »
2013-05-31 Update README with new repo home
523
d1b31189 »
2014-02-07 Include license in README
524 Copyright (c) 2009-2014 Wynn Netherland, Adam Stacoviak, Erik Michaels-Ober
525
526 Permission is hereby granted, free of charge, to any person obtaining
527 a copy of this software and associated documentation files (the
528 "Software"), to deal in the Software without restriction, including
529 without limitation the rights to use, copy, modify, merge, publish,
530 distribute, sublicense, and/or sell copies of the Software, and to
531 permit persons to whom the Software is furnished to do so, subject to
532 the following conditions:
533
534 The above copyright notice and this permission notice shall be
535 included in all copies or substantial portions of the Software.
536
537 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
538 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
539 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
540 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
541 LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
542 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
543 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
544
Something went wrong with that request. Please try again.