sendgrid-parse 0.1.5 → 0.1.6

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.
@@ -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: