crashlog-auth-hmac 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -3,7 +3,6 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
- Gemfile.lock
7
6
  InstalledFiles
8
7
  _yardoc
9
8
  coverage
@@ -0,0 +1,12 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 1.9.2
5
+ - 1.8.7
6
+ # - jruby-18mode
7
+ # - jruby-19mode
8
+ # - jruby-head
9
+ - rbx-18mode
10
+ - rbx-19mode
11
+ - ree
12
+
data/Gemfile CHANGED
@@ -2,3 +2,8 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in crashlog-faraday-auth-hmac.gemspec
4
4
  gemspec
5
+
6
+ gem 'rake'
7
+
8
+ gem 'rspec', '>= 2.7.0'
9
+ gem 'activesupport', '~> 3.2.0'
@@ -0,0 +1,32 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ crashlog-auth-hmac (1.1.2)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ activesupport (3.2.7)
10
+ i18n (~> 0.6)
11
+ multi_json (~> 1.0)
12
+ diff-lcs (1.1.3)
13
+ i18n (0.6.0)
14
+ multi_json (1.3.6)
15
+ rake (0.9.2.2)
16
+ rspec (2.11.0)
17
+ rspec-core (~> 2.11.0)
18
+ rspec-expectations (~> 2.11.0)
19
+ rspec-mocks (~> 2.11.0)
20
+ rspec-core (2.11.1)
21
+ rspec-expectations (2.11.2)
22
+ diff-lcs (~> 1.1.3)
23
+ rspec-mocks (2.11.1)
24
+
25
+ PLATFORMS
26
+ ruby
27
+
28
+ DEPENDENCIES
29
+ activesupport (~> 3.2.0)
30
+ crashlog-auth-hmac!
31
+ rake
32
+ rspec (>= 2.7.0)
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Crashlog::AuthHMAC
2
2
 
3
+ [![Build Status](https://secure.travis-ci.org/crashlog/auth-hmac.png?branch=master)](http://travis-ci.org/crashlog/auth-hmac)
4
+
3
5
  auth-hmac is a Ruby implementation of HMAC based authentication of HTTP requests.
4
6
 
5
7
  HMAC authentication involves a client and server having a shared secret key. When sending the request the client, signs the request using the secret key. This involves building a canonical representation of the request and then generating a HMAC of the request using the secret. The generated HMAC is then sent as part of the request.
@@ -1,3 +1,4 @@
1
1
  module CrashLog
2
- autoload :AuthHMAC, 'crash_log/auth_hmac'
3
2
  end
3
+
4
+ require 'crash_log/auth_hmac'
@@ -26,6 +26,8 @@ module CrashLog
26
26
  def headers(request)
27
27
  if request.respond_to?(:headers)
28
28
  request.headers
29
+ elsif request.is_a?(Hash) && request.has_key?(:request_headers)
30
+ request[:request_headers]
29
31
  elsif request.respond_to?(:[])
30
32
  request
31
33
  else
@@ -71,6 +73,8 @@ module CrashLog
71
73
  def request_method(request)
72
74
  if request.respond_to?(:request_method) && request.request_method.is_a?(String)
73
75
  request.request_method
76
+ elsif request.is_a?(Hash) && request.has_key?(:method)
77
+ request[:method].to_s
74
78
  elsif request.respond_to?(:method) && request.method.is_a?(String)
75
79
  request.method
76
80
  elsif request.respond_to?(:env) && request.env
@@ -103,6 +107,8 @@ module CrashLog
103
107
  # Try unparsed_uri in case it is a Webrick request
104
108
  path = if request.respond_to?(:unparsed_uri)
105
109
  request.unparsed_uri
110
+ elsif request.is_a?(Hash) && request.has_key?(:url) && request[:url].is_a?(URI)
111
+ request[:url].path
106
112
  else
107
113
  request.path
108
114
  end
@@ -150,7 +156,7 @@ module CrashLog
150
156
  # Supports same options as AuthHMAC.initialize for overriding service_id and
151
157
  # signature method.
152
158
  #
153
- def AuthHMAC.canonical_string(request, options = nil)
159
+ def self.canonical_string(request, options = nil)
154
160
  self.new(nil, options).canonical_string(request)
155
161
  end
156
162
 
@@ -159,7 +165,7 @@ module CrashLog
159
165
  # Supports same options as AuthHMAC.initialize for overriding service_id and
160
166
  # signature method.
161
167
  #
162
- def AuthHMAC.signature(request, secret, options = nil)
168
+ def self.signature(request, secret, options = nil)
163
169
  self.new(nil, options).signature(request, secret)
164
170
  end
165
171
 
@@ -168,7 +174,7 @@ module CrashLog
168
174
  # Supports same options as AuthHMAC.initialize for overriding service_id and
169
175
  # signature method.
170
176
  #
171
- def AuthHMAC.sign!(request, access_key_id, secret, options = nil)
177
+ def self.sign!(request, access_key_id, secret, options = nil)
172
178
  credentials = { access_key_id => secret }
173
179
  self.new(credentials, options).sign!(request, access_key_id)
174
180
  end
@@ -178,7 +184,7 @@ module CrashLog
178
184
  # Supports same options as AuthHMAC.initialize for overriding service_id and
179
185
  # signature method.
180
186
  #
181
- def AuthHMAC.authenticated?(request, access_key_id, secret, options)
187
+ def self.authenticated?(request, access_key_id, secret, options)
182
188
  credentials = { access_key_id => secret }
183
189
  self.new(credentials, options).authenticated?(request)
184
190
  end
@@ -1,5 +1,5 @@
1
1
  module CrashLog
2
2
  class AuthHMAC
3
- VERSION = "1.1.2"
3
+ VERSION = "1.1.3"
4
4
  end
5
5
  end
@@ -54,6 +54,22 @@ describe CrashLog::AuthHMAC do
54
54
  CrashLog::AuthHMAC.sign!(request, "my-key-id", "secret", options)
55
55
  request['Authorization'].should == "MyService my-key-id:/L4N1v1BZSHfAYkQjsvZn696D9c="
56
56
  end
57
+
58
+ it 'can sign a faraday request hash' do
59
+ Time.stub(:now).and_return(Time.parse("Thu, 10 Jul 2008 03:29:56 GMT"))
60
+
61
+ env = {
62
+ :method=>:get,
63
+ :body=>"test",
64
+ :url=>URI.parse("http://sushi.com/api/foo.json"),
65
+ :request_headers=>{"Date" => Time.now.utc.httpdate},
66
+ :parallel_manager=>nil,
67
+ :request=>nil,
68
+ :ssl=>{}
69
+ }
70
+ CrashLog::AuthHMAC.sign!(env, "access_id", "secret", { :service_id => 'MyService' })
71
+ env['Authorization'].should == 'MyService access_id:ZQnbYwmno+PsaavXzUAdvj/DKvo='
72
+ end
57
73
  end
58
74
 
59
75
  describe "#sign!" do
@@ -1,4 +1,4 @@
1
- require "crash_log"
1
+ require "crash_log/auth_hmac"
2
2
 
3
3
  Dir[File.expand_path("../support/*.rb", __FILE__)].each { |file| require file }
4
4
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crashlog-auth-hmac
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-05 00:00:00.000000000 Z
12
+ date: 2012-08-06 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A Ruby Gem for authenticating HTTP requests using a HMAC
15
15
  email:
@@ -20,7 +20,9 @@ extra_rdoc_files: []
20
20
  files:
21
21
  - .gitignore
22
22
  - .rspec
23
+ - .travis.yml
23
24
  - Gemfile
25
+ - Gemfile.lock
24
26
  - LICENSE
25
27
  - README.md
26
28
  - Rakefile