Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions lib/sparkpost_rails.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,11 @@ def self.configure

class Configuration
attr_accessor :api_key
attr_accessor :api_endpoint
attr_accessor :api_binding
attr_accessor :sandbox

attr_accessor :mailtype
attr_accessor :track_opens
attr_accessor :track_clicks

Expand All @@ -33,6 +36,8 @@ class Configuration

attr_accessor :subaccount

attr_accessor :http_proxy

def initialize
set_defaults
end
Expand Down
20 changes: 18 additions & 2 deletions lib/sparkpost_rails/delivery_method.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ def deliver!(mail)
prepare_attachments_from mail
end

prepare_metadata
prepare_substitution_data_from sparkpost_data
prepare_description_from sparkpost_data
prepare_options_from mail, sparkpost_data
Expand All @@ -41,6 +42,12 @@ def deliver!(mail)
end

private
def prepare_metadata
@data[:metadata] = Hash.new
@data[:metadata][:binding] = SparkPostRails.configuration.api_binding
@data[:metadata][:mailtype]= SparkPostRails.configuration.mailtype
end

def find_sparkpost_data_from mail
if mail[:sparkpost_data]
eval(mail[:sparkpost_data].value)
Expand Down Expand Up @@ -148,7 +155,7 @@ def prepare_cc_headers_from mail, sparkpost_data
emails << copy[:address][:email]
end

@data[:content][:headers] = { cc: emails }
@data[:content][:headers] = { cc: emails.to_json }
end
end

Expand Down Expand Up @@ -374,12 +381,21 @@ def prepare_api_headers_from sparkpost_data
end

def post_to_api
url = "https://api.sparkpost.com/api/v1/transmissions"
url = SparkPostRails.configuration.api_endpoint

uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

if SparkPostRails.configuration.http_proxy
proxy_uri = URI(SparkPostRails.configuration.http_proxy)
http.proxy_from_env = false # make sure proxy settings can be overridden
http.proxy_address = proxy_uri.host
http.proxy_port = proxy_uri.port
http.proxy_user = proxy_uri.user if proxy_uri.user
http.proxy_pass = proxy_uri.password if proxy_uri.password
end

request = Net::HTTP::Post.new(uri.path, @headers)
request.body = JSON.generate(@data)

Expand Down