crashlog-auth-hmac 1.1.2 → 1.1.3

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.
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