Sha256: 8084ab07ac98bab01093cad137c495fffc8e588531b5f14d2f412d873ce6e4f7
Contents?: true
Size: 1.88 KB
Versions: 2
Compression:
Stored size: 1.88 KB
Contents
module Workarea module Emarsys class Gateway attr_reader :secret_key, :user_name, :options def initialize(secret_key, user_name, options = {}) @secret_key = secret_key @user_name = user_name @options = options end def create_contact(attrs) base_uri = "/api/v2/contact/" params = { create_if_not_exists: 1 } query_values = "?" + params.to_query path = base_uri + query_values response = connection.put do |req| req.url path req.params = params req.body = attrs.to_json end Response.new(response) end private def connection request_timeouts = { timeout: Workarea::Emarsys.config.api_timeout, open_timeout: Workarea::Emarsys.config.open_timeout } headers = { "Content-Type" => "application/json", "Accept" => "application/json", "X-WSSE" => auth_header } Faraday.new(url: rest_endpoint, request: request_timeouts, headers: headers) end def auth_header nonce = SecureRandom.base64(32).first(32) timestamp = Time.now.utc.iso8601 password_digest = Base64.encode64(Digest::SHA1.new.hexdigest(nonce + timestamp + secret_key)).strip header = 'UsernameToken ' + "Username=\"#{user_name}\", " + "PasswordDigest=\"#{password_digest}\", " + "Nonce=\"#{nonce}\", " + "Created=\"#{timestamp}\"" header end def rest_endpoint "https://#{host}" end def host if test? "api-proxy.s.emarsys.com" else "api.emarsys.net" end end def test? (options.has_key?(:test) ? options[:test] : false) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
workarea-emarsys-2.0.1 | app/lib/workarea/emarsys/gateway.rb |
workarea-emarsys-2.0.0 | app/lib/workarea/emarsys/gateway.rb |