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 +4 -4
- data/lib/sendgrid/web/client.rb +4 -2
- data/lib/sendgrid/web/parameters.rb +50 -0
- data/lib/sendgrid/web/response.rb +9 -2
- data/lib/sendgrid/web/version.rb +1 -1
- data/lib/sendgrid/web.rb +1 -0
- data/spec/sendgrid/web/parameters_spec.rb +151 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c594c17d9e748b0e23557ccdc6e2bcd564b11a00
|
4
|
+
data.tar.gz: 75bbb2d64fb5fddc2e0d68a8303255a6ef62b9af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c442413581e86a0ec0c4f7612538cf9d17f99176eb19e11d513c26a881813c5a9f25a26b0001a92398912de5136b8c49caf63b38a90949d39872be5909b4000
|
7
|
+
data.tar.gz: 38e6116e220130607d162b129621ca28090680d9fe7a80bfb7b195984df1d1d0c3f5b1dafce9ec23db20b12b6a50e82ac15960a2a730985019b24cee488f1198
|
data/lib/sendgrid/web/client.rb
CHANGED
@@ -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
|
-
|
60
|
-
|
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?
|
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
|
data/lib/sendgrid/web/version.rb
CHANGED
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
|
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-
|
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
|