sendgrid_toolkit 1.0.7 → 1.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.
data/README.md CHANGED
@@ -10,6 +10,7 @@ SendgridToolkit provides a class for interacting with each of the following Send
10
10
 
11
11
  - Bounces
12
12
  - InvalidEmails
13
+ - Mail
13
14
  - SpamReports
14
15
  - Statistics
15
16
  - Unsubscribes
@@ -108,6 +109,21 @@ If you believe a once-invalid email address is now valid and would like Sendgrid
108
109
 
109
110
  invalid_emails.delete :email => "email@address.of.invalid.to.delete"
110
111
 
112
+ Mail Module
113
+ -----------
114
+
115
+ The Mail module lets you send email via the web API.
116
+
117
+ - - -
118
+
119
+ Call `:send_email` (chosen to avoid conflicts with Object:send) with the standard parameters:
120
+
121
+ SendgridToolkit::Mail.new(api_user, api_key).send_email :to => "user@domain.com", :from => "recipient@domain.com", :subject => "Some Subject", :text => "Some text"
122
+
123
+ The complete set of "x-smtpapi" options are also supported. You can use them like:
124
+
125
+ SendgridToolkit::Mail.new(api_user, api_key).send_email :to => "user@domain.com", :from => "recipient@domain.com", :subject => "Some Subject", :text => "Some text", "x-smtpapi" => {:category => "Retention"}
126
+
111
127
  SpamReports Module
112
128
  ------------------
113
129
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.7
1
+ 1.1.0
@@ -8,6 +8,7 @@ require 'sendgrid_toolkit/unsubscribes'
8
8
  require 'sendgrid_toolkit/spam_reports'
9
9
  require 'sendgrid_toolkit/bounces'
10
10
  require 'sendgrid_toolkit/invalid_emails'
11
+ require 'sendgrid_toolkit/mail'
11
12
 
12
13
  module SendgridToolkit
13
14
  BASE_URI = "sendgrid.com/api"
@@ -0,0 +1,9 @@
1
+ module SendgridToolkit
2
+ class Mail < AbstractSendgridClient
3
+ def send_mail(options = {})
4
+ response = api_post('mail', 'send', options)
5
+ raise(SendEmailError, "SendMail API refused to send email: #{response["errors"].inspect}") if response["message"] == "error"
6
+ response
7
+ end
8
+ end
9
+ end
@@ -4,6 +4,7 @@ module SendgridToolkit
4
4
  class NoAPIUserSpecified < StandardError; end
5
5
  class UnsubscribeEmailAlreadyExists < StandardError; end
6
6
  class UnsubscribeEmailDoesNotExist < StandardError; end
7
+ class SendEmailError < StandardError; end
7
8
  class EmailDoesNotExist < StandardError; end
8
9
  class SendgridServerError < StandardError; end
9
10
  class APIError < StandardError; end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "sendgrid_toolkit"
8
- s.version = "1.0.7"
8
+ s.version = "1.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Robby Grossman"]
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
29
29
  "lib/sendgrid_toolkit/bounces.rb",
30
30
  "lib/sendgrid_toolkit/common.rb",
31
31
  "lib/sendgrid_toolkit/invalid_emails.rb",
32
+ "lib/sendgrid_toolkit/mail.rb",
32
33
  "lib/sendgrid_toolkit/sendgrid_error.rb",
33
34
  "lib/sendgrid_toolkit/spam_reports.rb",
34
35
  "lib/sendgrid_toolkit/statistics.rb",
@@ -39,6 +40,7 @@ Gem::Specification.new do |s|
39
40
  "spec/lib/sendgrid_toolkit/bounces_spec.rb",
40
41
  "spec/lib/sendgrid_toolkit/common_spec.rb",
41
42
  "spec/lib/sendgrid_toolkit/invalid_emails_spec.rb",
43
+ "spec/lib/sendgrid_toolkit/mail_spec.rb",
42
44
  "spec/lib/sendgrid_toolkit/spam_reports_spec.rb",
43
45
  "spec/lib/sendgrid_toolkit/statistics_spec.rb",
44
46
  "spec/lib/sendgrid_toolkit/unsubscribes_spec.rb",
@@ -0,0 +1,17 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/../../helper")
2
+
3
+ describe SendgridToolkit::Mail do
4
+ before do
5
+ FakeWeb.clean_registry
6
+ @obj = SendgridToolkit::Mail.new("fakeuser", "fakepass")
7
+ end
8
+
9
+ describe "#send" do
10
+ it "raises error when sendgrid returns an error" do
11
+ FakeWeb.register_uri(:post, %r|https://sendgrid\.com/api/mail\.send\.json\?|, :body => '{"message": "error", "errors": ["Missing destination email"]}')
12
+ lambda {
13
+ response = @obj.send_mail :from => "testing@fiverr.com", :subject => "Subject", :text => "Text", "x-smtpapi" => {:category => "Testing", :to => ["elad@fiverr.com"]}
14
+ }.should raise_error SendgridToolkit::SendEmailError
15
+ end
16
+ end
17
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sendgrid_toolkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-11-01 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
16
- requirement: &70243631139020 !ruby/object:Gem::Requirement
16
+ requirement: &70223621474660 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.7.6
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70243631139020
24
+ version_requirements: *70223621474660
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &70243631138360 !ruby/object:Gem::Requirement
27
+ requirement: &70223621472980 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70243631138360
35
+ version_requirements: *70223621472980
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: fakeweb
38
- requirement: &70243631137700 !ruby/object:Gem::Requirement
38
+ requirement: &70223621461680 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.3.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70243631137700
46
+ version_requirements: *70223621461680
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &70243631137040 !ruby/object:Gem::Requirement
49
+ requirement: &70223621460080 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.6.4
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70243631137040
57
+ version_requirements: *70223621460080
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec
60
- requirement: &70243631136380 !ruby/object:Gem::Requirement
60
+ requirement: &70223621457860 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: 2.7.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70243631136380
68
+ version_requirements: *70223621457860
69
69
  description: A Ruby wrapper and utility library for communicating with the Sendgrid
70
70
  API.
71
71
  email: robby@freerobby.com
@@ -87,6 +87,7 @@ files:
87
87
  - lib/sendgrid_toolkit/bounces.rb
88
88
  - lib/sendgrid_toolkit/common.rb
89
89
  - lib/sendgrid_toolkit/invalid_emails.rb
90
+ - lib/sendgrid_toolkit/mail.rb
90
91
  - lib/sendgrid_toolkit/sendgrid_error.rb
91
92
  - lib/sendgrid_toolkit/spam_reports.rb
92
93
  - lib/sendgrid_toolkit/statistics.rb
@@ -97,6 +98,7 @@ files:
97
98
  - spec/lib/sendgrid_toolkit/bounces_spec.rb
98
99
  - spec/lib/sendgrid_toolkit/common_spec.rb
99
100
  - spec/lib/sendgrid_toolkit/invalid_emails_spec.rb
101
+ - spec/lib/sendgrid_toolkit/mail_spec.rb
100
102
  - spec/lib/sendgrid_toolkit/spam_reports_spec.rb
101
103
  - spec/lib/sendgrid_toolkit/statistics_spec.rb
102
104
  - spec/lib/sendgrid_toolkit/unsubscribes_spec.rb
@@ -117,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
117
119
  version: '0'
118
120
  segments:
119
121
  - 0
120
- hash: -4321633947475345142
122
+ hash: -3253025820181550713
121
123
  required_rubygems_version: !ruby/object:Gem::Requirement
122
124
  none: false
123
125
  requirements: