class Pure360::Client

Public Class Methods

new(params) click to toggle source
# File lib/pure360/client.rb, line 7
def initialize(params)
  @params = {}

  @params[:endpoint]               = URI.parse(params.fetch(:endpoint))
  @params[:listName]               = params.fetch(:list)
  @params[:accName]                = params.fetch(:account)
  @params[:fullEmailValidationInd] = params.fetch(:full_email_validation, "N")
  @params[:doubleOptin]            = params.fetch(:double_opt_in, "false")
end

Public Instance Methods

subscribe(subscription_params) click to toggle source
# File lib/pure360/client.rb, line 17
def subscribe(subscription_params)
  ensure_email!(subscription_params.fetch(:email))

  response = post(subscription_params)

  response.body
end

Private Instance Methods

ensure_email!(email) click to toggle source
# File lib/pure360/client.rb, line 26
def ensure_email!(email)
  raise "Invalid Email" unless valid_email?(email)
end
http() click to toggle source
# File lib/pure360/client.rb, line 42
def http
  https = Net::HTTP.new(@params[:endpoint].host, @params[:endpoint].port)
  https.use_ssl = true
  https.verify_mode = OpenSSL::SSL::VERIFY_NONE

  https
end
payload(subscription_args) click to toggle source
# File lib/pure360/client.rb, line 50
def payload(subscription_args)
  @params.merge subscription_args
end
post(subscription_params) click to toggle source
# File lib/pure360/client.rb, line 36
def post(subscription_params)
  req = Net::HTTP::Post.new(@params[:endpoint].path)
  req.set_form_data(payload(subscription_params))
  http.request(req)
end
valid_email?(email) click to toggle source
# File lib/pure360/client.rb, line 30
def valid_email?(email)
  return false if email.empty? or email.nil?

  true
end