warden-github 0.5.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,5 @@
1
1
  require 'yajl'
2
+ require 'octokit'
2
3
  require 'rest-client'
3
4
 
4
5
  module Warden
@@ -61,6 +62,58 @@ module Warden
61
62
  false
62
63
  end
63
64
 
65
+ # Send a V3 API PUT request to path and parses the response body
66
+ #
67
+ # path - the path on api.github.com to hit
68
+ # params - extra params for calling the api
69
+ #
70
+ def get(path, params)
71
+ github_request(path, params)
72
+ end
73
+
74
+ # Send a V3 API PUT request to path and parses the response body
75
+ #
76
+ # path - the path on api.github.com to hit
77
+ # params - extra params for calling the api
78
+ #
79
+ def post(path, params)
80
+ headers = {:Authorization => "token #{user.token}", :content_type => :json, :accept => :json}
81
+ res = RestClient.post("#{github_api_uri}/#{path}", params.to_json, headers)
82
+ Yajl.load(res)
83
+ end
84
+
85
+ # Send a V3 API PUT request to path and parses the response body
86
+ #
87
+ # path - the path on api.github.com to hit
88
+ # params - extra params for calling the api
89
+ #
90
+ def put(path, params)
91
+ headers = {:Authorization => "token #{user.token}", :content_type => :json, :accept => :json}
92
+ res = RestClient.put("#{github_api_uri}/#{path}", params.to_json, headers)
93
+ Yajl.load(res)
94
+ end
95
+
96
+ # Send a V3 API DELETE request to path and parses the response body
97
+ #
98
+ # path - the path on api.github.com to hit
99
+ # params - extra params for calling the api
100
+ #
101
+ def delete(path, params)
102
+ headers = {:Authorization => "token #{user.token}", :content_type => :json, :accept => :json}
103
+ res = RestClient.delete("#{github_api_uri}/#{path}", params.to_json, headers)
104
+ Yajl.load(res)
105
+ end
106
+
107
+ # Access the GitHub API from Octokit
108
+ #
109
+ # Octokit is a robust client library for the GitHub API
110
+ # https://github.com/pengwynn/octokit
111
+ #
112
+ # Returns a cached client object for easy use
113
+ def api
114
+ @api ||= Octokit::Client.new(:login => login, :oauth_token => token)
115
+ end
116
+
64
117
  # Send a V3 API GET request to path and parse the response body
65
118
  #
66
119
  # path - the path on api.github.com to hit
@@ -91,7 +144,8 @@ module Warden
91
144
  # github_raw_request("/user/repos", {:page => 3})
92
145
  # # => RestClient::Response
93
146
  def github_raw_request(path, params = {})
94
- RestClient.get("#{github_api_uri}/#{path}", :params => params.merge({ :access_token => token }), :accept => :json)
147
+ headers = {:Authorization => "token #{token}", :accept => :json}
148
+ RestClient.get("#{github_api_uri}/#{path}", headers.merge(:params => params))
95
149
  end
96
150
 
97
151
  private
@@ -1,5 +1,5 @@
1
1
  module Warden
2
2
  module Github
3
- VERSION = "0.5.1"
3
+ VERSION = "0.6.0"
4
4
  end
5
5
  end
data/spec/user_spec.rb ADDED
@@ -0,0 +1,14 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "Warden::Github" do
4
+ let(:user) do
5
+ Warden::Github::Oauth::User.new({'login' => 'atmos'}, 'abcde')
6
+ end
7
+
8
+ it "knows the token" do
9
+ user.token.should eql('abcde')
10
+ end
11
+ it "can access the octokit object to make api calls" do
12
+ user.api.should_not be_nil
13
+ end
14
+ end
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.add_dependency "json", "~>1.5"
19
19
  s.add_dependency "warden", "~>1.0"
20
20
  s.add_dependency "oauth2", "~>0.5.2"
21
+ s.add_dependency "octokit", "~>1.4.0"
21
22
  s.add_dependency "rest-client", "~>1.6.1"
22
23
  s.add_dependency "yajl-ruby", "~>1.1"
23
24
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warden-github
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 5
9
- - 1
10
- version: 0.5.1
8
+ - 6
9
+ - 0
10
+ version: 0.6.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Corey Donohoe
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-06-02 00:00:00 -07:00
18
+ date: 2012-06-04 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -65,9 +65,25 @@ dependencies:
65
65
  type: :runtime
66
66
  version_requirements: *id003
67
67
  - !ruby/object:Gem::Dependency
68
- name: rest-client
68
+ name: octokit
69
69
  prerelease: false
70
70
  requirement: &id004 !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ hash: 7
76
+ segments:
77
+ - 1
78
+ - 4
79
+ - 0
80
+ version: 1.4.0
81
+ type: :runtime
82
+ version_requirements: *id004
83
+ - !ruby/object:Gem::Dependency
84
+ name: rest-client
85
+ prerelease: false
86
+ requirement: &id005 !ruby/object:Gem::Requirement
71
87
  none: false
72
88
  requirements:
73
89
  - - ~>
@@ -79,11 +95,11 @@ dependencies:
79
95
  - 1
80
96
  version: 1.6.1
81
97
  type: :runtime
82
- version_requirements: *id004
98
+ version_requirements: *id005
83
99
  - !ruby/object:Gem::Dependency
84
100
  name: yajl-ruby
85
101
  prerelease: false
86
- requirement: &id005 !ruby/object:Gem::Requirement
102
+ requirement: &id006 !ruby/object:Gem::Requirement
87
103
  none: false
88
104
  requirements:
89
105
  - - ~>
@@ -94,11 +110,11 @@ dependencies:
94
110
  - 1
95
111
  version: "1.1"
96
112
  type: :runtime
97
- version_requirements: *id005
113
+ version_requirements: *id006
98
114
  - !ruby/object:Gem::Dependency
99
115
  name: rack
100
116
  prerelease: false
101
- requirement: &id006 !ruby/object:Gem::Requirement
117
+ requirement: &id007 !ruby/object:Gem::Requirement
102
118
  none: false
103
119
  requirements:
104
120
  - - ~>
@@ -110,11 +126,11 @@ dependencies:
110
126
  - 0
111
127
  version: 1.4.0
112
128
  type: :development
113
- version_requirements: *id006
129
+ version_requirements: *id007
114
130
  - !ruby/object:Gem::Dependency
115
131
  name: rake
116
132
  prerelease: false
117
- requirement: &id007 !ruby/object:Gem::Requirement
133
+ requirement: &id008 !ruby/object:Gem::Requirement
118
134
  none: false
119
135
  requirements:
120
136
  - - ">="
@@ -124,11 +140,11 @@ dependencies:
124
140
  - 0
125
141
  version: "0"
126
142
  type: :development
127
- version_requirements: *id007
143
+ version_requirements: *id008
128
144
  - !ruby/object:Gem::Dependency
129
145
  name: rspec
130
146
  prerelease: false
131
- requirement: &id008 !ruby/object:Gem::Requirement
147
+ requirement: &id009 !ruby/object:Gem::Requirement
132
148
  none: false
133
149
  requirements:
134
150
  - - ~>
@@ -140,11 +156,11 @@ dependencies:
140
156
  - 0
141
157
  version: 2.8.0
142
158
  type: :development
143
- version_requirements: *id008
159
+ version_requirements: *id009
144
160
  - !ruby/object:Gem::Dependency
145
161
  name: webrat
146
162
  prerelease: false
147
- requirement: &id009 !ruby/object:Gem::Requirement
163
+ requirement: &id010 !ruby/object:Gem::Requirement
148
164
  none: false
149
165
  requirements:
150
166
  - - ">="
@@ -154,11 +170,11 @@ dependencies:
154
170
  - 0
155
171
  version: "0"
156
172
  type: :development
157
- version_requirements: *id009
173
+ version_requirements: *id010
158
174
  - !ruby/object:Gem::Dependency
159
175
  name: sinatra
160
176
  prerelease: false
161
- requirement: &id010 !ruby/object:Gem::Requirement
177
+ requirement: &id011 !ruby/object:Gem::Requirement
162
178
  none: false
163
179
  requirements:
164
180
  - - ">="
@@ -168,11 +184,11 @@ dependencies:
168
184
  - 0
169
185
  version: "0"
170
186
  type: :development
171
- version_requirements: *id010
187
+ version_requirements: *id011
172
188
  - !ruby/object:Gem::Dependency
173
189
  name: shotgun
174
190
  prerelease: false
175
- requirement: &id011 !ruby/object:Gem::Requirement
191
+ requirement: &id012 !ruby/object:Gem::Requirement
176
192
  none: false
177
193
  requirements:
178
194
  - - ">="
@@ -182,11 +198,11 @@ dependencies:
182
198
  - 0
183
199
  version: "0"
184
200
  type: :development
185
- version_requirements: *id011
201
+ version_requirements: *id012
186
202
  - !ruby/object:Gem::Dependency
187
203
  name: addressable
188
204
  prerelease: false
189
- requirement: &id012 !ruby/object:Gem::Requirement
205
+ requirement: &id013 !ruby/object:Gem::Requirement
190
206
  none: false
191
207
  requirements:
192
208
  - - ~>
@@ -198,11 +214,11 @@ dependencies:
198
214
  - 0
199
215
  version: 2.2.0
200
216
  type: :development
201
- version_requirements: *id012
217
+ version_requirements: *id013
202
218
  - !ruby/object:Gem::Dependency
203
219
  name: rack-test
204
220
  prerelease: false
205
- requirement: &id013 !ruby/object:Gem::Requirement
221
+ requirement: &id014 !ruby/object:Gem::Requirement
206
222
  none: false
207
223
  requirements:
208
224
  - - ~>
@@ -214,7 +230,7 @@ dependencies:
214
230
  - 3
215
231
  version: 0.5.3
216
232
  type: :development
217
- version_requirements: *id013
233
+ version_requirements: *id014
218
234
  description: A warden strategy for easy oauth integration with github
219
235
  email:
220
236
  - atmos@atmos.org
@@ -242,6 +258,7 @@ files:
242
258
  - spec/oauth_spec.rb
243
259
  - spec/proxy_spec.rb
244
260
  - spec/spec_helper.rb
261
+ - spec/user_spec.rb
245
262
  - warden-github.gemspec
246
263
  has_rdoc: true
247
264
  homepage: http://github.com/atmos/warden-github
@@ -282,3 +299,4 @@ test_files:
282
299
  - spec/oauth_spec.rb
283
300
  - spec/proxy_spec.rb
284
301
  - spec/spec_helper.rb
302
+ - spec/user_spec.rb