Class: ChainMail::Providers::Base
- Inherits:
-
Object
- Object
- ChainMail::Providers::Base
- Defined in:
- lib/chain_mail/providers/base.rb
Class Method Summary collapse
- .deliver(mail, creds) ⇒ Object
-
.post_json(url, headers, payload) ⇒ Object
Helper for HTTP requests, error parsing, etc.
Class Method Details
.deliver(mail, creds) ⇒ Object
6 7 8 |
# File 'lib/chain_mail/providers/base.rb', line 6 def self.deliver(mail, creds) raise NotImplementedError, "Subclasses must implement deliver(mail, creds)" end |
.post_json(url, headers, payload) ⇒ Object
Helper for HTTP requests, error parsing, etc.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/chain_mail/providers/base.rb', line 11 def self.post_json(url, headers, payload) uri = URI(url) req = Net::HTTP::Post.new(uri, headers) req.body = payload.to_json begin res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) } if res.is_a?(Net::HTTPSuccess) { success: true, response: res, error: nil } else { success: false, response: res, error: "API error: #{res.code} #{res.body}" } end rescue StandardError => e { success: false, response: nil, error: e. } end end |