mandrill-rb 1.0.52

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.
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: []