multipass 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 2
4
- :patch: 1
4
+ :patch: 2
5
5
  :build:
data/lib/multipass.rb CHANGED
@@ -44,10 +44,8 @@ class MultiPass
44
44
  # options:
45
45
  # :url_safe => true
46
46
  def initialize(site_key, api_key, options = {})
47
- @site_key = site_key
48
- @api_key = api_key
49
47
  @url_safe = !options.key?(:url_safe) || options[:url_safe]
50
- @crypto_key = EzCrypto::Key.with_password(@site_key, @api_key)
48
+ @crypto_key = EzCrypto::Key.with_password(site_key, api_key)
51
49
  end
52
50
 
53
51
  def url_safe?
@@ -81,7 +79,7 @@ class MultiPass
81
79
  end
82
80
 
83
81
  options.keys.each do |key|
84
- options[key.to_sym] = options.delete(key)
82
+ options[key.to_sym] = unencode_javascript_unicode_escape(options.delete(key))
85
83
  end
86
84
 
87
85
  if options[:expires].nil? || Time.now.utc > Time.parse(options[:expires])
@@ -101,6 +99,20 @@ class MultiPass
101
99
  require 'base64'
102
100
  end
103
101
 
102
+ # converts unicode (\u003c) to the actual character
103
+ # http://rishida.net/tools/conversion/
104
+ def unencode_javascript_unicode_escape(str)
105
+ str.gsub!(/\\u([0-9a-fA-F]{4})/) do |s|
106
+ int = $1.to_i(16)
107
+ if int.zero? && s != "0000"
108
+ s
109
+ else
110
+ [int].pack("U")
111
+ end
112
+ end
113
+ str
114
+ end
115
+
104
116
  def self.encode_64(s, url_safe = true)
105
117
  b = Base64.encode64(s)
106
118
  b.gsub! /\n/, ''
data/multipass.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{multipass}
8
- s.version = "1.2.1"
8
+ s.version = "1.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["rick"]
12
- s.date = %q{2010-01-01}
12
+ s.date = %q{2010-01-05}
13
13
  s.email = %q{technoweenie@gmail.com}
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE",
@@ -20,6 +20,13 @@ module MultiPassTests
20
20
  assert_equal @input, MultiPass.decode('example', 'abc', encoded)
21
21
  end
22
22
 
23
+ def test_decodes_unicode
24
+ @input[:name] = "Bj\\u00f8rn"
25
+ encoded = @mp.encode(@input)
26
+ decoded = @mp.decode(encoded)
27
+ assert_equal "Bjørn", decoded[:name]
28
+ end
29
+
23
30
  def test_invalidates_bad_string
24
31
  assert_raises MultiPass::DecryptError do
25
32
  @mp.decode("abc")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multipass
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - rick
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-01 00:00:00 -08:00
12
+ date: 2010-01-05 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency