class Mail::Relayer
Constants
- CONTENT_TYPE
- USER_AGENT
- VERSION
Attributes
password[R]
uri[R]
username[R]
Public Class Methods
new(url:, username: "mail_relayer", password:)
click to toggle source
# File lib/mail/relayer.rb, line 34 def initialize(url:, username: "mail_relayer", password:) @uri = URI(url) @username = username @password = password end
Public Instance Methods
relay(source)
click to toggle source
# File lib/mail/relayer.rb, line 40 def relay(source) case response = post(source) when Net::HTTPSuccess Result.new "2.0.0", "Successfully relayed message to ingress" when Net::HTTPUnauthorized Result.new "4.7.0", "Invalid credentials for ingress" else Result.new "4.0.0", "HTTP #{response.code}" end rescue IOError, SocketError, SystemCallError => error Result.new "4.4.2", "Network error relaying to ingress: #{error.message}" rescue Timeout::Error Result.new "4.4.2", "Timed out relaying to ingress" rescue => error # rubocop:disable Style/RescueStandardError Result.new "4.0.0", "Error relaying to ingress: #{error.message}" end
Private Instance Methods
client()
click to toggle source
# File lib/mail/relayer.rb, line 66 def client @client ||= Net::HTTP.new(uri.host, uri.port).tap do |connection| if uri.scheme == "https" require "openssl" connection.use_ssl = true connection.verify_mode = OpenSSL::SSL::VERIFY_PEER end connection.open_timeout = 1 connection.read_timeout = 10 end end
post(source)
click to toggle source
# File lib/mail/relayer.rb, line 59 def post(source) client.post uri, source, "Content-Type" => CONTENT_TYPE, "User-Agent" => USER_AGENT, "Authorization" => "Basic #{Base64.strict_encode64(username + ':' + password)}" end