mailgun_api 0.0.5 → 0.2.0

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZTZmNzJlMzYzMjU4Y2E1MGFiNjQwYTA5MzY1ZGZmNmE0MzIzN2E1Yg==
4
+ ZGM5MWNiNWU2MTkxYTg1NWJmY2JlNmI5NGM2YzkxOTU4MmRhZTFiNA==
5
5
  data.tar.gz: !binary |-
6
- MzhjZWFjMTZjMTI2NmM4ZTQwMjE0YmYzOTc3MWQ3N2E0ZmQ1YjdjZg==
6
+ OTg0OGI4M2FlNzRlYzg4ZTFlNzk4Y2VlY2U0YmUxZjI0NDkxZTVjZQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OTA3YjUyNTlkN2FlZDNjYWYzMTRjNmE1NmMzNDE1ZTczMzZkNDFmZWNkYTQ0
10
- MmI0NDg1ZjMxMzAyNTMxYzQzNGIxZmRhMDVmMjUyODAzM2M3MWFiMWIwM2Q4
11
- Y2M0MmNlNDE5NzM3NmIxZGVkYTEwNDc0ZTQyZTM4NzE0NTBhYjg=
9
+ NmQyYzc1Mjg4ZDNlYjRhMGNlYzcwZGY5ZDYzMThhNzBjMjliNjFlMmYxZGE4
10
+ MzI3MjBjOWRlNGY4ZjBiYTQxZjU2NzNlODZhMTRhMzA1Mjg5OTM4ZGQ2NzBj
11
+ MGM2MTE4MGI4ZTJjYjYyNjJjNzhmNGMwNzYxY2EyMDY3MzhjZjY=
12
12
  data.tar.gz: !binary |-
13
- ZWIzMGM5YzlmMDRjZDk3OGUxNjQxYzNjZDU0ZjMzMDA4Y2M0MzAzYzFjN2U3
14
- MjVlNmU2YjkxZTJiMWEwYTFiMzc0Y2VjYWYxZGFiNjdmYzUxYjZkZTJhMjYy
15
- ZDkzY2ZhNmNkNWUyNTFlODA3OTVjY2FkMDI2ZGNkMWYzNzA5Nzc=
13
+ ZmMxNjA1MWRmN2E2M2I5N2MzMDllNzBhN2NkZjJjYTk2OTAzOGQ4YzVlNzFh
14
+ ZmQ2YjViMTNjN2NkZGQ2OTQ3YzU0OWY1NDdjZmNiN2U2MWU5MTRkZDg3YzZj
15
+ NTM0MzMzODAzMmQ3NGE2MWJlZTU5ODA3ZDA5MTY1N2Q0YWQ3ZTU=
data/lib/mailgun/error.rb CHANGED
@@ -1,4 +1,4 @@
1
- module Gun
1
+ module Mailgun
2
2
  class Error < StandardError
3
3
  end
4
4
  end
data/lib/mailgun/list.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'pry'
2
2
 
3
- module Gun
3
+ module Mailgun
4
4
 
5
5
  # Mailing List functionality
6
6
  # Refer http://documentation.mailgun.net/api-mailinglists.html for optional parameters
@@ -16,19 +16,19 @@ module Gun
16
16
 
17
17
  # List all mailing lists
18
18
  def list(options={})
19
- @mailgun.response = Mailgun.fire(:get, list_url, options)["items"] || []
19
+ @mailgun.response = Mailgun::Base.fire(:get, list_url, options)["items"] || []
20
20
  end
21
21
 
22
22
  # List a single mailing list by a given address
23
23
  def find(list_name)
24
- response = Mailgun.fire(:get, list_url(list_name))
24
+ response = Mailgun::Base.fire(:get, list_url(list_name))
25
25
  @properties = response["list"]
26
26
  end
27
27
 
28
28
  # Create a mailing list with a given address
29
29
  def create(list_name, options={})
30
30
  params = {:address => list_name}
31
- @mailgun.response = Mailgun.fire(:post, list_url, params.merge(options))
31
+ @mailgun.response = Mailgun::Base.fire(:post, list_url, params.merge(options))
32
32
  find(list_name)
33
33
  self
34
34
  end
@@ -37,24 +37,24 @@ module Gun
37
37
  # with an optional new address, name or description
38
38
  def update(params={})
39
39
  return unless !params.empty?
40
- @mailgun.response = Mailgun.fire(:put, list_url(self.address), params)
40
+ @mailgun.response = Mailgun::Base.fire(:put, list_url(self.address), params)
41
41
  find(self.address)
42
42
  self
43
43
  end
44
44
 
45
45
  # Deletes a mailing list with a given address
46
46
  def delete
47
- @mailgun.response = Mailgun.fire(:delete, list_url(self.address))
47
+ @mailgun.response = Mailgun::Base.fire(:delete, list_url(self.address))
48
48
  end
49
49
 
50
50
 
51
51
  def members
52
- @mailgun.response = Mailgun.fire(:get, list_url(self.address) + "/members")["items"] || []
52
+ @mailgun.response = Mailgun::Base.fire(:get, list_url(self.address) + "/members")["items"] || []
53
53
  end
54
54
 
55
55
 
56
56
  def stats
57
- @mailgun.response = Mailgun.fire(:get, list_url(self.address) + "/stats")
57
+ @mailgun.response = Mailgun::Base.fire(:get, list_url(self.address) + "/stats")
58
58
  end
59
59
 
60
60
 
@@ -79,19 +79,19 @@ module Gun
79
79
 
80
80
  def update_member(address, params={})
81
81
  return unless !params.empty?
82
- @mailgun.response = Mailgun.fire(:put, list_url(self.address) + "/members/#{address}", params)
82
+ @mailgun.response = Mailgun::Base.fire(:put, list_url(self.address) + "/members/#{address}", params)
83
83
  find(self.address)
84
84
  self
85
85
  end
86
86
 
87
87
 
88
88
  def find_member(address)
89
- @mailgun.response = Mailgun.fire(:get, list_url(self.address) + "/members/#{address}")
89
+ @mailgun.response = Mailgun::Base.fire(:get, list_url(self.address) + "/members/#{address}")
90
90
  end
91
91
 
92
92
 
93
93
  def remove_member(address)
94
- @mailgun.response = Mailgun.fire(:delete, list_url(self.address) + "/members/#{address}")
94
+ @mailgun.response = Mailgun::Base.fire(:delete, list_url(self.address) + "/members/#{address}")
95
95
  find(self.address)
96
96
  self
97
97
  end
@@ -100,7 +100,7 @@ module Gun
100
100
  def send_message(message, params={})
101
101
  params[:to] = self.address
102
102
  params.merge!(message.parameters)
103
- @mailgun.response = Mailgun.fire(:post, "#{@mailgun.api_url}/#{@mailgun.domain}/messages", params)
103
+ @mailgun.response = Mailgun::Base.fire(:post, "#{@mailgun.api_url}/#{@mailgun.domain}/messages", params)
104
104
  end
105
105
 
106
106
 
@@ -121,18 +121,18 @@ module Gun
121
121
  address = params
122
122
  params = {}
123
123
  params[:address] = address
124
- @mailgun.response = Mailgun.fire(:post, list_url(self.address) + "/members", params)
124
+ @mailgun.response = Mailgun::Base.fire(:post, list_url(self.address) + "/members", params)
125
125
  end
126
126
 
127
127
  def add_member_by_hash(params)
128
- @mailgun.response = Mailgun.fire(:post, list_url(self.address) + "/members", params)
128
+ @mailgun.response = Mailgun::Base.fire(:post, list_url(self.address) + "/members", params)
129
129
  end
130
130
 
131
131
 
132
132
  def add_members(members)
133
133
  params = {}
134
134
  params['members'] = members.to_json
135
- @mailgun.response = Mailgun.fire(:post, list_url(self.address) + "/members.json", params)
135
+ @mailgun.response = Mailgun::Base.fire(:post, list_url(self.address) + "/members.json", params)
136
136
  end
137
137
 
138
138
 
@@ -1,5 +1,5 @@
1
1
 
2
- module Gun
2
+ module Mailgun
3
3
 
4
4
  class Message
5
5
  attr_accessor :parameters
data/lib/mailgun_api.rb CHANGED
@@ -4,85 +4,146 @@ require "mailgun/list"
4
4
  require "mailgun/error"
5
5
  require "mailgun/message"
6
6
 
7
- class Mailgun
8
7
 
9
- attr_accessor :host, :protocol, :api_version, :test_mode, :api_key, :domain, :response
10
8
 
11
- def initialize(params={})
12
- @host = params.fetch(:host, "api.mailgun.net")
13
- @protocol = params.fetch(:protocol, "https")
14
- @api_version = params.fetch(:api_version, "v2")
15
- @test_mode = params.fetch(:test_mode, false)
16
- @api_key = params.fetch(:api_key) { raise ArgumentError.new(":api_key is a required argument to initialize Mailgun") if api_key.nil?}
17
- @domain = params.fetch(:domain, nil)
9
+ module Mailgun
10
+
11
+ @@host = "api.mailgun.net"
12
+ @@protocol = "https"
13
+ @@api_version = "v2"
14
+ @@test_mode = false
15
+ @@api_key = nil
16
+ @@domain = nil
17
+
18
+ def self.new(params={})
19
+ parameters = {}
20
+ parameters[:host] = params.fetch(:host, host)
21
+ parameters[:protocol] = params.fetch(:protocol, protocol)
22
+ parameters[:api_version] = params.fetch(:api_version, api_version)
23
+ parameters[:test_mode] = params.fetch(:test_mode, test_mode)
24
+ parameters[:api_key] = params.fetch(:api_key, api_key)
25
+ parameters[:domain] = params.fetch(:domain, domain)
26
+
27
+ Mailgun::Base.new(parameters)
18
28
  end
19
29
 
20
- def find_list(list_name)
21
- list = Gun::List.new(self)
22
- list.find("#{list_name}@#{domain}")
23
- list
30
+ def self.configure
31
+ yield self
24
32
  end
25
33
 
26
- def lists
27
- Gun::List.new(self).list
34
+ def self.host=(value)
35
+ @@host = value
28
36
  end
29
37
 
30
- def create_list(list_name, options={})
31
- Gun::List.new(self).create("#{list_name}@#{domain}", options)
38
+ def self.host
39
+ @@host
32
40
  end
33
41
 
42
+ def self.protocol=(value)
43
+ @@protocol = value
44
+ end
34
45
 
35
- def create_message(params)
36
- Gun::Message.new(params)
46
+ def self.protocol
47
+ @@protocol
37
48
  end
38
49
 
50
+ def self.api_version=(value)
51
+ @@api_version = value
52
+ end
39
53
 
40
- # Returns the api url used in all Mailgun API calls
41
- def api_url
42
- "#{protocol}://api:#{api_key}@#{host}/#{api_version}"
54
+ def self.api_version
55
+ @@api_version
43
56
  end
44
-
45
-
46
- def self.fire(method, url, parameters={})
47
- begin
48
- parameters = {:params => parameters} if method == :get
49
- return JSON(RestClient.send(method, url, parameters))
50
- rescue => e
51
- error_message = nil
52
- if e.respond_to? :http_body
53
- begin
54
- error_message = JSON(e.http_body)["message"]
55
- rescue
56
- raise e
57
- end
58
- raise Gun::Error.new(error_message)
59
- end
60
- raise e
61
- end
57
+
58
+ def self.test_mode=(value)
59
+ @@test_mode = value
62
60
  end
63
61
 
62
+ def self.test_mode
63
+ @@test_mode
64
+ end
64
65
 
66
+ def self.api_key=(value)
67
+ @@api_key = value
68
+ end
65
69
 
70
+ def self.api_key
71
+ @@api_key
72
+ end
66
73
 
74
+ def self.domain=(value)
75
+ @@domain = value
76
+ end
77
+
78
+ def self.domain
79
+ @@domain
80
+ end
67
81
 
68
82
 
69
- def self.submit(method, url, parameters={})
70
- begin
71
- parameters = {:params => parameters} if method == :get
72
- return JSON(RestClient.send(method, url, parameters))
73
- rescue => e
74
- error_message = nil
75
- if e.respond_to? :http_body
76
- begin
77
- error_message = JSON(e.http_body)["message"]
78
- rescue
79
- raise e
83
+
84
+ class Base
85
+
86
+ attr_accessor :host, :protocol, :api_version, :test_mode, :api_key, :domain, :response
87
+
88
+ def self.configure
89
+ yield self
90
+ end
91
+
92
+ def initialize(params={})
93
+ raise ArgumentError.new(":api_key is a required argument to initialize Mailgun") if params.fetch(:api_key).nil?
94
+
95
+ @host = params.fetch(:host)
96
+ @protocol = params.fetch(:protocol)
97
+ @api_version = params.fetch(:api_version)
98
+ @test_mode = params.fetch(:test_mode)
99
+ @api_key = params.fetch(:api_key)
100
+ @domain = params.fetch(:domain, nil)
101
+ end
102
+
103
+ def find_list(list_name)
104
+ list = Mailgun::List.new(self)
105
+ list.find("#{list_name}@#{domain}")
106
+ list
107
+ end
108
+
109
+ def lists
110
+ Mailgun::List.new(self).list
111
+ end
112
+
113
+ def create_list(list_name, options={})
114
+ Mailgun::List.new(self).create("#{list_name}@#{domain}", options)
115
+ end
116
+
117
+
118
+ def create_message(params)
119
+ Mailgun::Message.new(params)
120
+ end
121
+
122
+
123
+ # Returns the api url used in all Mailgun API calls
124
+ def api_url
125
+ "#{protocol}://api:#{api_key}@#{host}/#{api_version}"
126
+ end
127
+
128
+
129
+ def self.fire(method, url, parameters={})
130
+ begin
131
+ parameters = {:params => parameters} if method == :get
132
+ return JSON(RestClient.send(method, url, parameters))
133
+ rescue => e
134
+ error_message = nil
135
+ if e.respond_to? :http_body
136
+ begin
137
+ error_message = JSON(e.http_body)["message"]
138
+ rescue
139
+ raise e
140
+ end
141
+ raise Mailgun::Error.new(error_message)
80
142
  end
81
- raise Mailgun::Error.new(error_message)
143
+ raise e
82
144
  end
83
- raise e
84
145
  end
85
- end
86
146
 
147
+ end
87
148
 
88
149
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailgun_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Irey