sendgrid-web 0.0.7 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 72f7a0fbf53971295a55c04915c382e9499e8573
4
- data.tar.gz: c71046c3bf1adbd9536c3bacbb5bd4af8b80f332
3
+ metadata.gz: c594c17d9e748b0e23557ccdc6e2bcd564b11a00
4
+ data.tar.gz: 75bbb2d64fb5fddc2e0d68a8303255a6ef62b9af
5
5
  SHA512:
6
- metadata.gz: 00b0c2db81803f65e168fbdd9e94f595a3258ff0a1e43c48a771b8bcd6ccd9c9a1b3c0f8fc10d270fa2eeab64f497faab2bf43b901f1c5295bfe9749a6315c4c
7
- data.tar.gz: e28781fe17f6ba28e392524548aa7f905ceaca73f771ea5a131275dbe68a6764b2d0682e406854cda68322f08dc4143f316322c925de5351f29372dbc3d042d9
6
+ metadata.gz: 7c442413581e86a0ec0c4f7612538cf9d17f99176eb19e11d513c26a881813c5a9f25a26b0001a92398912de5136b8c49caf63b38a90949d39872be5909b4000
7
+ data.tar.gz: 38e6116e220130607d162b129621ca28090680d9fe7a80bfb7b195984df1d1d0c3f5b1dafce9ec23db20b12b6a50e82ac15960a2a730985019b24cee488f1198
@@ -50,14 +50,16 @@ class Sendgrid::Web::Client
50
50
  end
51
51
 
52
52
  def default_params(additions = {})
53
+ params = Sendgrid::Web::Parameters.new
53
54
  defaults = {
54
55
  query: {
55
56
  api_user: config.username,
56
57
  api_key: config.password
57
58
  }
58
59
  }
59
- defaults[:query].merge!(additions)
60
- defaults
60
+ params.replace(defaults)
61
+ params[:query].merge!(additions)
62
+ params
61
63
  end
62
64
 
63
65
  def craft_response(response)
@@ -0,0 +1,50 @@
1
+ class Sendgrid::Web::Parameters < Hash
2
+
3
+ def []=(key, value)
4
+ super(key, _cleanse_value(value))
5
+ end
6
+
7
+ def merge!(hash = {})
8
+ super(_cleanse(hash))
9
+ end
10
+
11
+ def merge(hash = {})
12
+ super(_cleanse(hash))
13
+ end
14
+
15
+ def replace(hash = {})
16
+ super(_cleanse(hash))
17
+ end
18
+
19
+ def store(key, value)
20
+ super(key, _cleanse_value(value))
21
+ end
22
+
23
+ def update(hash = {})
24
+ super(_cleanse(hash))
25
+ end
26
+
27
+ private
28
+
29
+ def _cleanse(hash)
30
+ cleansed = Sendgrid::Web::Parameters.new
31
+ hash.each do |k, v|
32
+ cleansed[k] = _cleanse_value(v) unless v.nil?
33
+ end
34
+ cleansed
35
+ end
36
+
37
+ def _cleanse_value(value)
38
+ if value.is_a?(Hash) || value.is_a?(Sendgrid::Web::Parameters)
39
+ value = _cleanse(value)
40
+ elsif value.is_a?(Array)
41
+ value = value.collect { |v| _cleanse_value(v) }
42
+ elsif value.respond_to?(:strftime)
43
+ value = value.strftime('%Y-%m-%d')
44
+ else
45
+ value = value.to_s
46
+ end
47
+ value
48
+ end
49
+
50
+ end
@@ -14,14 +14,21 @@ class Sendgrid::Web::Response
14
14
  def errors?
15
15
  !parsed_body.nil? &&
16
16
  parsed_body.is_a?(Hash) &&
17
- parsed_body.has_key?('errors')
17
+ (parsed_body.has_key?('errors') ||
18
+ parsed_body.has_key?('error'))
18
19
  end
19
20
 
20
21
  # Fetches an array of error messages from the response.
21
22
  #
22
23
  # @return [Array<String>] A list of any error messages.
23
24
  def error_messages
24
- errors? ? parsed_body['errors'] : []
25
+ if errors?
26
+ errors = Array(parsed_body['errors'])
27
+ errors << parsed_body['error']
28
+ errors.compact
29
+ else
30
+ []
31
+ end
25
32
  end
26
33
 
27
34
  end
@@ -1,5 +1,5 @@
1
1
  module Sendgrid
2
2
  module Web
3
- VERSION = "0.0.7"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
data/lib/sendgrid/web.rb CHANGED
@@ -5,6 +5,7 @@ module Sendgrid
5
5
  module Web
6
6
  autoload :VERSION, 'sendgrid/web/version'
7
7
  autoload :Configurator, 'sendgrid/web/configurator'
8
+ autoload :Parameters, 'sendgrid/web/parameters'
8
9
  autoload :Client, 'sendgrid/web/client'
9
10
  autoload :Blocks, 'sendgrid/web/blocks'
10
11
  autoload :Bounces, 'sendgrid/web/bounces'
@@ -0,0 +1,151 @@
1
+ require 'spec_helper'
2
+
3
+ describe Sendgrid::Web::Parameters do
4
+
5
+ describe 'is based on Hash' do
6
+ subject { described_class }
7
+ its(:superclass) { should eql(Hash) }
8
+ end
9
+
10
+ describe 'cleanses when setting values' do
11
+ context DateTime do
12
+ before { subject[:provider] = DateTime.new(2013, 01, 23) }
13
+ it 'converts to YYYY-MM-DD format' do
14
+ subject[:provider].should eql('2013-01-23')
15
+ end
16
+ end
17
+ context Time do
18
+ before { subject[:provider] = Time.new(2013, 01, 23) }
19
+ it 'converts to YYYY-MM-DD format' do
20
+ subject[:provider].should eql('2013-01-23')
21
+ end
22
+ end
23
+ context true do
24
+ before { subject[:provider] = true }
25
+ it 'converts to "true"' do
26
+ subject[:provider].should eql('true')
27
+ end
28
+ end
29
+ context false do
30
+ before { subject[:provider] = false }
31
+ it 'converts to "false"' do
32
+ subject[:provider].should eql('false')
33
+ end
34
+ end
35
+ end
36
+
37
+ describe 'cleanses when merging' do
38
+ context DateTime do
39
+ before { subject.merge!(provider: DateTime.new(2013, 01, 23)) }
40
+ it 'converts to YYYY-MM-DD format' do
41
+ subject[:provider].should eql('2013-01-23')
42
+ end
43
+ end
44
+ context Time do
45
+ before { subject.merge!(provider: Time.new(2013, 01, 23)) }
46
+ it 'converts to YYYY-MM-DD format' do
47
+ subject[:provider].should eql('2013-01-23')
48
+ end
49
+ end
50
+ context true do
51
+ before { subject.merge!(provider: true) }
52
+ it 'converts to "true"' do
53
+ subject[:provider].should eql('true')
54
+ end
55
+ end
56
+ context false do
57
+ before { subject.merge!(provider: false) }
58
+ it 'converts to "false"' do
59
+ subject[:provider].should eql('false')
60
+ end
61
+ end
62
+ it 'into new Parameters' do
63
+ params = subject.merge(provider: true)
64
+ params.should be_instance_of(Sendgrid::Web::Parameters)
65
+ params[:provider].should eql('true')
66
+ params.object_id.should_not eql(subject.object_id)
67
+ end
68
+ end
69
+
70
+ describe 'cleanses when replacing' do
71
+ context DateTime do
72
+ before { subject.replace(provider: DateTime.new(2013, 01, 23)) }
73
+ it 'converts to YYYY-MM-DD format' do
74
+ subject[:provider].should eql('2013-01-23')
75
+ end
76
+ end
77
+ context Time do
78
+ before { subject.replace(provider: Time.new(2013, 01, 23)) }
79
+ it 'converts to YYYY-MM-DD format' do
80
+ subject[:provider].should eql('2013-01-23')
81
+ end
82
+ end
83
+ context true do
84
+ before { subject.replace(provider: true) }
85
+ it 'converts to "true"' do
86
+ subject[:provider].should eql('true')
87
+ end
88
+ end
89
+ context false do
90
+ before { subject.replace(provider: false) }
91
+ it 'converts to "false"' do
92
+ subject[:provider].should eql('false')
93
+ end
94
+ end
95
+ end
96
+
97
+ describe 'cleanses when storing' do
98
+ context DateTime do
99
+ before { subject.store(:provider, DateTime.new(2013, 01, 23)) }
100
+ it 'converts to YYYY-MM-DD format' do
101
+ subject[:provider].should eql('2013-01-23')
102
+ end
103
+ end
104
+ context Time do
105
+ before { subject.store(:provider, Time.new(2013, 01, 23)) }
106
+ it 'converts to YYYY-MM-DD format' do
107
+ subject[:provider].should eql('2013-01-23')
108
+ end
109
+ end
110
+ context true do
111
+ before { subject.store(:provider, true) }
112
+ it 'converts to "true"' do
113
+ subject[:provider].should eql('true')
114
+ end
115
+ end
116
+ context false do
117
+ before { subject.store(:provider, false) }
118
+ it 'converts to "false"' do
119
+ subject[:provider].should eql('false')
120
+ end
121
+ end
122
+ end
123
+
124
+ describe 'cleanses when updating' do
125
+ context DateTime do
126
+ before { subject.update(provider: DateTime.new(2013, 01, 23)) }
127
+ it 'converts to YYYY-MM-DD format' do
128
+ subject[:provider].should eql('2013-01-23')
129
+ end
130
+ end
131
+ context Time do
132
+ before { subject.update(provider: Time.new(2013, 01, 23)) }
133
+ it 'converts to YYYY-MM-DD format' do
134
+ subject[:provider].should eql('2013-01-23')
135
+ end
136
+ end
137
+ context true do
138
+ before { subject.update(provider: true) }
139
+ it 'converts to "true"' do
140
+ subject[:provider].should eql('true')
141
+ end
142
+ end
143
+ context false do
144
+ before { subject.update(provider: false) }
145
+ it 'converts to "false"' do
146
+ subject[:provider].should eql('false')
147
+ end
148
+ end
149
+ end
150
+
151
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sendgrid-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darren Coxall
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-14 00:00:00.000000000 Z
11
+ date: 2013-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -105,6 +105,7 @@ files:
105
105
  - lib/sendgrid/web/filter_commands.rb
106
106
  - lib/sendgrid/web/invalid_emails.rb
107
107
  - lib/sendgrid/web/mail.rb
108
+ - lib/sendgrid/web/parameters.rb
108
109
  - lib/sendgrid/web/parse_webhook_settings.rb
109
110
  - lib/sendgrid/web/profile.rb
110
111
  - lib/sendgrid/web/response.rb
@@ -121,6 +122,7 @@ files:
121
122
  - spec/sendgrid/web/filter_commands_spec.rb
122
123
  - spec/sendgrid/web/invalid_emails_spec.rb
123
124
  - spec/sendgrid/web/mail_spec.rb
125
+ - spec/sendgrid/web/parameters_spec.rb
124
126
  - spec/sendgrid/web/parse_webhook_settings_spec.rb
125
127
  - spec/sendgrid/web/profile_spec.rb
126
128
  - spec/sendgrid/web/response_spec.rb
@@ -162,6 +164,7 @@ test_files:
162
164
  - spec/sendgrid/web/filter_commands_spec.rb
163
165
  - spec/sendgrid/web/invalid_emails_spec.rb
164
166
  - spec/sendgrid/web/mail_spec.rb
167
+ - spec/sendgrid/web/parameters_spec.rb
165
168
  - spec/sendgrid/web/parse_webhook_settings_spec.rb
166
169
  - spec/sendgrid/web/profile_spec.rb
167
170
  - spec/sendgrid/web/response_spec.rb