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