dm_courier 0.1.1 → 0.1.2

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: 2b8943c2c5c0940d2bd7682f47f6c0a28e990a95
4
- data.tar.gz: 770b51e01c169f6d68d7144d53dff1e5f6eac861
3
+ metadata.gz: 6b8269252a4a2061684ca025fb7b4d50f26b2efa
4
+ data.tar.gz: c79802dd3c0616b5685e85a2e37db96e770a97d5
5
5
  SHA512:
6
- metadata.gz: 5cae0696f9e1d6a629eb7723bd4f8dd992b0b3edf0ff803065fcd8f032aa5de9f56d7b7eacde1b180ebc8b3c7e169ace7ddf9faadeb2e54fa5c27ab53f8494df
7
- data.tar.gz: 78365d346b2c0d932d3df221edc56bde790f848afe0606e32e0dd3234628ce22c74c488009a7e682bbe6b6d08a1fe283d9c77829ddea859fc0d9e1a421d91a94
6
+ metadata.gz: 29d8d0e630c7710ccae8417f752f7adc81c01d4b591cfcd1cb3647203a6e2154b5c7eaa37a626242c289563535cd6685cf72786517808ae37ac4a543a443e02a
7
+ data.tar.gz: 01ce7c66c0a1197448f9d7f3147cc28e2d3e6bda09de06802c4f9a7e46b3324d73f79e9dc7bd53ce2c55ff8f7f7c38f18ac1fb2a3e6f85ccd5acfaa7f2905ca3
data/.travis.yml CHANGED
@@ -9,7 +9,7 @@ notifications:
9
9
  on_failure: always
10
10
  addons:
11
11
  code_climate:
12
- repo_token: e3eac13dabf5af3f7cd993b869ae5bce1cee735332537815badda3fd4ee2fc28
12
+ repo_token: 40f3b0db4e0b69a31588221de4aaca19db947e47c838f9eac9b6f4615cf92bab
13
13
  script:
14
14
  - bundle exec rubocop
15
15
  - bundle exec rake spec
data/README.md CHANGED
@@ -7,8 +7,9 @@
7
7
  [![Test Coverage](https://codeclimate.com/github/sumoners/dm_courier/badges/coverage.svg)](https://codeclimate.com/github/sumoners/dm_courier/coverage)
8
8
  [![Code Climate](https://codeclimate.com/github/sumoners/dm_courier/badges/gpa.svg)](https://codeclimate.com/github/sumoners/dm_courier)
9
9
 
10
- Stick with just one Gem and be free to choose your email delivery service. Rails
11
- Courier allows you to change easily the deliery method anytime you want.
10
+ Stick with just one Gem and be free to choose your email delivery service. DM
11
+ Courier (Delivery Method Courier) allows you to easily change the deliery method
12
+ as you wish.
12
13
 
13
14
  ## Rails Setup
14
15
 
@@ -65,7 +66,7 @@ Option | Mailer Support | Description
65
66
  `track_opens` | true | whether or not to turn on open tracking for the message<br />**Services:** mandrill, sparkpost
66
67
  `track_url_without_query_string` | true | whether or not to strip the query string from URLs when aggregating tracked URL data<br />**Services:** mandrill
67
68
  `log_content` | true | set to false to remove content logging for sensitive emails<br />**Services:** mandrill
68
- `bcc_address` | true | an optional address to receive an exact copy of each recipient's email<br />**Services:** mandrill
69
+ `bcc_address` | true | an optional address to receive an exact copy of each recipient's email<br />**Services:** mandrill, sendgrid
69
70
  `return_path_domain` | true | a custom domain to use for the messages's return-path<br />**Services:** mandrill, sparkpost
70
71
  `signing_domain` | true | a custom domain to use for SPF/DKIM signing (for "via" or "on behalf of" in email clients)<br />**Services:** mandrill
71
72
  `subaccount` | true | the unique id of a subaccount - must already exist or will fail with an error<br />**Services:** mandrill
@@ -87,6 +88,8 @@ service API. Because of that some options have different names:
87
88
 
88
89
  > TODO: Sparkpost service implementation does not support BCC emails yet.
89
90
 
91
+ ### SendGrid
92
+
90
93
  ## Development & Feedback
91
94
 
92
95
  Questions or problems? Please use the issue tracker. If you would like to
@@ -1,5 +1,6 @@
1
1
  require "dm_courier/services/mandrill"
2
2
  require "dm_courier/services/sparkpost"
3
+ require "dm_courier/services/sendgrid"
3
4
 
4
5
  module DMCourier
5
6
  module ServiceLocator
@@ -0,0 +1,79 @@
1
+ require "sendgrid-ruby"
2
+ require "base64"
3
+
4
+ require "dm_courier/message_helper"
5
+
6
+ module DMCourier
7
+ module Services
8
+ class Sendgrid
9
+ include DMCourier::Services::MessageHelper
10
+
11
+ attr_reader :api_key, :mail, :options
12
+
13
+ def initialize(mail, options = {})
14
+ @mail = mail
15
+ @api_key = options.fetch(:api_key)
16
+ @options = options
17
+ end
18
+
19
+ def name
20
+ :sendgrid
21
+ end
22
+
23
+ def deliver!
24
+ sendgrid_api = ::SendGrid::Client.new(api_key)
25
+ sendgrid_api.send(sendgrid_message)
26
+ end
27
+
28
+ def sendgrid_message
29
+ message = { to: (mail[:to].formatted if mail[:to]),
30
+ cc: (mail[:cc].formatted if mail[:cc]),
31
+ bcc: return_string_value(:bcc_address),
32
+ from: from_email,
33
+ from_name: from_name,
34
+ subject: subject,
35
+ html: html_part,
36
+ text: text_part,
37
+ reply_to: reply_to }
38
+
39
+ message[:attachments] = regular_attachments
40
+
41
+ ::SendGrid::Mail.new(message) do |mail|
42
+ inline_attachments.each do |attachment|
43
+ mail.contents << attachment
44
+ end
45
+ end
46
+ end
47
+
48
+ private
49
+
50
+ def reply_to
51
+ value = mail["Reply-To"] || options[:reply_to]
52
+ value.to_s if value
53
+ end
54
+
55
+ def regular_attachments
56
+ mail.attachments.map do |attachment|
57
+ next if attachment.inline?
58
+
59
+ { file: Faraday::UploadIO.new(StringIO.new(attachment.body.decoded),
60
+ attachment.mime_type,
61
+ attachment.filename),
62
+ name: attachment.filename }
63
+ end.compact
64
+ end
65
+
66
+ def inline_attachments
67
+ mail.attachments.map do |attachment|
68
+ next unless attachment.inline?
69
+
70
+ { file: Faraday::UploadIO.new(StringIO.new(attachment.body.decoded),
71
+ attachment.mime_type,
72
+ attachment.filename),
73
+ cid: attachment.cid,
74
+ name: attachment.filename }
75
+ end.compact
76
+ end
77
+ end
78
+ end
79
+ end
@@ -91,7 +91,7 @@ module DMCourier
91
91
  attachments(inline: false).map do |attachment|
92
92
  { name: attachment[:name],
93
93
  type: attachment[:type],
94
- content: attachment[:content] }
94
+ data: attachment[:content] }
95
95
  end
96
96
  end
97
97
 
@@ -99,7 +99,7 @@ module DMCourier
99
99
  attachments(inline: true).map do |attachment|
100
100
  { name: attachment[:name],
101
101
  type: attachment[:type],
102
- content: attachment[:content] }
102
+ data: attachment[:content] }
103
103
  end
104
104
  end
105
105
  end
@@ -1,3 +1,3 @@
1
1
  module DMCourier
2
- VERSION = "0.1.1".freeze
2
+ VERSION = "0.1.2".freeze
3
3
  end
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_dependency "mandrill-api", "~> 1.0.53"
28
28
  spec.add_dependency "sparkpost", "~> 0.1.2"
29
+ spec.add_dependency "sendgrid-ruby", "~> 1.1.6"
29
30
  spec.add_dependency "http", "0.9.8"
30
31
 
31
32
  spec.add_development_dependency "codeclimate-test-reporter", "~> 0.5"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dm_courier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jaison Erick
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-27 00:00:00.000000000 Z
11
+ date: 2016-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mandrill-api
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.1.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: sendgrid-ruby
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.1.6
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.1.6
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: http
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -190,6 +204,7 @@ files:
190
204
  - lib/dm_courier/railtie.rb
191
205
  - lib/dm_courier/service_locator.rb
192
206
  - lib/dm_courier/services/mandrill.rb
207
+ - lib/dm_courier/services/sendgrid.rb
193
208
  - lib/dm_courier/services/sparkpost.rb
194
209
  - lib/dm_courier/version.rb
195
210
  - lib/monkey_patch/sparkpost/request.rb