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