mailgun-ruby 1.3.10 → 1.4.1
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/.github/workflows/ci.yml +2 -3
- data/CHANGELOG.md +11 -2
- data/README.md +1 -1
- data/docs/Domains.md +71 -18
- data/docs/MessageBuilder.md +1 -1
- data/lib/mailgun/address.rb +0 -2
- data/lib/mailgun/client.rb +36 -21
- data/lib/mailgun/domains/domains.rb +187 -176
- data/lib/mailgun/events/events.rb +0 -2
- data/lib/mailgun/exceptions/exceptions.rb +2 -0
- data/lib/mailgun/helpers/api_version_checker.rb +41 -0
- data/lib/mailgun/lists/opt_in_handler.rb +0 -3
- data/lib/mailgun/logs/logs.rb +0 -2
- data/lib/mailgun/messages/batch_message.rb +0 -2
- data/lib/mailgun/messages/message_builder.rb +0 -4
- data/lib/mailgun/metrics/metrics.rb +0 -2
- data/lib/mailgun/subaccounts/subaccounts.rb +0 -2
- data/lib/mailgun/suppressions.rb +2 -6
- data/lib/mailgun/tags/analytics_tags.rb +32 -0
- data/lib/mailgun/tags/tags.rb +11 -2
- data/lib/mailgun/templates/templates.rb +0 -2
- data/lib/mailgun/version.rb +1 -1
- data/lib/mailgun-ruby.rb +2 -2
- data/lib/mailgun.rb +34 -18
- data/lib/railgun/mailer.rb +0 -6
- data/lib/railgun/railtie.rb +9 -2
- data/lib/railgun.rb +12 -5
- data/mailgun.gemspec +7 -7
- data/spec/integration/domains_spec.rb +218 -192
- data/spec/spec_helper.rb +1 -5
- data/vcr_cassettes/domains.yml +152 -0
- metadata +32 -20
- data/lib/railgun/message.rb +0 -18
- data/spec/integration/tags.rb +0 -139
- data/vcr_cassettes/tags.yml +0 -417
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Mailgun
|
|
2
|
+
|
|
3
|
+
# A Mailgun::AnalyticsTags object is a simple CRUD interface to Mailgun Tags.
|
|
4
|
+
# Uses Mailgun
|
|
5
|
+
class AnalyticsTags
|
|
6
|
+
include ApiVersionChecker
|
|
7
|
+
|
|
8
|
+
# Public: creates a new Mailgun::AnalyticsTags instance.
|
|
9
|
+
# Defaults to Mailgun::Client
|
|
10
|
+
def initialize(client = Mailgun::Client.new(Mailgun.api_key, Mailgun.api_host || 'api.mailgun.net', 'v1'))
|
|
11
|
+
@client = client
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def update(tag, description)
|
|
15
|
+
@client.put('analytics/tags', { tag: tag, description: description }, body_params: true ).to_h['message'] == 'Tag updated'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def list(options = {})
|
|
19
|
+
@client.post('analytics/tags', options).to_h['items']
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def remove(tag)
|
|
23
|
+
@client.delete('analytics/tags', { tag: tag }, body_params: true).to_h['message'] == 'Tag deleted'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def limits
|
|
27
|
+
@client.get('analytics/tags/limits').to_h
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
enforces_api_version 'v1', :update, :list, :remove, :limits
|
|
31
|
+
end
|
|
32
|
+
end
|
data/lib/mailgun/tags/tags.rb
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
require 'mailgun/exceptions/exceptions'
|
|
2
|
-
|
|
3
1
|
module Mailgun
|
|
4
2
|
|
|
5
3
|
# A Mailgun::Tags object is a simple CRUD interface to Mailgun Tags.
|
|
@@ -12,6 +10,9 @@ module Mailgun
|
|
|
12
10
|
@client = client
|
|
13
11
|
end
|
|
14
12
|
|
|
13
|
+
### Deprecated Tags ###
|
|
14
|
+
# TODO: remove in v 1.5
|
|
15
|
+
|
|
15
16
|
# Public: Get Tags
|
|
16
17
|
#
|
|
17
18
|
# domain - [String] Domain name where tag is stored
|
|
@@ -20,6 +21,7 @@ module Mailgun
|
|
|
20
21
|
#
|
|
21
22
|
# Returns [Array] A list of tags (hash)
|
|
22
23
|
def get_tags(domain, options = {})
|
|
24
|
+
warn('This API is deprecated in favor of our new analytics Tags API')
|
|
23
25
|
fail(ParameterError, 'No domain given to store template on', caller) unless domain
|
|
24
26
|
@client.get("#{domain}/tags", options).to_h['items']
|
|
25
27
|
end
|
|
@@ -31,6 +33,7 @@ module Mailgun
|
|
|
31
33
|
#
|
|
32
34
|
# Returns [Hash] Information on the requested tag.
|
|
33
35
|
def get_tag(domain, tag)
|
|
36
|
+
warn('This API is deprecated in favor of our new analytics Tags API')
|
|
34
37
|
fail(ParameterError, 'No domain given to find on Mailgun', caller) unless domain
|
|
35
38
|
fail(ParameterError, 'No tag name given to find on provided domain', caller) unless tag
|
|
36
39
|
@client.get("#{domain}/tags/#{tag}").to_h!
|
|
@@ -45,6 +48,7 @@ module Mailgun
|
|
|
45
48
|
#
|
|
46
49
|
# Returns [Boolean] if successful or not
|
|
47
50
|
def update(domain, tag, options = {})
|
|
51
|
+
warn('This API is deprecated in favor of our new analytics Tags API')
|
|
48
52
|
fail(ParameterError, 'No domain given to find on Mailgun', caller) unless domain
|
|
49
53
|
fail(ParameterError, 'No tag name given to find on provided domain', caller) unless tag
|
|
50
54
|
@client.put("#{domain}/tags/#{tag}", options).to_h['message'] == 'Tag updated'
|
|
@@ -63,6 +67,7 @@ module Mailgun
|
|
|
63
67
|
#
|
|
64
68
|
# Returns [Hash] of tag stats info
|
|
65
69
|
def get_tag_stats(domain, tag, options = {})
|
|
70
|
+
warn('This API is deprecated in favor of our new analytics Tags API')
|
|
66
71
|
fail(ParameterError, 'No domain given to find on Mailgun', caller) unless domain
|
|
67
72
|
fail(ParameterError, 'No tag name given to find on provided domain', caller) unless tag
|
|
68
73
|
@client.get("#{domain}/tags/#{tag}/stats", options).to_h
|
|
@@ -76,6 +81,7 @@ module Mailgun
|
|
|
76
81
|
#
|
|
77
82
|
# Returns [Boolean] if successful or not
|
|
78
83
|
def remove(domain, tag)
|
|
84
|
+
warn('This API is deprecated in favor of our new analytics Tags API')
|
|
79
85
|
fail(ParameterError, 'No domain given to remove on Mailgun', caller) unless domain
|
|
80
86
|
fail(ParameterError, 'No template name given to find on provided domain', caller) unless tag
|
|
81
87
|
@client.delete("#{domain}/tags/#{tag}").to_h['message'] == 'Tag deleted'
|
|
@@ -88,6 +94,7 @@ module Mailgun
|
|
|
88
94
|
#
|
|
89
95
|
# Returns [Hash] of countries of origin for a given domain
|
|
90
96
|
def get_countries_aggregated_stats(domain, tag)
|
|
97
|
+
warn('This API is deprecated in favor of our new analytics Tags API')
|
|
91
98
|
fail(ParameterError, 'No domain given to find on Mailgun', caller) unless domain
|
|
92
99
|
fail(ParameterError, 'No tag name given to find on provided domain', caller) unless tag
|
|
93
100
|
@client.get("#{domain}/tags/#{tag}/stats/aggregates/countries").to_h
|
|
@@ -100,6 +107,7 @@ module Mailgun
|
|
|
100
107
|
#
|
|
101
108
|
# Returns [Hash] of email providers for a given domain
|
|
102
109
|
def get_providers_aggregated_stats(domain, tag)
|
|
110
|
+
warn('This API is deprecated in favor of our new analytics Tags API')
|
|
103
111
|
fail(ParameterError, 'No domain given to find on Mailgun', caller) unless domain
|
|
104
112
|
fail(ParameterError, 'No tag name given to find on provided domain', caller) unless tag
|
|
105
113
|
@client.get("#{domain}/tags/#{tag}/stats/aggregates/providers").to_h
|
|
@@ -112,6 +120,7 @@ module Mailgun
|
|
|
112
120
|
#
|
|
113
121
|
# Returns [Hash] of devices for a given domain
|
|
114
122
|
def get_devices_aggregated_stats(domain, tag)
|
|
123
|
+
warn('This API is deprecated in favor of our new analytics Tags API')
|
|
115
124
|
fail(ParameterError, 'No domain given to find on Mailgun', caller) unless domain
|
|
116
125
|
fail(ParameterError, 'No tag name given to find on provided domain', caller) unless tag
|
|
117
126
|
@client.get("#{domain}/tags/#{tag}/stats/aggregates/devices").to_h
|
data/lib/mailgun/version.rb
CHANGED
data/lib/mailgun-ruby.rb
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
require_relative 'mailgun'
|
|
2
|
+
require_relative 'railgun' if defined?(Rails) && defined?(ActionMailer)
|
data/lib/mailgun.rb
CHANGED
|
@@ -1,25 +1,41 @@
|
|
|
1
|
+
# require ruby dependencies
|
|
2
|
+
require 'json'
|
|
3
|
+
require 'openssl'
|
|
1
4
|
require 'tempfile'
|
|
2
|
-
require '
|
|
5
|
+
require 'time'
|
|
6
|
+
require 'uri'
|
|
3
7
|
require 'yaml'
|
|
4
|
-
require 'json'
|
|
5
8
|
|
|
6
|
-
require
|
|
7
|
-
require '
|
|
8
|
-
require '
|
|
9
|
-
require '
|
|
10
|
-
require '
|
|
11
|
-
|
|
12
|
-
require 'mailgun/messages/batch_message'
|
|
13
|
-
require 'mailgun/messages/message_builder'
|
|
14
|
-
require 'mailgun/events/events'
|
|
9
|
+
# require external dependencies
|
|
10
|
+
require 'faraday'
|
|
11
|
+
require 'faraday/multipart'
|
|
12
|
+
require 'mini_mime'
|
|
13
|
+
require 'zeitwerk'
|
|
14
|
+
|
|
15
15
|
require 'mailgun/exceptions/exceptions'
|
|
16
|
-
require 'mailgun/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
require 'mailgun/helpers/api_version_checker'
|
|
17
|
+
|
|
18
|
+
# load zeitwerk
|
|
19
|
+
Zeitwerk::Loader.for_gem.tap do |loader| # rubocop:disable Style/SymbolProc
|
|
20
|
+
loader.ignore("#{__dir__}/mailgun-ruby.rb")
|
|
21
|
+
loader.ignore("#{__dir__}/railgun.rb")
|
|
22
|
+
loader.ignore("#{__dir__}/railgun")
|
|
23
|
+
|
|
24
|
+
loader.collapse("#{__dir__}/mailgun/analytics_tags")
|
|
25
|
+
loader.collapse("#{__dir__}/mailgun/domains")
|
|
26
|
+
loader.collapse("#{__dir__}/mailgun/events")
|
|
27
|
+
loader.collapse("#{__dir__}/mailgun/exceptions")
|
|
28
|
+
loader.collapse("#{__dir__}/mailgun/helpers")
|
|
29
|
+
loader.collapse("#{__dir__}/mailgun/lists")
|
|
30
|
+
loader.collapse("#{__dir__}/mailgun/logs")
|
|
31
|
+
loader.collapse("#{__dir__}/mailgun/messages")
|
|
32
|
+
loader.collapse("#{__dir__}/mailgun/metrics")
|
|
33
|
+
loader.collapse("#{__dir__}/mailgun/subaccounts")
|
|
34
|
+
loader.collapse("#{__dir__}/mailgun/tags")
|
|
35
|
+
loader.collapse("#{__dir__}/mailgun/templates")
|
|
36
|
+
loader.collapse("#{__dir__}/mailgun/webhooks")
|
|
37
|
+
loader.setup
|
|
38
|
+
end
|
|
23
39
|
|
|
24
40
|
# Module for interacting with the sweet Mailgun API.
|
|
25
41
|
#
|
data/lib/railgun/mailer.rb
CHANGED
data/lib/railgun/railtie.rb
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
require 'railgun/mailer'
|
|
2
|
-
|
|
3
1
|
module Railgun
|
|
4
2
|
class Railtie < ::Rails::Railtie
|
|
5
3
|
ActiveSupport.on_load(:action_mailer) do
|
|
4
|
+
Mail::Message.class_eval do
|
|
5
|
+
# Attributes to hold Mailgun-specific information
|
|
6
|
+
attr_accessor :mailgun_variables,
|
|
7
|
+
:mailgun_options,
|
|
8
|
+
:mailgun_recipient_variables,
|
|
9
|
+
:mailgun_headers,
|
|
10
|
+
:mailgun_template_variables
|
|
11
|
+
end
|
|
12
|
+
|
|
6
13
|
add_delivery_method :mailgun, Railgun::Mailer
|
|
7
14
|
ActiveSupport.run_load_hooks(:mailgun_mailer, Railgun::Mailer)
|
|
8
15
|
end
|
data/lib/railgun.rb
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
require
|
|
2
|
-
require '
|
|
3
|
-
|
|
4
|
-
require
|
|
5
|
-
require '
|
|
1
|
+
# require ruby dependencies
|
|
2
|
+
require 'json'
|
|
3
|
+
|
|
4
|
+
# require external dependencies
|
|
5
|
+
require 'action_mailer'
|
|
6
|
+
require 'mail'
|
|
7
|
+
require 'mailgun'
|
|
8
|
+
require 'rails'
|
|
6
9
|
|
|
7
10
|
module Railgun
|
|
11
|
+
require_relative 'railgun/attachment'
|
|
12
|
+
require_relative 'railgun/errors'
|
|
13
|
+
require_relative 'railgun/mailer'
|
|
14
|
+
require_relative 'railgun/railtie'
|
|
8
15
|
end
|
data/mailgun.gemspec
CHANGED
|
@@ -25,19 +25,19 @@ Gem::Specification.new do |spec|
|
|
|
25
25
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
26
26
|
spec.require_paths = ["lib"]
|
|
27
27
|
|
|
28
|
-
spec.required_ruby_version = '>=
|
|
28
|
+
spec.required_ruby_version = '>= 3.0.0'
|
|
29
29
|
|
|
30
30
|
spec.add_development_dependency 'bundler', '>= 1.16.2'
|
|
31
31
|
spec.add_development_dependency 'rspec', '~> 3.13.0'
|
|
32
|
-
spec.add_development_dependency 'rspec-its', '~>
|
|
33
|
-
spec.add_development_dependency 'rake', '~>
|
|
32
|
+
spec.add_development_dependency 'rspec-its', '~> 2.0.0'
|
|
33
|
+
spec.add_development_dependency 'rake', '~> 13.3.1'
|
|
34
34
|
spec.add_development_dependency 'webmock', '~> 3.7'
|
|
35
|
-
spec.add_development_dependency 'pry', '~> 0.
|
|
36
|
-
spec.add_development_dependency 'vcr', '~>
|
|
35
|
+
spec.add_development_dependency 'pry', '~> 0.16.0'
|
|
36
|
+
spec.add_development_dependency 'vcr', '~> 6.4.0'
|
|
37
37
|
spec.add_development_dependency 'simplecov', '~> 0.16.1'
|
|
38
38
|
spec.add_development_dependency 'rails'
|
|
39
39
|
spec.add_dependency 'mini_mime'
|
|
40
40
|
spec.add_dependency 'faraday', "~> 2.1"
|
|
41
|
-
spec.add_dependency 'faraday-multipart', '
|
|
42
|
-
|
|
41
|
+
spec.add_dependency 'faraday-multipart', '< 2'
|
|
42
|
+
spec.add_dependency 'zeitwerk'
|
|
43
43
|
end
|