Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions lib/mailgun-ruby.rb
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require 'mailgun'
require 'railgun' if defined?(Rails) && defined?(ActionMailer)
require_relative 'mailgun'
require_relative 'railgun' if defined?(Rails) && defined?(ActionMailer)
51 changes: 33 additions & 18 deletions lib/mailgun.rb
Original file line number Diff line number Diff line change
@@ -1,25 +1,40 @@
# require ruby dependencies
require 'json'
require 'openssl'
require 'tempfile'
require 'faraday'
require 'time'
require 'uri'
require 'yaml'
require 'json'

require 'mailgun/version'
require 'mailgun/client'
require 'mailgun/response'
require 'mailgun/chains'
require 'mailgun/address'
require 'mailgun/lists/opt_in_handler'
require 'mailgun/messages/batch_message'
require 'mailgun/messages/message_builder'
require 'mailgun/events/events'
# require external dependencies
require 'faraday'
require 'faraday/multipart'
require 'mini_mime'
require 'zeitwerk'

require 'mailgun/exceptions/exceptions'
require 'mailgun/domains/domains'
require 'mailgun/webhooks/webhooks'
require 'mailgun/templates/templates'
require 'mailgun/subaccounts/subaccounts'
require 'mailgun/tags/tags'
require 'mailgun/metrics/metrics'
require 'mailgun/logs/logs'
require 'mailgun/helpers/api_version_checker'

# load zeitwerk
Zeitwerk::Loader.for_gem.tap do |loader| # rubocop:disable Style/SymbolProc
loader.ignore("#{__dir__}/mailgun-ruby.rb")
loader.ignore("#{__dir__}/railgun.rb")
loader.ignore("#{__dir__}/railgun")

loader.collapse("#{__dir__}/mailgun/domains")
loader.collapse("#{__dir__}/mailgun/events")
loader.collapse("#{__dir__}/mailgun/exceptions")
loader.collapse("#{__dir__}/mailgun/helpers")
loader.collapse("#{__dir__}/mailgun/lists")
loader.collapse("#{__dir__}/mailgun/logs")
loader.collapse("#{__dir__}/mailgun/messages")
loader.collapse("#{__dir__}/mailgun/metrics")
loader.collapse("#{__dir__}/mailgun/subaccounts")
loader.collapse("#{__dir__}/mailgun/tags")
loader.collapse("#{__dir__}/mailgun/templates")
loader.collapse("#{__dir__}/mailgun/webhooks")
loader.setup
end

# Module for interacting with the sweet Mailgun API.
#
Expand Down
2 changes: 0 additions & 2 deletions lib/mailgun/address.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'mailgun/exceptions/exceptions'

module Mailgun

# Mailgun::Address is a simple interface to the Email Validation API.
Expand Down
24 changes: 12 additions & 12 deletions lib/mailgun/client.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
require 'mailgun/chains'
require 'mailgun/suppressions'
require 'mailgun/exceptions/exceptions'

module Mailgun
# A Mailgun::Client object is used to communicate with the Mailgun API. It is a
# wrapper around Faraday so you don't have to worry about the HTTP aspect
Expand Down Expand Up @@ -32,14 +28,7 @@ def initialize(api_key = Mailgun.api_key,
}
request_options.merge!(request: {timeout: timeout}) if timeout

@http_client = Faraday.new(request_options) do |conn|
conn.request :multipart
conn.request :authorization, :basic, 'api', api_key
conn.request :url_encoded
conn.response :raise_error, include_request: true
conn.adapter Faraday.default_adapter
conn.options.params_encoder = Faraday::FlatParamsEncoder
end
@http_client = build_http_client(api_key, request_options)

@test_mode = test_mode
@api_version = api_version
Expand Down Expand Up @@ -262,5 +251,16 @@ def perform_data_validation(working_domain, data)
working_domain
) if message.fetch('from', []).empty? && message.fetch(:from, []).empty?
end

def build_http_client(api_key, request_options)
Faraday.new(request_options) do |conn|
conn.request :multipart
conn.request :authorization, :basic, 'api', api_key
conn.request :url_encoded
conn.response :raise_error, include_request: true
conn.adapter Faraday.default_adapter
conn.options.params_encoder = Faraday::FlatParamsEncoder
end
end
end
end
3 changes: 0 additions & 3 deletions lib/mailgun/domains/domains.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
require 'mailgun/exceptions/exceptions'
require 'mailgun/helpers/api_version_checker'

module Mailgun

# A Mailgun::Domains object is a simple CRUD interface to Mailgun Domains.
Expand Down
2 changes: 0 additions & 2 deletions lib/mailgun/events/events.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'mailgun/exceptions/exceptions'

module Mailgun

# A Mailgun::Events object makes it really simple to consume
Expand Down
3 changes: 0 additions & 3 deletions lib/mailgun/lists/opt_in_handler.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
require 'uri'
require 'openssl'

module Mailgun

# Public: Provides methods for creating and handling opt-in URLs,
Expand Down
2 changes: 0 additions & 2 deletions lib/mailgun/logs/logs.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'mailgun/exceptions/exceptions'

module Mailgun
# A Mailgun::Logs object is a simple interface to Mailgun Logs.
# Uses Mailgun
Expand Down
2 changes: 0 additions & 2 deletions lib/mailgun/messages/batch_message.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'mailgun/messages/message_builder'

module Mailgun

# A Mailgun::BatchMessage object is used to create a valid payload
Expand Down
4 changes: 0 additions & 4 deletions lib/mailgun/messages/message_builder.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
require 'mini_mime'
require 'time'
require 'faraday/multipart'

module Mailgun

# A Mailgun::MessageBuilder object is used to create a valid payload
Expand Down
2 changes: 0 additions & 2 deletions lib/mailgun/metrics/metrics.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'mailgun/exceptions/exceptions'

module Mailgun
# A Mailgun::Metrics object is a simple interface to Mailgun Metrics.
# Uses Mailgun
Expand Down
2 changes: 0 additions & 2 deletions lib/mailgun/subaccounts/subaccounts.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'mailgun/exceptions/exceptions'

module Mailgun

# A Mailgun::Subaccounts object is a simple CRUD interface to Mailgun Subaccounts.
Expand Down
4 changes: 0 additions & 4 deletions lib/mailgun/suppressions.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
require 'uri'

require 'mailgun/exceptions/exceptions'

module Mailgun

# The Mailgun::Suppressions object makes it easy to manage "suppressions"
Expand Down
2 changes: 0 additions & 2 deletions lib/mailgun/tags/tags.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'mailgun/exceptions/exceptions'

module Mailgun

# A Mailgun::Tags object is a simple CRUD interface to Mailgun Tags.
Expand Down
2 changes: 0 additions & 2 deletions lib/mailgun/templates/templates.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'mailgun/exceptions/exceptions'

module Mailgun

# A Mailgun::Templates object is a simple CRUD interface to Mailgun Templates.
Expand Down
17 changes: 12 additions & 5 deletions lib/railgun.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
require 'railgun/railtie'
require 'railgun/attachment'
require 'railgun/errors'
require 'railgun/mailer'
require 'railgun/message'
# require ruby dependencies
require 'json'

# require external dependencies
require 'action_mailer'
require 'mail'
require 'mailgun'
require 'rails'

module Railgun
require_relative 'railgun/attachment'
require_relative 'railgun/errors'
require_relative 'railgun/mailer'
require_relative 'railgun/railtie'
end
6 changes: 0 additions & 6 deletions lib/railgun/mailer.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
require 'action_mailer'
require 'json'
require 'mailgun'
require 'rails'
require 'railgun/errors'

module Railgun

# Railgun::Mailer is an ActionMailer provider for sending mail through
Expand Down
18 changes: 0 additions & 18 deletions lib/railgun/message.rb

This file was deleted.

11 changes: 9 additions & 2 deletions lib/railgun/railtie.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
require 'railgun/mailer'

module Railgun
class Railtie < ::Rails::Railtie
ActiveSupport.on_load(:action_mailer) do
Mail::Message.class_eval do
# Attributes to hold Mailgun-specific information
attr_accessor :mailgun_variables,
:mailgun_options,
:mailgun_recipient_variables,
:mailgun_headers,
:mailgun_template_variables
end

add_delivery_method :mailgun, Railgun::Mailer
ActiveSupport.run_load_hooks(:mailgun_mailer, Railgun::Mailer)
end
Expand Down
1 change: 1 addition & 0 deletions mailgun.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,6 @@ Gem::Specification.new do |spec|
spec.add_dependency 'mini_mime'
spec.add_dependency 'faraday', "~> 2.1"
spec.add_dependency 'faraday-multipart', '~> 1.1.0'
spec.add_dependency 'zeitwerk'

end
5 changes: 0 additions & 5 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
require 'rubygems'
require 'bundler'
require 'bundler/setup'
Bundler.setup(:development)

require 'simplecov'
SimpleCov.start do
add_filter "/spec/"
Expand Down