actionmailbox 6.0.0.beta3 → 6.0.0.rc1

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 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