mailgun_api 0.0.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 +15 -0
- data/lib/mailgun/list.rb +130 -0
- data/lib/mailgun_api.rb +50 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
Y2JmZGQ4YzhkNTNhNmRkNTYxZjI5ZjE2MTczM2IzNjY1N2M2Mzg5Yw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NDIzYjc1M2MyZWY4MjRmYjFhYjZkMDJjMTA3M2RiMDFmNTI3NjRhMg==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
OTM3NDU4YWViYTZjYWU4MTJjNTY4NWExZGM1NjEzMDhlZWU5OTIwNWQwMDMx
|
10
|
+
Yzk2Y2E3MWNmZGFlNjRjZmQyMzMzM2Y0MjM4MTFjZjQzOTFkNjdhMDk4Mjc2
|
11
|
+
MjJhMzY1YzEzNWQ0NjI3Mzk5NmQ2MTBhNzU3ZTQzMDc1ZDA5MGY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NjU0YzNjMTVmNjAyYTYyZmI0ZGIxNWZmOGNiNGQ3ZGRkYWRkZTY4MzY3Njc1
|
14
|
+
NmJlNDI3NzMzODQ3MmU0YjNkMDIwN2U2NDcxMWExOWUyOTYwOWFjMTIwZjc1
|
15
|
+
MWM0YmRmYjkzOTQ3Mjc5OWY3OTBhNzg2ZWQ2MTdhNzE2NzEyNzU=
|
data/lib/mailgun/list.rb
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
require 'pry'
|
2
|
+
|
3
|
+
module Gun
|
4
|
+
|
5
|
+
# Mailing List functionality
|
6
|
+
# Refer http://documentation.mailgun.net/api-mailinglists.html for optional parameters
|
7
|
+
|
8
|
+
|
9
|
+
class List
|
10
|
+
attr_accessor :properties
|
11
|
+
|
12
|
+
# Used internally
|
13
|
+
def initialize(mailgun)
|
14
|
+
@mailgun = mailgun
|
15
|
+
end
|
16
|
+
|
17
|
+
# List all mailing lists
|
18
|
+
def list(options={})
|
19
|
+
@mailgun.response = Mailgun.fire(:get, list_url, options)["items"] || []
|
20
|
+
end
|
21
|
+
|
22
|
+
# List a single mailing list by a given address
|
23
|
+
def find(list_name)
|
24
|
+
@mailgun.response = Mailgun.fire(:get, list_url(list_name))
|
25
|
+
@properties = @mailgun.response["list"]
|
26
|
+
end
|
27
|
+
|
28
|
+
# Create a mailing list with a given address
|
29
|
+
def create(list_name, options={})
|
30
|
+
params = {:address => list_name}
|
31
|
+
@mailgun.response = Mailgun.fire(:post, list_url, params.merge(options))
|
32
|
+
end
|
33
|
+
|
34
|
+
# Update a mailing list with a given address
|
35
|
+
# with an optional new address, name or description
|
36
|
+
def update(params={})
|
37
|
+
return unless !params.empty?
|
38
|
+
@mailgun.response = Mailgun.fire(:put, list_url(self.address), params)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Deletes a mailing list with a given address
|
42
|
+
def delete
|
43
|
+
@mailgun.response = Mailgun.fire(:delete, list_url(self.address))
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
def members
|
48
|
+
@mailgun.response = Mailgun.fire(:get, list_url(self.address) + "/members")["items"] || []
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
def stats
|
53
|
+
@mailgun.response = Mailgun.fire(:get, list_url(self.address) + "/stats")
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
def add_member(params={})
|
58
|
+
|
59
|
+
if params.class == String
|
60
|
+
add_member_by_hash(params)
|
61
|
+
end
|
62
|
+
|
63
|
+
if params.class == Hash
|
64
|
+
add_member_by_hash(params)
|
65
|
+
end
|
66
|
+
|
67
|
+
if params.class == Array
|
68
|
+
add_members(params)
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
def update_member(address, params={})
|
76
|
+
return unless !params.empty?
|
77
|
+
@mailgun.response = Mailgun.fire(:put, list_url(self.address) + "/members/#{address}", params)
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
def find_member(address)
|
82
|
+
@mailgun.response = Mailgun.fire(:get, list_url(self.address) + "/members/#{address}")
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
def remove_member(address)
|
87
|
+
@mailgun.response = Mailgun.fire(:delete, list_url(self.address) + "/members/#{address}")
|
88
|
+
end
|
89
|
+
|
90
|
+
|
91
|
+
def method_missing(name, *args)
|
92
|
+
|
93
|
+
if properties.has_key?(name.to_s)
|
94
|
+
@properties[name.to_s]
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
private
|
102
|
+
|
103
|
+
def add_member_by_name(params)
|
104
|
+
address = params
|
105
|
+
params = {}
|
106
|
+
params[:address] = address
|
107
|
+
@mailgun.response = Mailgun.fire(:post, list_url(self.address) + "/members", params)
|
108
|
+
end
|
109
|
+
|
110
|
+
def add_member_by_hash(params)
|
111
|
+
@mailgun.response = Mailgun.fire(:post, list_url(self.address) + "/members", params)
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
def add_members(members)
|
116
|
+
params = {}
|
117
|
+
params['members'] = members.to_json
|
118
|
+
@mailgun.response = Mailgun.fire(:post, list_url(self.address) + "/members.json", params)
|
119
|
+
end
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
|
124
|
+
# Helper method to generate the proper url for Mailgun mailbox API calls
|
125
|
+
def list_url(address=nil)
|
126
|
+
"#{@mailgun.api_url}/lists#{'/' + address if address}"
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
130
|
+
end
|
data/lib/mailgun_api.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require "rest-client"
|
2
|
+
require "json"
|
3
|
+
require "mailgun/list"
|
4
|
+
|
5
|
+
class Mailgun
|
6
|
+
|
7
|
+
attr_accessor :host, :protocol, :api_version, :test_mode, :api_key, :domain, :response
|
8
|
+
|
9
|
+
def initialize(params={})
|
10
|
+
@host = params.fetch(:host, "api.mailgun.net")
|
11
|
+
@protocol = params.fetch(:protocol, "https")
|
12
|
+
@api_version = params.fetch(:api_version, "v2")
|
13
|
+
@test_mode = params.fetch(:test_mode, false)
|
14
|
+
@api_key = params.fetch(:api_key) { raise ArgumentError.new(":api_key is a required argument to initialize Mailgun") if api_key.nil?}
|
15
|
+
@domain = params.fetch(:domain, nil)
|
16
|
+
end
|
17
|
+
|
18
|
+
def find_list(list_name)
|
19
|
+
list = Gun::List.new(self)
|
20
|
+
list.find("#{list_name}@#{domain}")
|
21
|
+
list
|
22
|
+
end
|
23
|
+
|
24
|
+
def lists
|
25
|
+
Gun::List.new(self).list
|
26
|
+
end
|
27
|
+
|
28
|
+
def create_list(list_name, options={})
|
29
|
+
Gun::List.new(self).create("#{list_name}@#{domain}", options)
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
# Returns the api url used in all Mailgun API calls
|
34
|
+
def api_url
|
35
|
+
"#{protocol}://api:#{api_key}@#{host}/#{api_version}"
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
def self.fire(method, url, parameters={})
|
40
|
+
|
41
|
+
parameters = {:params => parameters} if method == :get
|
42
|
+
|
43
|
+
# puts method
|
44
|
+
# puts url
|
45
|
+
# puts parameters
|
46
|
+
|
47
|
+
return JSON(RestClient.send(method, url, parameters))
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mailgun_api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Michael Irey
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-11-14 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A library for interfacing with the Mailgun API
|
14
|
+
email: michael.irey@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/mailgun_api.rb
|
20
|
+
- lib/mailgun/list.rb
|
21
|
+
homepage: http://rubygems.org/gems/mailgun_api
|
22
|
+
licenses:
|
23
|
+
- MIT
|
24
|
+
metadata: {}
|
25
|
+
post_install_message:
|
26
|
+
rdoc_options: []
|
27
|
+
require_paths:
|
28
|
+
- lib
|
29
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
requirements: []
|
40
|
+
rubyforge_project:
|
41
|
+
rubygems_version: 2.1.9
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: Library for the Mailgun API
|
45
|
+
test_files: []
|