class Netvisor::Request

Public Class Methods

build_headers(url) click to toggle source
# File lib/netvisor/request.rb, line 25
def self.build_headers(url)
  timestamp = DateTime.parse(Time.now.utc.to_s).strftime("%F %T.%L")
  transaction_id = ((1000...9999).to_a.choice + Time.now.to_i).to_s
  return {
    'X-Netvisor-Authentication-Sender' => Netvisor.configuration.sender,
    'X-Netvisor-Authentication-CustomerId' => Netvisor.configuration.customer_id,
    'X-Netvisor-Authentication-PartnerId' => Netvisor.configuration.partner_id,
    'X-Netvisor-Authentication-Timestamp' => timestamp,
    'X-Netvisor-Authentication-MAC' => build_mac(url, timestamp, transaction_id),
    'X-Netvisor-Authentication-TransactionId' => transaction_id,
    'X-Netvisor-Interface-Language' => Netvisor.configuration.language,
    'X-Netvisor-Organisation-ID' => Netvisor.configuration.organisation_id,
    'X-Netvisor-Authentication-MACHashCalculationAlgorithm' => 'SHA256'
  }
end
build_mac(url, timestamp, transaction_id) click to toggle source
# File lib/netvisor/request.rb, line 41
def self.build_mac(url, timestamp, transaction_id)
  arr = [
    url,
    Netvisor.configuration.sender,
    Netvisor.configuration.customer_id,
    timestamp,
    Netvisor.configuration.language,
    Netvisor.configuration.organisation_id,
    transaction_id,
    Netvisor.configuration.customer_key,
    Netvisor.configuration.partner_key
  ]
  Netvisor.logger.debug "build_mac: #{arr.join('&')}"
  Digest::SHA2.hexdigest(arr.join('&'))
end
build_url(service, method, id) click to toggle source
# File lib/netvisor/request.rb, line 21
def self.build_url(service, method, id)
  url = "#{Netvisor.configuration.host}/#{service.gsub(/_/,'')}.nv"
end

Public Instance Methods

dispatch(xml, service, method = nil, id = nil) click to toggle source
# File lib/netvisor/request.rb, line 7
def dispatch(xml, service, method = nil, id = nil)
  url = self.class.build_url(service, method, id)
  headers = self.class.build_headers(url)
  Netvisor.logger.debug "dispatch: URL #{url}"
  Netvisor.logger.debug "dispatch: Headers #{headers}"
  xml.gsub!("<?xml version=\"1.0\"?>", '')

  res = Faraday.post(url) do |req|
    req.headers.merge!(headers)
    req.body = xml
  end
  Netvisor::Response.parse(res.body)
end