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 +8 -8
- data/lib/mailgun/error.rb +1 -1
- data/lib/mailgun/list.rb +15 -15
- data/lib/mailgun/message.rb +1 -1
- data/lib/mailgun_api.rb +115 -54
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZGM5MWNiNWU2MTkxYTg1NWJmY2JlNmI5NGM2YzkxOTU4MmRhZTFiNA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OTg0OGI4M2FlNzRlYzg4ZTFlNzk4Y2VlY2U0YmUxZjI0NDkxZTVjZQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NmQyYzc1Mjg4ZDNlYjRhMGNlYzcwZGY5ZDYzMThhNzBjMjliNjFlMmYxZGE4
|
10
|
+
MzI3MjBjOWRlNGY4ZjBiYTQxZjU2NzNlODZhMTRhMzA1Mjg5OTM4ZGQ2NzBj
|
11
|
+
MGM2MTE4MGI4ZTJjYjYyNjJjNzhmNGMwNzYxY2EyMDY3MzhjZjY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZmMxNjA1MWRmN2E2M2I5N2MzMDllNzBhN2NkZjJjYTk2OTAzOGQ4YzVlNzFh
|
14
|
+
ZmQ2YjViMTNjN2NkZGQ2OTQ3YzU0OWY1NDdjZmNiN2U2MWU5MTRkZDg3YzZj
|
15
|
+
NTM0MzMzODAzMmQ3NGE2MWJlZTU5ODA3ZDA5MTY1N2Q0YWQ3ZTU=
|
data/lib/mailgun/error.rb
CHANGED
data/lib/mailgun/list.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'pry'
|
2
2
|
|
3
|
-
module
|
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
|
|
data/lib/mailgun/message.rb
CHANGED
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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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
|
21
|
-
|
22
|
-
list.find("#{list_name}@#{domain}")
|
23
|
-
list
|
30
|
+
def self.configure
|
31
|
+
yield self
|
24
32
|
end
|
25
33
|
|
26
|
-
def
|
27
|
-
|
34
|
+
def self.host=(value)
|
35
|
+
@@host = value
|
28
36
|
end
|
29
37
|
|
30
|
-
def
|
31
|
-
|
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
|
36
|
-
|
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
|
-
|
41
|
-
|
42
|
-
"#{protocol}://api:#{api_key}@#{host}/#{api_version}"
|
54
|
+
def self.api_version
|
55
|
+
@@api_version
|
43
56
|
end
|
44
|
-
|
45
|
-
|
46
|
-
|
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
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
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
|
143
|
+
raise e
|
82
144
|
end
|
83
|
-
raise e
|
84
145
|
end
|
85
|
-
end
|
86
146
|
|
147
|
+
end
|
87
148
|
|
88
149
|
end
|