uri_signer 0.0.3 → 1.0.0
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 +24 -18
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +7 -0
- data/README.md +9 -2
- data/lib/ext/hash.rb +3 -0
- data/lib/ext/nil.rb +5 -0
- data/lib/ext/rack/utils.rb +68 -0
- data/lib/ext/string.rb +3 -0
- data/lib/ext/symbol.rb +5 -0
- data/lib/uri_signer.rb +23 -23
- data/lib/uri_signer/helpers/string.rb +0 -8
- data/lib/uri_signer/version.rb +1 -1
- data/spec/unit/helpers/hash_spec.rb +1 -1
- data/uri_signer.gemspec +3 -7
- metadata +25 -65
- data/reload_yard +0 -3
data/.gitignore
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
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
data/README.md
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
# UriSigner
|
|
2
2
|
|
|
3
|
+
- [](https://rubygems.org/gems/uri_signer)
|
|
4
|
+
- [](https://codeclimate.com/github/kissmetrics/uri_signer)
|
|
5
|
+
- [](https://travis-ci.org/kissmetrics/uri_signer)
|
|
6
|
+
- [](https://gemnasium.com/kissmetrics/uri_signer)
|
|
7
|
+
- [](https://coveralls.io/r/kissmetrics/uri_signer)
|
|
8
|
+
- [](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
data/lib/ext/nil.rb
ADDED
|
@@ -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
data/lib/ext/symbol.rb
ADDED
data/lib/uri_signer.rb
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
require '
|
|
5
|
-
require '
|
|
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"
|
data/lib/uri_signer/version.rb
CHANGED
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
|
-
|
|
22
|
-
spec.add_dependency '
|
|
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"
|
|
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
|
|
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-
|
|
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: '
|
|
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: '
|
|
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: '
|
|
86
|
-
type: :
|
|
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: '
|
|
45
|
+
version: '0.4'
|
|
94
46
|
- !ruby/object:Gem::Dependency
|
|
95
|
-
name:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
181
|
+
hash: 2563538937758368906
|
|
222
182
|
requirements: []
|
|
223
183
|
rubyforge_project:
|
|
224
|
-
rubygems_version: 1.8.
|
|
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