sendgrid-parse 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -56,11 +56,16 @@ module Sendgrid
56
56
  def _encode(value, from, to)
57
57
  if RUBY_VERSION >= '1.9'
58
58
  if value.respond_to? :force_encoding
59
- value = value.force_encoding(from)
59
+ from_enc = Encoding.find(from) rescue nil
60
+
61
+ value = value.force_encoding(from) if from_enc
60
62
  value = value.encode(to, :invalid => :replace, :undef => :replace, :replace => '')
61
63
  end
62
64
  else
63
- value = Iconv.conv("#{to}//IGNORE", from, value)
65
+ # Iconv doesn't have a way to find the charset, so we have to just try it and rescue
66
+ from_enc = Iconv.conv("UTF-8", from, "test string") rescue nil
67
+
68
+ value = Iconv.conv("#{to}//IGNORE", from, value) if from_enc
64
69
  end
65
70
 
66
71
  value
@@ -1,5 +1,5 @@
1
1
  module Sendgrid
2
2
  module Parse
3
- VERSION = "0.1.5"
3
+ VERSION = "0.1.6"
4
4
  end
5
5
  end
@@ -37,6 +37,16 @@ describe Sendgrid::Parse::EncodableHash do
37
37
  new_params[:text].should eql(test_string_1)
38
38
  end
39
39
 
40
+ it "should skip unknown 'charsets' encoding types" do
41
+ params = {
42
+ :charsets => '{"text":"x-user-defined"}',
43
+ :text => test_string_1
44
+ }
45
+
46
+ new_params = Sendgrid::Parse::EncodableHash.new(params).encode("UTF-8")
47
+ new_params[:text].should eql(test_string_1)
48
+ end
49
+
40
50
  it "should strip unconvertible characters" do
41
51
  params = {
42
52
  :charsets => '{"text":"UTF-8"}',
@@ -107,6 +117,15 @@ describe Sendgrid::Parse::EncodableHash do
107
117
  end
108
118
 
109
119
  if RUBY_VERSION >= '1.9'
120
+ it "should blow up on unknown target encoding type" do
121
+ params = {
122
+ :charsets => '{"text":"UTF-8"}',
123
+ :text => test_string_1
124
+ }
125
+
126
+ expect { new_params = Sendgrid::Parse::EncodableHash.new(params).encode("UTF-88") }.to raise_error(Encoding::ConverterNotFoundError)
127
+ end
128
+
110
129
  it "should correctly change encoding types of charsets" do
111
130
  params = {
112
131
  :charsets => '{"text":"WINDOWS-1252"}',
@@ -135,5 +154,14 @@ describe Sendgrid::Parse::EncodableHash do
135
154
  new_params[:text].encoding.should eql(Encoding::UTF_8)
136
155
  new_params[:subject].encoding.should eql(Encoding::UTF_8)
137
156
  end
157
+ else
158
+ it "should blow up on unknown target encoding type" do
159
+ params = {
160
+ :charsets => '{"text":"UTF-8"}',
161
+ :text => test_string_1
162
+ }
163
+
164
+ expect { new_params = Sendgrid::Parse::EncodableHash.new(params).encode("UTF-88") }.to raise_error(Iconv::InvalidEncoding)
165
+ end
138
166
  end
139
167
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sendgrid-parse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-08 00:00:00.000000000Z
12
+ date: 2012-06-12 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &70183411666560 !ruby/object:Gem::Requirement
16
+ requirement: &70101262154740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.7.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70183411666560
24
+ version_requirements: *70101262154740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70183411666060 !ruby/object:Gem::Requirement
27
+ requirement: &70101262154220 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.10.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70183411666060
35
+ version_requirements: *70101262154220
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: active_support
38
- requirement: &70183411665600 !ruby/object:Gem::Requirement
38
+ requirement: &70101262153760 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: 3.0.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70183411665600
46
+ version_requirements: *70101262153760
47
47
  description: Library to dynamically set or change the encoding type for fields, ie
48
48
  params from SendGrid Parse API.
49
49
  email: