griddler 1.3.1 → 1.4.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/README.md +6 -1
- data/app/controllers/griddler/emails_controller.rb +3 -3
- data/lib/griddler/configuration.rb +5 -0
- data/lib/griddler/email.rb +17 -0
- data/lib/griddler/email_parser.rb +1 -1
- data/lib/griddler/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f86495d4d8db4365d3cb48c7cb3270aab9b23bb
|
4
|
+
data.tar.gz: c4765e837d4102415a3b980503146b6644806126
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ab5c192b77282a442a0f1bd0f6a1b386687c694ad68f7eeeeb36d3a7b940e318c43375a64765c9ac4574d1ffe60ce3ab2937dcee262cac297cd85eaee7f9c2e
|
7
|
+
data.tar.gz: 98caf933840397cff2dcd5900cb4961e975e10c92f75f91d3c7b9d179bccf8a314e6f17ff8e5cdc6f26b43b6143a02dc2c7d028c6dc20f81b02d17b4fcb3e447
|
data/README.md
CHANGED
@@ -14,7 +14,7 @@ Tutorials
|
|
14
14
|
---------
|
15
15
|
|
16
16
|
* SendGrid wrote a
|
17
|
-
[great tutorial](
|
17
|
+
[great tutorial](https://sendgrid.com/blog/receiving-email-in-your-rails-app-with-griddler/)
|
18
18
|
on integrating Griddler with your application.
|
19
19
|
* We have our own blog post on the subject over at
|
20
20
|
[Giant Robots](https://robots.thoughtbot.com/griddler-is-better-than-ever).
|
@@ -53,6 +53,7 @@ Defaults are shown below with sample overrides following. In
|
|
53
53
|
```ruby
|
54
54
|
Griddler.configure do |config|
|
55
55
|
config.processor_class = EmailProcessor # CommentViaEmail
|
56
|
+
config.email_class = Griddler::Email # MyEmail
|
56
57
|
config.processor_method = :process # :create_comment (A method on CommentViaEmail)
|
57
58
|
config.reply_delimiter = '-- REPLY ABOVE THIS LINE --'
|
58
59
|
config.email_service = :sendgrid # :cloudmailin, :postmark, :mandrill, :mailgun
|
@@ -62,6 +63,7 @@ end
|
|
62
63
|
| Option | Meaning
|
63
64
|
| ------ | -------
|
64
65
|
| `processor_class` | The class Griddler will use to handle your incoming emails.
|
66
|
+
| `email_class` | The class Griddler will use to represent an incoming e-mail. It must support an initializer that receives a hash as the only argument. We recommend inheriting it from Griddler::Email or checking this class to see all the methods it responds to.
|
65
67
|
| `processor_method` | The method Griddler will call on the processor class when handling your incoming emails.
|
66
68
|
| `reply_delimiter` | The string searched for that will split your body.
|
67
69
|
| `email_service` | Tells Griddler which email service you are using. The supported email service options are `:sendgrid` (the default), `:cloudmailin` (expects multipart format), `:postmark`, `:mandrill` and `:mailgun`. You will also need to have an appropriate [adapter] gem included in your Gemfile.
|
@@ -107,6 +109,7 @@ Griddler::Email attributes
|
|
107
109
|
| `#attachments` | An array of `File` objects containing any attachments.
|
108
110
|
| `#headers` | A hash of headers parsed by `Mail::Header`, unless they are already formatted as a hash when received from the adapter in which case the original hash is returned.
|
109
111
|
| `#raw_headers` | The raw headers included in the message.
|
112
|
+
| `#to_h` | A hash of the above attributes.
|
110
113
|
|
111
114
|
### Email Addresses
|
112
115
|
|
@@ -169,12 +172,14 @@ adapter gem in addition to `griddler`.
|
|
169
172
|
| mailgun | [griddler-mailgun]
|
170
173
|
| postmark | [griddler-postmark]
|
171
174
|
| sparkpost | [griddler-sparkpost]
|
175
|
+
| ses (amazon)| [griddler-ses]
|
172
176
|
|
173
177
|
[griddler-sendgrid]: https://github.com/thoughtbot/griddler-sendgrid
|
174
178
|
[griddler-mandrill]: https://github.com/wingrunr21/griddler-mandrill
|
175
179
|
[griddler-mailgun]: https://github.com/bradpauly/griddler-mailgun
|
176
180
|
[griddler-postmark]: https://github.com/r38y/griddler-postmark
|
177
181
|
[griddler-sparkpost]: https://github.com/PrestoDoctor/griddler-sparkpost
|
182
|
+
[griddler-ses]: https://github.com/85x14/griddler-ses
|
178
183
|
|
179
184
|
Writing an Adapter
|
180
185
|
------------------
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class Griddler::EmailsController < ActionController::Base
|
2
2
|
def create
|
3
3
|
normalized_params.each do |p|
|
4
|
-
process_email
|
4
|
+
process_email email_class.new(p)
|
5
5
|
end
|
6
6
|
|
7
7
|
head :ok
|
@@ -9,9 +9,9 @@ class Griddler::EmailsController < ActionController::Base
|
|
9
9
|
|
10
10
|
private
|
11
11
|
|
12
|
-
delegate :processor_class, :processor_method, :email_service, to: :griddler_configuration
|
12
|
+
delegate :processor_class, :email_class, :processor_method, :email_service, to: :griddler_configuration
|
13
13
|
|
14
|
-
private :processor_class, :processor_method, :email_service
|
14
|
+
private :processor_class, :email_class, :processor_method, :email_service
|
15
15
|
|
16
16
|
def normalized_params
|
17
17
|
Array.wrap(email_service.normalize_params(params))
|
@@ -17,6 +17,7 @@ module Griddler
|
|
17
17
|
|
18
18
|
class Configuration
|
19
19
|
attr_accessor :processor_method, :reply_delimiter
|
20
|
+
attr_writer :email_class
|
20
21
|
|
21
22
|
def processor_class
|
22
23
|
@processor_class ||=
|
@@ -36,6 +37,10 @@ module Griddler
|
|
36
37
|
@processor_class = klass.to_s
|
37
38
|
end
|
38
39
|
|
40
|
+
def email_class
|
41
|
+
@email_class ||= Griddler::Email
|
42
|
+
end
|
43
|
+
|
39
44
|
def processor_method
|
40
45
|
@processor_method ||= :process
|
41
46
|
end
|
data/lib/griddler/email.rb
CHANGED
@@ -28,6 +28,23 @@ module Griddler
|
|
28
28
|
@attachments = params[:attachments]
|
29
29
|
end
|
30
30
|
|
31
|
+
def to_h
|
32
|
+
@to_h ||= {
|
33
|
+
to: to,
|
34
|
+
from: from,
|
35
|
+
cc: cc,
|
36
|
+
bcc: bcc,
|
37
|
+
subject: subject,
|
38
|
+
body: body,
|
39
|
+
raw_body: raw_body,
|
40
|
+
raw_text: raw_text,
|
41
|
+
raw_html: raw_html,
|
42
|
+
headers: headers,
|
43
|
+
raw_headers: raw_headers,
|
44
|
+
attachments: attachments,
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
31
48
|
private
|
32
49
|
|
33
50
|
attr_reader :params
|
@@ -81,7 +81,7 @@ module Griddler::EmailParser
|
|
81
81
|
/^[[:space:]]*[-]+[[:space:]]*Original Message[[:space:]]*[-]+[[:space:]]*$/i,
|
82
82
|
/^[[:space:]]*--[[:space:]]*$/,
|
83
83
|
/^[[:space:]]*\>?[[:space:]]*On.*\r?\n?.*wrote:\r?\n?$/,
|
84
|
-
/^On.*<\n?.*>.*\n?wrote
|
84
|
+
/^On.*<\r?\n?.*>.*\r?\n?wrote:\r?\n?$/,
|
85
85
|
/On.*wrote:/,
|
86
86
|
/\*?From:.*$/i,
|
87
87
|
/^[[:space:]]*\d{4}[-\/]\d{1,2}[-\/]\d{1,2}[[:space:]].*[[:space:]]<.*>?$/i
|
data/lib/griddler/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: griddler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Caleb Thompson
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2017-02-27 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rails
|
@@ -141,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
141
141
|
version: '0'
|
142
142
|
requirements: []
|
143
143
|
rubyforge_project:
|
144
|
-
rubygems_version: 2.5.
|
144
|
+
rubygems_version: 2.5.2
|
145
145
|
signing_key:
|
146
146
|
specification_version: 4
|
147
147
|
summary: SendGrid Parse API client Rails Engine
|