sendgrid-web 0.0.7 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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