mailgun_api 0.0.5 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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