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.
@@ -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
@@ -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
@@ -1,5 +1,3 @@
1
- require 'mailgun/exceptions/exceptions'
2
-
3
1
  module Mailgun
4
2
 
5
3
  # A Mailgun::Templates object is a simple CRUD interface to Mailgun Templates.
@@ -1,4 +1,4 @@
1
1
  # It's the version. Yeay!
2
2
  module Mailgun
3
- VERSION = '1.3.10'
3
+ VERSION = '1.4.1'
4
4
  end
data/lib/mailgun-ruby.rb CHANGED
@@ -1,2 +1,2 @@
1
- require 'mailgun'
2
- require 'railgun' if defined?(Rails) && defined?(ActionMailer)
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 'faraday'
5
+ require 'time'
6
+ require 'uri'
3
7
  require 'yaml'
4
- require 'json'
5
8
 
6
- require 'mailgun/version'
7
- require 'mailgun/client'
8
- require 'mailgun/response'
9
- require 'mailgun/chains'
10
- require 'mailgun/address'
11
- require 'mailgun/lists/opt_in_handler'
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/domains/domains'
17
- require 'mailgun/webhooks/webhooks'
18
- require 'mailgun/templates/templates'
19
- require 'mailgun/subaccounts/subaccounts'
20
- require 'mailgun/tags/tags'
21
- require 'mailgun/metrics/metrics'
22
- require 'mailgun/logs/logs'
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
  #
@@ -1,9 +1,3 @@
1
- require 'action_mailer'
2
- require 'json'
3
- require 'mailgun'
4
- require 'rails'
5
- require 'railgun/errors'
6
-
7
1
  module Railgun
8
2
 
9
3
  # Railgun::Mailer is an ActionMailer provider for sending mail through
@@ -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 'railgun/railtie'
2
- require 'railgun/attachment'
3
- require 'railgun/errors'
4
- require 'railgun/mailer'
5
- require 'railgun/message'
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 = '>= 2.6.10'
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', '~> 1.3.1'
33
- spec.add_development_dependency 'rake', '~> 12.3.2'
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.15.2'
36
- spec.add_development_dependency 'vcr', '~> 3.0.3'
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', '~> 1.1.0'
42
-
41
+ spec.add_dependency 'faraday-multipart', '< 2'
42
+ spec.add_dependency 'zeitwerk'
43
43
  end