mandrill-rb 1.0.52

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 +7 -0
  2. data/lib/mandrill.rb +10 -0
  3. data/lib/mandrill/api.rb +171 -0
  4. metadata +126 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9f71903132eb724ad3ee5ae75131ddec8d0c7812
4
+ data.tar.gz: 96ea4aacffd158e1e6152dba83666478a750a855
5
+ SHA512:
6
+ metadata.gz: c720ebcd2efd63bc4c323b05e200929e26f9071b0752a41151d2a394f793651b7daa6c00547e2e0bb9d014891ad6a77a7b7aeeecdb0aab24b4dc116f3b7938eb
7
+ data.tar.gz: 2d26ae706e5b6d5338679c308fd2e36311dff624e16a4bc4db2bd4cc2ff172a39fa90099c8a3d18af82e33489cf437d5ac5f8f176a03008bcd36558e63ecbeb4
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'excon'
3
+ require 'json'
4
+
5
+ require 'mandrill/error'
6
+ require 'mandrill/api'
7
+
8
+ module Mandrill
9
+
10
+ end
@@ -0,0 +1,171 @@
1
+ require 'excon'
2
+ require 'mandrill/error'
3
+ require 'mandrill/exports'
4
+ require 'mandrill/inbound'
5
+ require 'mandrill/internal'
6
+ require 'mandrill/ips'
7
+ require 'mandrill/messages'
8
+ require 'mandrill/metadata'
9
+ require 'mandrill/rejects'
10
+ require 'mandrill/senders'
11
+ require 'mandrill/subaccounts'
12
+ require 'mandrill/tags'
13
+ require 'mandrill/templates'
14
+ require 'mandrill/urls'
15
+ require 'mandrill/users'
16
+ require 'mandrill/webhooks'
17
+ require 'mandrill/whitelists'
18
+
19
+ module Mandrill
20
+ class API
21
+ attr_accessor :host, :path, :apikey, :debug, :session
22
+
23
+ def initialize(apikey=nil, debug=false)
24
+ @host = 'https://mandrillapp.com'
25
+ @path = '/api/1.0/'
26
+
27
+ @session = ::Excon.new @host
28
+ @debug = debug
29
+
30
+ if not apikey
31
+ if ENV['MANDRILL_APIKEY']
32
+ apikey = ENV['MANDRILL_APIKEY']
33
+ else
34
+ apikey = read_configs
35
+ end
36
+ end
37
+
38
+ raise ::Mandrill::Error, 'You must provide a Mandrill API key' if not apikey
39
+ @apikey = apikey
40
+ end
41
+
42
+ def call(url, params={})
43
+ params[:key] = @apikey
44
+ params = JSON.generate(params)
45
+ r = @session.post(:path => "#{@path}#{url}.json", :headers => {'Content-Type' => 'application/json'}, :body => params)
46
+
47
+ cast_error(r.body) if r.status != 200
48
+ return JSON.parse(r.body)
49
+ end
50
+
51
+ def read_configs()
52
+ [File.expand_path('~/.mandrill.key'), '/etc/mandrill.key'].delete_if{ |p| not File.exist? p}.each do |path|
53
+ f = File.new path
54
+ apikey = f.read.strip
55
+ f.close
56
+ return apikey if apikey != ''
57
+ end
58
+
59
+ return nil
60
+ end
61
+
62
+ def cast_error(body)
63
+
64
+ error_map = {
65
+ 'ValidationError' => ::Mandrill::ValidationError,
66
+ 'Invalid_Key' => ::Mandrill::InvalidKeyError,
67
+ 'PaymentRequired' => ::Mandrill::PaymentRequiredError,
68
+ 'Unknown_Subaccount' => ::Mandrill::UnknownSubaccountError,
69
+ 'Unknown_Template' => ::Mandrill::UnknownTemplateError,
70
+ 'ServiceUnavailable' => ::Mandrill::ServiceUnavailableError,
71
+ 'Unknown_Message' => ::Mandrill::UnknownMessageError,
72
+ 'Invalid_Tag_Name' => ::Mandrill::InvalidTagNameError,
73
+ 'Invalid_Reject' => ::Mandrill::InvalidRejectError,
74
+ 'Unknown_Sender' => ::Mandrill::UnknownSenderError,
75
+ 'Unknown_Url' => ::Mandrill::UnknownUrlError,
76
+ 'Unknown_TrackingDomain' => ::Mandrill::UnknownTrackingDomainError,
77
+ 'Invalid_Template' => ::Mandrill::InvalidTemplateError,
78
+ 'Unknown_Webhook' => ::Mandrill::UnknownWebhookError,
79
+ 'Unknown_InboundDomain' => ::Mandrill::UnknownInboundDomainError,
80
+ 'Unknown_InboundRoute' => ::Mandrill::UnknownInboundRouteError,
81
+ 'Unknown_Export' => ::Mandrill::UnknownExportError,
82
+ 'IP_ProvisionLimit' => ::Mandrill::IPProvisionLimitError,
83
+ 'Unknown_Pool' => ::Mandrill::UnknownPoolError,
84
+ 'NoSendingHistory' => ::Mandrill::NoSendingHistoryError,
85
+ 'PoorReputation' => ::Mandrill::PoorReputationError,
86
+ 'Unknown_IP' => ::Mandrill::UnknownIPError,
87
+ 'Invalid_EmptyDefaultPool' => ::Mandrill::InvalidEmptyDefaultPoolError,
88
+ 'Invalid_DeleteDefaultPool' => ::Mandrill::InvalidDeleteDefaultPoolError,
89
+ 'Invalid_DeleteNonEmptyPool' => ::Mandrill::InvalidDeleteNonEmptyPoolError,
90
+ 'Invalid_CustomDNS' => ::Mandrill::InvalidCustomDNSError,
91
+ 'Invalid_CustomDNSPending' => ::Mandrill::InvalidCustomDNSPendingError,
92
+ 'Metadata_FieldLimit' => ::Mandrill::MetadataFieldLimitError,
93
+ 'Unknown_MetadataField' => ::Mandrill::UnknownMetadataFieldError
94
+ }
95
+
96
+ begin
97
+ error_info = JSON.parse(body)
98
+ if error_info['status'] != 'error' or not error_info['name']
99
+ raise Error, "We received an unexpected error: #{body}"
100
+ end
101
+ if error_map[error_info['name']]
102
+ raise error_map[error_info['name']], error_info['message']
103
+ else
104
+ raise Error, error_info['message']
105
+ end
106
+ rescue JSON::ParserError
107
+ raise Error, "We received an unexpected error: #{body}"
108
+ end
109
+ end
110
+
111
+ def templates()
112
+ ::Mandrill::Templates.new self
113
+ end
114
+
115
+ def exports()
116
+ ::Mandrill::Exports.new self
117
+ end
118
+
119
+ def users()
120
+ ::Mandrill::Users.new self
121
+ end
122
+
123
+ def rejects()
124
+ ::Mandrill::Rejects.new self
125
+ end
126
+
127
+ def inbound()
128
+ ::Mandrill::Inbound.new self
129
+ end
130
+
131
+ def tags()
132
+ ::Mandrill::Tags.new self
133
+ end
134
+
135
+ def messages()
136
+ ::Mandrill::Messages.new self
137
+ end
138
+
139
+ def whitelists()
140
+ ::Mandrill::Whitelists.new self
141
+ end
142
+
143
+ def ips()
144
+ ::Mandrill::Ips.new self
145
+ end
146
+
147
+ def internal()
148
+ ::Mandrill::Internal.new self
149
+ end
150
+
151
+ def subaccounts()
152
+ ::Mandrill::Subaccounts.new self
153
+ end
154
+
155
+ def urls()
156
+ ::Mandrill::Urls.new self
157
+ end
158
+
159
+ def webhooks()
160
+ ::Mandrill::Webhooks.new self
161
+ end
162
+
163
+ def senders()
164
+ ::Mandrill::Senders.new self
165
+ end
166
+
167
+ def metadata()
168
+ ::Mandrill::Metadata.new self
169
+ end
170
+ end
171
+ end
metadata ADDED
@@ -0,0 +1,126 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mandrill-rb
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.52
5
+ platform: ruby
6
+ authors:
7
+ - Mandrill Devs
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.7.7
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: '2.0'
23
+ requirement: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: 1.7.7
28
+ - - <
29
+ - !ruby/object:Gem::Version
30
+ version: '2.0'
31
+ prerelease: false
32
+ type: :runtime
33
+ - !ruby/object:Gem::Dependency
34
+ name: excon
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: 0.16.0
40
+ - - <
41
+ - !ruby/object:Gem::Version
42
+ version: '1.0'
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.16.0
48
+ - - <
49
+ - !ruby/object:Gem::Version
50
+ version: '1.0'
51
+ prerelease: false
52
+ type: :runtime
53
+ - !ruby/object:Gem::Dependency
54
+ name: bundler
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ prerelease: false
66
+ type: :development
67
+ - !ruby/object:Gem::Dependency
68
+ name: rake
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ prerelease: false
80
+ type: :development
81
+ - !ruby/object:Gem::Dependency
82
+ name: rspec
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ prerelease: false
94
+ type: :development
95
+ description: A Ruby API library for the Mandrill email as a service platform.
96
+ email: community@mandrill.com
97
+ executables: []
98
+ extensions: []
99
+ extra_rdoc_files: []
100
+ files:
101
+ - lib/mandrill.rb
102
+ - lib/mandrill/api.rb
103
+ homepage: https://github.com/jasonayre/mandrill-rb
104
+ licenses: []
105
+ metadata: {}
106
+ post_install_message:
107
+ rdoc_options: []
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ requirements: []
121
+ rubyforge_project:
122
+ rubygems_version: 2.2.2
123
+ signing_key:
124
+ specification_version: 4
125
+ summary: A Ruby API library for the Mandrill email as a service platform.
126
+ test_files: []