actionmailbox 6.0.0.beta3 → 6.0.0.rc1

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
  SHA256:
3
- metadata.gz: 50a28970e03982d439be26d63aa1464d15507f55dcf9e771d7a3ba17124286a9
4
- data.tar.gz: 4ebd425202cb53f006bea15af290cbf5936042277b160013d66c1b1bb9478b86
3
+ metadata.gz: e82b7da2f169d4d6bf13afa006cdf70a48d87b77e97a5803fec37b47f9539121
4
+ data.tar.gz: 751b6859cca9e253c4fca9dffcb4d427b13b07ed5a3099c9246f63b41ff9bf15
5
5
  SHA512:
6
- metadata.gz: 95bd1e5e03444fc458933f744d427b16be8fbf65d750db18d3a7b972618e3c9ddb4646a616252fe6186d3203fb1f3b64f161a77005e36085272b2bf8b995e3e9
7
- data.tar.gz: 3466d052111e887bd06d05046dddc37584ffd06d48171b4ffec59454ee14b3f6737dbbedd2eb2eebf7f9a3b2ce5909b24d0fca71b28e02c356534d980ef605c8
6
+ metadata.gz: c59f7ef02b4d29db030f65d4e79eeb2041bd05cb9b2a02bdc02d8e61a46919e37b196f2a38502d6b7c05c15fb8ec57a36a623884e2b61d1a16cfae3fab4889e1
7
+ data.tar.gz: 6eac7c28d3ea1911d6f021cffe23bdb44b913f4e37115eb24786ecc58ea42b584a9f2f0a4e087e5c4d927e14121c83323f6094916103655f2b33dab1aee0bfba
@@ -1,3 +1,8 @@
1
+ ## Rails 6.0.0.rc1 (April 24, 2019) ##
2
+
3
+ * No changes.
4
+
5
+
1
6
  ## Rails 6.0.0.beta3 (March 11, 2019) ##
2
7
 
3
8
  * No changes.
@@ -11,6 +16,7 @@
11
16
 
12
17
  *Pratik Naik*
13
18
 
19
+
14
20
  ## Rails 6.0.0.beta1 (January 18, 2019) ##
15
21
 
16
22
  * Added to Rails.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Action Mailbox
2
2
 
3
- Action Mailbox routes incoming emails to controller-like mailboxes for processing in Rails. It ships with ingresses for Amazon SES, Mailgun, Mandrill, Postmark, and SendGrid. You can also handle inbound mails directly via the built-in Exim, Postfix, and Qmail ingresses.
3
+ Action Mailbox routes incoming emails to controller-like mailboxes for processing in Rails. It ships with ingresses for Mailgun, Mandrill, Postmark, and SendGrid. You can also handle inbound mails directly via the built-in Exim, Postfix, and Qmail ingresses.
4
4
 
5
5
  The inbound emails are turned into `InboundEmail` records using Active Record and feature lifecycle tracking, storage of the original email on cloud storage via Active Storage, and responsible data handling with on-by-default incineration.
6
6
 
@@ -3,14 +3,10 @@
3
3
  module ActionMailbox
4
4
  # The base class for all Action Mailbox ingress controllers.
5
5
  class BaseController < ActionController::Base
6
- skip_forgery_protection
6
+ skip_forgery_protection if default_protect_from_forgery
7
7
 
8
8
  before_action :ensure_configured
9
9
 
10
- def self.prepare
11
- # Override in concrete controllers to run code on load.
12
- end
13
-
14
10
  private
15
11
  def ensure_configured
16
12
  unless ActionMailbox.ingress == ingress_name
@@ -2,7 +2,6 @@
2
2
 
3
3
  Rails.application.routes.draw do
4
4
  scope "/rails/action_mailbox", module: "action_mailbox/ingresses" do
5
- post "/amazon/inbound_emails" => "amazon/inbound_emails#create", as: :rails_amazon_inbound_emails
6
5
  post "/mandrill/inbound_emails" => "mandrill/inbound_emails#create", as: :rails_mandrill_inbound_emails
7
6
  post "/postmark/inbound_emails" => "postmark/inbound_emails#create", as: :rails_postmark_inbound_emails
8
7
  post "/relay/inbound_emails" => "relay/inbound_emails#create", as: :rails_relay_inbound_emails
@@ -26,16 +26,7 @@ module ActionMailbox
26
26
  ActionMailbox.incinerate = app.config.action_mailbox.incinerate.nil? ? true : app.config.action_mailbox.incinerate
27
27
  ActionMailbox.incinerate_after = app.config.action_mailbox.incinerate_after || 30.days
28
28
  ActionMailbox.queues = app.config.action_mailbox.queues || {}
29
- end
30
- end
31
-
32
- initializer "action_mailbox.ingress" do |app|
33
- config.to_prepare do
34
- if ActionMailbox.ingress = app.config.action_mailbox.ingress.presence
35
- if ingress_controller_class = "ActionMailbox::Ingresses::#{ActionMailbox.ingress.to_s.classify}::InboundEmailsController".safe_constantize
36
- ingress_controller_class.prepare
37
- end
38
- end
29
+ ActionMailbox.ingress = app.config.action_mailbox.ingress
39
30
  end
40
31
  end
41
32
  end
@@ -10,7 +10,7 @@ module ActionMailbox
10
10
  MAJOR = 6
11
11
  MINOR = 0
12
12
  TINY = 0
13
- PRE = "beta3"
13
+ PRE = "rc1"
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
@@ -29,16 +29,16 @@ module ActionMailbox
29
29
  create_inbound_email_from_fixture(*args).tap(&:route)
30
30
  end
31
31
 
32
- # Create an +InboundEmail+ from fixture using the same arguments as +create_inbound_email_from_mail+
33
- # and immediately route it to processing.
32
+ # Create an +InboundEmail+ using the same arguments as +create_inbound_email_from_mail+ and immediately route it to
33
+ # processing.
34
34
  def receive_inbound_email_from_mail(**kwargs)
35
35
  create_inbound_email_from_mail(**kwargs).tap(&:route)
36
36
  end
37
37
 
38
- # Create an +InboundEmail+ from fixture using the same arguments as +create_inbound_email_from_source+
39
- # and immediately route it to processing.
40
- def receive_inbound_email_from_source(**kwargs)
41
- create_inbound_email_from_source(**kwargs).tap(&:route)
38
+ # Create an +InboundEmail+ using the same arguments as +create_inbound_email_from_source+ and immediately route it
39
+ # to processing.
40
+ def receive_inbound_email_from_source(*args)
41
+ create_inbound_email_from_source(*args).tap(&:route)
42
42
  end
43
43
  end
44
44
  end
@@ -5,6 +5,6 @@ copy_file "#{__dir__}/mailbox/templates/application_mailbox.rb", "app/mailboxes/
5
5
 
6
6
  environment <<~end_of_config, env: "production"
7
7
  # Prepare the ingress controller used to receive mail
8
- # config.action_mailbox.ingress = :amazon
8
+ # config.action_mailbox.ingress = :postfix
9
9
 
10
10
  end_of_config
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionmailbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0.beta3
4
+ version: 6.0.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-03-13 00:00:00.000000000 Z
12
+ date: 2019-04-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -17,70 +17,70 @@ dependencies:
17
17
  requirements:
18
18
  - - '='
19
19
  - !ruby/object:Gem::Version
20
- version: 6.0.0.beta3
20
+ version: 6.0.0.rc1
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - '='
26
26
  - !ruby/object:Gem::Version
27
- version: 6.0.0.beta3
27
+ version: 6.0.0.rc1
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: activerecord
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - '='
33
33
  - !ruby/object:Gem::Version
34
- version: 6.0.0.beta3
34
+ version: 6.0.0.rc1
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - '='
40
40
  - !ruby/object:Gem::Version
41
- version: 6.0.0.beta3
41
+ version: 6.0.0.rc1
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: activestorage
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - '='
47
47
  - !ruby/object:Gem::Version
48
- version: 6.0.0.beta3
48
+ version: 6.0.0.rc1
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - '='
54
54
  - !ruby/object:Gem::Version
55
- version: 6.0.0.beta3
55
+ version: 6.0.0.rc1
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: activejob
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - '='
61
61
  - !ruby/object:Gem::Version
62
- version: 6.0.0.beta3
62
+ version: 6.0.0.rc1
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - '='
68
68
  - !ruby/object:Gem::Version
69
- version: 6.0.0.beta3
69
+ version: 6.0.0.rc1
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: actionpack
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - '='
75
75
  - !ruby/object:Gem::Version
76
- version: 6.0.0.beta3
76
+ version: 6.0.0.rc1
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - '='
82
82
  - !ruby/object:Gem::Version
83
- version: 6.0.0.beta3
83
+ version: 6.0.0.rc1
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: mail
86
86
  requirement: !ruby/object:Gem::Requirement
@@ -107,7 +107,6 @@ files:
107
107
  - MIT-LICENSE
108
108
  - README.md
109
109
  - app/controllers/action_mailbox/base_controller.rb
110
- - app/controllers/action_mailbox/ingresses/amazon/inbound_emails_controller.rb
111
110
  - app/controllers/action_mailbox/ingresses/mailgun/inbound_emails_controller.rb
112
111
  - app/controllers/action_mailbox/ingresses/mandrill/inbound_emails_controller.rb
113
112
  - app/controllers/action_mailbox/ingresses/postmark/inbound_emails_controller.rb
@@ -160,8 +159,8 @@ homepage: https://rubyonrails.org
160
159
  licenses:
161
160
  - MIT
162
161
  metadata:
163
- source_code_uri: https://github.com/rails/rails/tree/v6.0.0.beta3/actionmailbox
164
- changelog_uri: https://github.com/rails/rails/blob/v6.0.0.beta3/actionmailbox/CHANGELOG.md
162
+ source_code_uri: https://github.com/rails/rails/tree/v6.0.0.rc1/actionmailbox
163
+ changelog_uri: https://github.com/rails/rails/blob/v6.0.0.rc1/actionmailbox/CHANGELOG.md
165
164
  post_install_message:
166
165
  rdoc_options: []
167
166
  require_paths:
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActionMailbox
4
- # Ingests inbound emails from Amazon's Simple Email Service (SES).
5
- #
6
- # Requires the full RFC 822 message in the +content+ parameter. Authenticates requests by validating their signatures.
7
- #
8
- # Returns:
9
- #
10
- # - <tt>204 No Content</tt> if an inbound email is successfully recorded and enqueued for routing to the appropriate mailbox
11
- # - <tt>401 Unauthorized</tt> if the request's signature could not be validated
12
- # - <tt>404 Not Found</tt> if Action Mailbox is not configured to accept inbound emails from SES
13
- # - <tt>422 Unprocessable Entity</tt> if the request is missing the required +content+ parameter
14
- # - <tt>500 Server Error</tt> if one of the Active Record database, the Active Storage service, or
15
- # the Active Job backend is misconfigured or unavailable
16
- #
17
- # == Usage
18
- #
19
- # 1. Install the {aws-sdk-sns}[https://rubygems.org/gems/aws-sdk-sns] gem:
20
- #
21
- # # Gemfile
22
- # gem "aws-sdk-sns", ">= 1.9.0", require: false
23
- #
24
- # 2. Tell Action Mailbox to accept emails from SES:
25
- #
26
- # # config/environments/production.rb
27
- # config.action_mailbox.ingress = :amazon
28
- #
29
- # 3. {Configure SES}[https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-notifications.html]
30
- # to deliver emails to your application via POST requests to +/rails/action_mailbox/amazon/inbound_emails+.
31
- # If your application lived at <tt>https://example.com</tt>, you would specify the fully-qualified URL
32
- # <tt>https://example.com/rails/action_mailbox/amazon/inbound_emails</tt>.
33
- class Ingresses::Amazon::InboundEmailsController < BaseController
34
- before_action :authenticate
35
-
36
- cattr_accessor :verifier
37
-
38
- def self.prepare
39
- self.verifier ||= begin
40
- require "aws-sdk-sns"
41
- Aws::SNS::MessageVerifier.new
42
- end
43
- end
44
-
45
- def create
46
- ActionMailbox::InboundEmail.create_and_extract_message_id! params.require(:content)
47
- end
48
-
49
- private
50
- def authenticate
51
- head :unauthorized unless verifier.authentic?(request.body)
52
- end
53
- end
54
- end