moguera-authentication 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7d6a12e8bf765eea7438dc1cb9553a02dff5ccc0
4
- data.tar.gz: 4273174cdfebf58dc6b90ba5e420686cf6da2035
3
+ metadata.gz: 9c9ccff400b781421408c21d83821a8ca3c3e672
4
+ data.tar.gz: 88e99e22e2dfb9239577910591da4e4840aabeca
5
5
  SHA512:
6
- metadata.gz: 648d0938793be93bf7ae8de811b5108d4019e39c72444c20f692678b73a03c6cfcaa1ad55135b4268ed7a46ecb57ed392a048b42c570be8a9a4ce4a539e2ccf1
7
- data.tar.gz: 55ccb61e61572a27bb4da245c0f9e76e3064faa1447d6c2e169d82010bdf2992ca6599e2f09946c8b5509b4fdf5da64f65e8950b1c794013d938387bfb0848c9
6
+ metadata.gz: 6ed915f53a94c7cb4a51c08cc8f562b7adc027269e84147797aaf16663fcb0aab46e9faf465a4a0abf99c0e8978b9838234458e09ef32f6dd1c242323e006586
7
+ data.tar.gz: 6a837da2a49a40e2c613e704df27bb414801e27d4749af350f849d279ced8622fe7474fe76e3833c3c467b972f416d8eada832875ffce50cb3f02d303f816707
data/.gitignore CHANGED
@@ -1,6 +1,7 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
3
  /Gemfile.lock
4
+ /sample/Gemfile.lock
4
5
  /_yardoc/
5
6
  /coverage/
6
7
  /doc/
data/Gemfile CHANGED
@@ -5,15 +5,10 @@ gemspec
5
5
 
6
6
  group :test do
7
7
  gem 'timecop'
8
- gem 'pry'
8
+ gem 'pry', '< 0.10.0'
9
9
  gem 'pry-byebug'
10
10
  gem 'simplecov'
11
11
  gem 'simplecov-rcov'
12
12
  gem 'coveralls'
13
13
  gem 'rack-test'
14
14
  end
15
-
16
- group :development do
17
- gem 'rest-client'
18
- gem 'sinatra'
19
- end
data/README.md CHANGED
@@ -125,46 +125,27 @@ end
125
125
 
126
126
  ### Cilent
127
127
 
128
- example rest-client
128
+ example client-faraday.rb
129
129
 
130
130
  ```ruby
131
- require 'moguera/authentication'
132
- require 'rest-client'
133
- require 'time'
134
- require 'json'
135
- require 'uri'
131
+ require 'faraday/moguera_authentication'
136
132
 
137
133
  url = ARGV[0]
138
- abort "Usage: ruby #{__FILE__} http://localhost:4567/login" unless url
139
-
140
- request_path = URI.parse(url).path
141
- request_path = '/' if request_path.empty?
142
- http_date = Time.now.httpdate
143
- content_type = 'application/json'
144
-
145
- params = {
146
- access_key: 'user01',
147
- secret_access_key: 'secret',
148
- request_path: request_path,
149
- request_method: 'POST',
150
- content_type: content_type,
151
- http_date: http_date
152
- }
153
-
154
- request = Moguera::Authentication::Request.new(params)
155
-
156
- headers = {
157
- Authorization: request.token,
158
- content_type: content_type,
159
- Date: http_date
160
- }
161
-
162
- begin
163
- res = RestClient.post(url, {key:'value'}.to_json, headers)
164
- puts res.body
165
- rescue => e
166
- puts e.message
134
+ abort "Usage: ruby #{__FILE__} http://localhost:9292/login/hello" unless url
135
+
136
+ access_key = 'user01'
137
+ secret_access_key = 'secret'
138
+
139
+ conn = Faraday.new do |faraday|
140
+ faraday.use Faraday::MogueraAuthentication, access_key, secret_access_key
141
+ faraday.response :logger
142
+ faraday.adapter Faraday.default_adapter
167
143
  end
144
+
145
+ payload = '{ "key" : "value" }'
146
+ response = conn.post(url, payload, 'Content-Type' => 'application/json')
147
+
148
+ puts response.body
168
149
  ```
169
150
 
170
151
  ### Quick Run
@@ -178,10 +159,10 @@ $ rackup sample/config.ru
178
159
  client
179
160
 
180
161
  ```
181
- $ sample/client.rb http://localhost:9292/hello
162
+ $ sample/client-faraday.rb http://localhost:9292/hello
182
163
  Hello World!
183
164
 
184
- $ sample/client.rb http://localhost:9292/login/hello
165
+ $ sample/client-faraday.rb http://localhost:9292/login/hello
185
166
  Hello user01!
186
167
  ```
187
168
 
@@ -195,6 +176,6 @@ Hello user01!
195
176
 
196
177
  ## Copyright
197
178
 
198
- Copyright (c) 2014 hiro-su.
179
+ Copyright (c) 2015 hiro-su.
199
180
 
200
- MIT License
181
+ MIT License
@@ -0,0 +1,41 @@
1
+ require 'faraday'
2
+ require 'moguera/authentication'
3
+ require 'time'
4
+
5
+ module Faraday
6
+ class MogueraAuthentication < Faraday::Middleware
7
+ def initialize(app, access_key, secret_access_key)
8
+ super(app) # @app = app
9
+ @access_key = access_key
10
+ @secret_access_key = secret_access_key
11
+ end
12
+
13
+ def call(env)
14
+ params = build_parameter(env)
15
+ request = Moguera::Authentication::Request.new(params)
16
+ headers = {
17
+ 'Authorization' => request.token,
18
+ 'Content-Type' => params[:content_type],
19
+ 'Date' => params[:http_date]
20
+ }
21
+ env.request_headers.merge!(headers)
22
+ @app.call(env)
23
+ end
24
+
25
+ private
26
+
27
+ def build_parameter(env)
28
+ path = env.url.path
29
+ method = "#{env.method}".upcase
30
+ headers = env.request_headers
31
+ {
32
+ access_key: @access_key,
33
+ secret_access_key: @secret_access_key,
34
+ request_path: path,
35
+ request_method: method,
36
+ content_type: headers['Content-Type'],
37
+ http_date: headers['Date'] || Time.now.httpdate
38
+ }
39
+ end
40
+ end
41
+ end
@@ -1,5 +1,5 @@
1
1
  module Moguera
2
2
  class Authentication
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
@@ -19,9 +19,9 @@ module Rack
19
19
  def call(env)
20
20
  begin
21
21
  request_token = Moguera::Authentication.new(env['HTTP_AUTHORIZATION'])
22
- auth = request_token.authenticate! do |key|
23
- secret = @secret_block.call(key)
24
- params = build_parameter(key, secret, env)
22
+ auth = request_token.authenticate! do |access_key|
23
+ secret_access_key = @secret_block.call(access_key)
24
+ params = build_parameter(access_key, secret_access_key, env)
25
25
 
26
26
  Moguera::Authentication::Request.new(params)
27
27
  end
@@ -36,10 +36,10 @@ module Rack
36
36
 
37
37
  private
38
38
 
39
- def build_parameter(key, secret, env)
39
+ def build_parameter(access_key, secret_access_key, env)
40
40
  {
41
- access_key: key,
42
- secret_access_key: secret,
41
+ access_key: access_key,
42
+ secret_access_key: secret_access_key,
43
43
  request_path: env['REQUEST_PATH'],
44
44
  request_method: env['REQUEST_METHOD'],
45
45
  content_type: env['CONTENT_TYPE'],
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'faraday'
4
+ gem 'httpclient'
5
+ gem 'sinatra'
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
4
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), %w(.. lib)))
5
+
6
+ require 'faraday/moguera_authentication'
7
+
8
+ url = ARGV[0]
9
+ abort "Usage: ruby #{__FILE__} http://localhost:9292/login/hello" unless url
10
+
11
+ access_key = 'user01'
12
+ secret_access_key = 'secret'
13
+
14
+ conn = Faraday.new do |faraday|
15
+ faraday.use Faraday::MogueraAuthentication, access_key, secret_access_key
16
+ faraday.response :logger
17
+ faraday.adapter Faraday.default_adapter
18
+ end
19
+
20
+ payload = '{ "key" : "value" }'
21
+ response = conn.post(url, payload, 'Content-Type' => 'application/json')
22
+
23
+ puts response.body
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
4
4
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), %w(.. lib)))
5
5
 
6
6
  require 'moguera/authentication'
7
- require 'rest-client'
7
+ require 'httpclient'
8
8
  require 'time'
9
9
  require 'json'
10
10
  require 'uri'
@@ -12,6 +12,9 @@ require 'uri'
12
12
  url = ARGV[0]
13
13
  abort "Usage: ruby #{__FILE__} http://localhost:4567/login" unless url
14
14
 
15
+ http_client = HTTPClient.new
16
+ http_client.debug_dev = STDERR
17
+
15
18
  request_path = URI.parse(url).path
16
19
  request_path = '/' if request_path.empty?
17
20
  http_date = Time.now.httpdate
@@ -29,14 +32,10 @@ params = {
29
32
  request = Moguera::Authentication::Request.new(params)
30
33
 
31
34
  headers = {
32
- Authorization: request.token,
33
- content_type: content_type,
34
- Date: http_date
35
+ 'Authorization' => request.token,
36
+ 'Content-Type' => content_type,
37
+ 'Date' => http_date
35
38
  }
36
39
 
37
- begin
38
- res = RestClient.post(url, {key:'value'}.to_json, headers)
39
- puts res.body
40
- rescue => e
41
- puts e.response
42
- end
40
+ response = http_client.post(url, {key:'value'}.to_json, headers)
41
+ puts response.body
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moguera-authentication
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - hiro-su
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-07 00:00:00.000000000 Z
11
+ date: 2015-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -81,6 +81,7 @@ files:
81
81
  - LICENSE.txt
82
82
  - README.md
83
83
  - Rakefile
84
+ - lib/faraday/moguera_authentication.rb
84
85
  - lib/moguera/authentication.rb
85
86
  - lib/moguera/authentication/exception.rb
86
87
  - lib/moguera/authentication/request.rb
@@ -91,6 +92,8 @@ files:
91
92
  - lib/rails/moguera_authentication/install.rb
92
93
  - lib/rails/moguera_authentication/railtie.rb
93
94
  - moguera-authentication.gemspec
95
+ - sample/Gemfile
96
+ - sample/client-faraday.rb
94
97
  - sample/client.rb
95
98
  - sample/config.ru
96
99
  - sample/credential.json
@@ -120,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
123
  version: '0'
121
124
  requirements: []
122
125
  rubyforge_project:
123
- rubygems_version: 2.2.2
126
+ rubygems_version: 2.4.5
124
127
  signing_key:
125
128
  specification_version: 4
126
129
  summary: Simple REST API Authentication.