mailgun_api 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +15 -0
  2. data/lib/mailgun/list.rb +130 -0
  3. data/lib/mailgun_api.rb +50 -0
  4. 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=
@@ -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
@@ -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: []