uri_signer 0.0.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,18 +1,24 @@
1
- *.gem
2
- *.rbc
3
- .rvmrc
4
- .bundle
5
- .config
6
- .yardoc
7
- Gemfile.lock
8
- InstalledFiles
9
- _yardoc
10
- coverage
11
- doc/
12
- lib/bundler/man
13
- pkg
14
- rdoc
15
- spec/reports
16
- test/tmp
17
- test/version_tmp
18
- tmp
1
+ # See http://help.github.com/ignore-files/ for more about ignoring files.
2
+ #
3
+ # If you find yourself ignoring temporary files generated by your text editor
4
+ # or operating system, you probably want to add a global ignore instead:
5
+ # git config --global core.excludesfile ~/.gitignore
6
+
7
+ # Ignore all of the generated gem stuff
8
+ /pkg
9
+ /*.gem
10
+
11
+ # Ignore bundler config
12
+ /.bundle
13
+ /Gemfile.lock
14
+
15
+ # Ignore all bundler caching
16
+ /vendor/cache
17
+ /vendor/ruby
18
+
19
+ # Ignore all tempfiles
20
+ /tmp
21
+
22
+ # Ignores that should be in the global gitignore
23
+ /coverage
24
+ /doc
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ uri_signer
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.0.0
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
5
+ - 1.8.7
6
+
7
+ script: bundle exec rspec
data/README.md CHANGED
@@ -1,14 +1,21 @@
1
1
  # UriSigner
2
2
 
3
+ - [![Version](https://badge.fury.io/rb/uri_signer.png)](https://rubygems.org/gems/uri_signer)
4
+ - [![Climate](https://codeclimate.com/github/kissmetrics/uri_signer.png)](https://codeclimate.com/github/kissmetrics/uri_signer)
5
+ - [![Build](http://img.shields.io/travis-ci/kissmetrics/uri_signer.png)](https://travis-ci.org/kissmetrics/uri_signer)
6
+ - [![Dependencies](https://gemnasium.com/kissmetrics/uri_signer.png)](https://gemnasium.com/kissmetrics/uri_signer)
7
+ - [![Coverage](http://img.shields.io/coveralls/kissmetrics/uri_signer.png)](https://coveralls.io/r/kissmetrics/uri_signer)
8
+ - [![License](http://img.shields.io/license/MIT.png?color=green)](http://opensource.org/licenses/MIT)
9
+
3
10
  The KISSmetrics API provides an authentication realm of a digital
4
11
  signature of the request. This gem helps to put the pieces together and
5
12
  construct the URL with the signature.
6
13
 
7
14
  This is used within the core KISSmetrics Ruby API Wrapper to help
8
- abstract the building of the requests.
15
+ abstract the building of the requests.
9
16
 
10
17
  Using this without a wrapper will require you to manually provide your
11
- *client_secret*.
18
+ *client_secret*.
12
19
 
13
20
  ## Installation
14
21
 
data/lib/ext/hash.rb ADDED
@@ -0,0 +1,3 @@
1
+ class Hash
2
+ alias_method :blank?, :empty?
3
+ end
data/lib/ext/nil.rb ADDED
@@ -0,0 +1,5 @@
1
+ class NilClass
2
+ def blank?
3
+ true
4
+ end
5
+ end
@@ -0,0 +1,68 @@
1
+ module Rack
2
+ module Utils
3
+ DEFAULT_SEP = /[&;] */n
4
+
5
+ def self.key_space_limit=(value)
6
+ @@key_space_limit = value
7
+ end
8
+
9
+ def self.key_space_limit
10
+ @@key_space_limit
11
+ end
12
+
13
+ self.key_space_limit = 65536
14
+
15
+ def self.escape(s)
16
+ s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n) {
17
+ '%'+$1.unpack('H2'*bytesize($1)).join('%').upcase
18
+ }.tr(' ', '+')
19
+ end
20
+
21
+ # Unescapes a URI escaped string. (Stolen from Camping).
22
+ def self.unescape(s)
23
+ s.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n){
24
+ [$1.delete('%')].pack('H*')
25
+ }
26
+ end
27
+
28
+ def self.parse_query(qs, d = nil)
29
+ params = {}
30
+
31
+ max_key_space = key_space_limit
32
+ bytes = 0
33
+
34
+ (qs || '').split(d ? /[#{d}] */n : DEFAULT_SEP).each do |p|
35
+ k, v = p.split('=', 2).map { |x| unescape(x) }
36
+
37
+ if k
38
+ bytes += k.size
39
+ if bytes > max_key_space
40
+ raise RangeError, "exceeded available parameter key space"
41
+ end
42
+ end
43
+
44
+ if cur = params[k]
45
+ if cur.class == Array
46
+ params[k] << v
47
+ else
48
+ params[k] = [cur, v]
49
+ end
50
+ else
51
+ params[k] = v
52
+ end
53
+ end
54
+
55
+ return params
56
+ end
57
+
58
+ if ''.respond_to?(:bytesize)
59
+ def self.bytesize(string)
60
+ string.bytesize
61
+ end
62
+ else
63
+ def self.bytesize(string)
64
+ string.size
65
+ end
66
+ end
67
+ end
68
+ end
data/lib/ext/string.rb ADDED
@@ -0,0 +1,3 @@
1
+ class String
2
+ alias_method :blank?, :empty?
3
+ end
data/lib/ext/symbol.rb ADDED
@@ -0,0 +1,5 @@
1
+ class Symbol
2
+ def blank?
3
+ false
4
+ end
5
+ end
data/lib/uri_signer.rb CHANGED
@@ -1,26 +1,26 @@
1
- root = File.expand_path(File.dirname(__FILE__))
2
-
3
- # Utilities
4
- require 'rack/utils'
5
- require 'active_support/core_ext/object/blank.rb'
6
-
7
- # Version
8
- require File.join(root, 'uri_signer', 'version')
9
-
10
- # Errors
11
- require File.join(root, 'uri_signer', 'errors')
12
-
13
- # Core Extension Helpers
14
- require File.join(root, 'uri_signer', 'helpers')
15
- require File.join(root, 'uri_signer', 'helpers', 'string')
16
- require File.join(root, 'uri_signer', 'helpers', 'hash')
17
-
18
- # Parsers and Signers
19
- require File.join(root, 'uri_signer', 'query_hash_parser')
20
- require File.join(root, 'uri_signer', 'request_parser')
21
- require File.join(root, 'uri_signer', 'request_signature')
22
- require File.join(root, 'uri_signer', 'uri_signature')
23
- require File.join(root, 'uri_signer', 'signer')
1
+ require 'uri'
2
+ require 'cgi'
3
+ require 'base64'
4
+ require 'hmac'
5
+ require 'hmac-sha2'
6
+ require 'addressable/uri'
24
7
 
25
8
  module UriSigner
9
+
26
10
  end
11
+
12
+ require "ext/hash"
13
+ require "ext/string"
14
+ require "ext/nil"
15
+ require "ext/symbol"
16
+ require "ext/rack/utils"
17
+ require "uri_signer/version"
18
+ require "uri_signer/errors"
19
+ require "uri_signer/helpers"
20
+ require "uri_signer/helpers/string"
21
+ require "uri_signer/helpers/hash"
22
+ require "uri_signer/query_hash_parser"
23
+ require "uri_signer/request_parser"
24
+ require "uri_signer/request_signature"
25
+ require "uri_signer/uri_signature"
26
+ require "uri_signer/signer"
@@ -1,11 +1,3 @@
1
- require 'uri'
2
- require 'cgi'
3
- require 'rack/utils'
4
- require 'base64'
5
- require 'hmac'
6
- require 'hmac-sha2'
7
- require 'addressable/uri'
8
-
9
1
  module UriSigner
10
2
  module Helpers
11
3
  module String
@@ -1,3 +1,3 @@
1
1
  module UriSigner
2
- VERSION = "0.0.3"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -7,6 +7,6 @@ describe UriSigner::Helpers::Hash do
7
7
  end
8
8
 
9
9
  it "converts all keys to strings" do
10
- @hash.stringify_keys.keys.should == ["first", "string"]
10
+ expect(@hash.stringify_keys.keys).to include("first", "string")
11
11
  end
12
12
  end
data/uri_signer.gemspec CHANGED
@@ -18,15 +18,11 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- #spec.add_dependency 'activesupport', ">=2.3.0"
22
- spec.add_dependency 'activesupport', '2.3.5'
23
- spec.add_dependency 'rack'
24
- spec.add_dependency 'addressable'
25
- spec.add_dependency 'ruby-hmac'
21
+ spec.add_dependency 'addressable', '~> 2.2'
22
+ spec.add_dependency 'ruby-hmac', '~> 0.4'
26
23
 
27
- spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency "bundler"
28
25
  spec.add_development_dependency "rake"
29
26
  spec.add_development_dependency 'rspec'
30
27
  spec.add_development_dependency 'yard'
31
- spec.add_development_dependency 'redcarpet'
32
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uri_signer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,90 +9,42 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-18 00:00:00.000000000 Z
12
+ date: 2013-11-13 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: activesupport
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - '='
20
- - !ruby/object:Gem::Version
21
- version: 2.3.5
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - '='
28
- - !ruby/object:Gem::Version
29
- version: 2.3.5
30
- - !ruby/object:Gem::Dependency
31
- name: rack
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
14
  - !ruby/object:Gem::Dependency
47
15
  name: addressable
48
16
  requirement: !ruby/object:Gem::Requirement
49
17
  none: false
50
18
  requirements:
51
- - - ! '>='
19
+ - - ~>
52
20
  - !ruby/object:Gem::Version
53
- version: '0'
21
+ version: '2.2'
54
22
  type: :runtime
55
23
  prerelease: false
56
24
  version_requirements: !ruby/object:Gem::Requirement
57
25
  none: false
58
26
  requirements:
59
- - - ! '>='
27
+ - - ~>
60
28
  - !ruby/object:Gem::Version
61
- version: '0'
29
+ version: '2.2'
62
30
  - !ruby/object:Gem::Dependency
63
31
  name: ruby-hmac
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :runtime
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: bundler
80
32
  requirement: !ruby/object:Gem::Requirement
81
33
  none: false
82
34
  requirements:
83
35
  - - ~>
84
36
  - !ruby/object:Gem::Version
85
- version: '1.3'
86
- type: :development
37
+ version: '0.4'
38
+ type: :runtime
87
39
  prerelease: false
88
40
  version_requirements: !ruby/object:Gem::Requirement
89
41
  none: false
90
42
  requirements:
91
43
  - - ~>
92
44
  - !ruby/object:Gem::Version
93
- version: '1.3'
45
+ version: '0.4'
94
46
  - !ruby/object:Gem::Dependency
95
- name: rake
47
+ name: bundler
96
48
  requirement: !ruby/object:Gem::Requirement
97
49
  none: false
98
50
  requirements:
@@ -108,7 +60,7 @@ dependencies:
108
60
  - !ruby/object:Gem::Version
109
61
  version: '0'
110
62
  - !ruby/object:Gem::Dependency
111
- name: rspec
63
+ name: rake
112
64
  requirement: !ruby/object:Gem::Requirement
113
65
  none: false
114
66
  requirements:
@@ -124,7 +76,7 @@ dependencies:
124
76
  - !ruby/object:Gem::Version
125
77
  version: '0'
126
78
  - !ruby/object:Gem::Dependency
127
- name: yard
79
+ name: rspec
128
80
  requirement: !ruby/object:Gem::Requirement
129
81
  none: false
130
82
  requirements:
@@ -140,7 +92,7 @@ dependencies:
140
92
  - !ruby/object:Gem::Version
141
93
  version: '0'
142
94
  - !ruby/object:Gem::Dependency
143
- name: redcarpet
95
+ name: yard
144
96
  requirement: !ruby/object:Gem::Requirement
145
97
  none: false
146
98
  requirements:
@@ -163,11 +115,20 @@ extensions: []
163
115
  extra_rdoc_files: []
164
116
  files:
165
117
  - .gitignore
118
+ - .rspec
119
+ - .ruby-gemset
120
+ - .ruby-version
166
121
  - .rvmrc.sample
122
+ - .travis.yml
167
123
  - Gemfile
168
124
  - LICENSE.txt
169
125
  - README.md
170
126
  - Rakefile
127
+ - lib/ext/hash.rb
128
+ - lib/ext/nil.rb
129
+ - lib/ext/rack/utils.rb
130
+ - lib/ext/string.rb
131
+ - lib/ext/symbol.rb
171
132
  - lib/uri_signer.rb
172
133
  - lib/uri_signer/errors.rb
173
134
  - lib/uri_signer/errors/missing_base_uri_error.rb
@@ -185,7 +146,6 @@ files:
185
146
  - lib/uri_signer/signer.rb
186
147
  - lib/uri_signer/uri_signature.rb
187
148
  - lib/uri_signer/version.rb
188
- - reload_yard
189
149
  - spec/query_hash_parser_spec.rb
190
150
  - spec/request_parser_spec.rb
191
151
  - spec/request_signature_spec.rb
@@ -209,7 +169,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
209
169
  version: '0'
210
170
  segments:
211
171
  - 0
212
- hash: -4232878605183272534
172
+ hash: 2563538937758368906
213
173
  required_rubygems_version: !ruby/object:Gem::Requirement
214
174
  none: false
215
175
  requirements:
@@ -218,10 +178,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
218
178
  version: '0'
219
179
  segments:
220
180
  - 0
221
- hash: -4232878605183272534
181
+ hash: 2563538937758368906
222
182
  requirements: []
223
183
  rubyforge_project:
224
- rubygems_version: 1.8.24
184
+ rubygems_version: 1.8.25
225
185
  signing_key:
226
186
  specification_version: 3
227
187
  summary: Given a client secret, we can digitally sign the URL and make requests to
data/reload_yard DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env sh
2
-
3
- yardoc "lib/uri_signer/**/*.rb" && yard server