Class: Netvisor::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/netvisor/request.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.build_headers(url) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/netvisor/request.rb', line 22

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) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/netvisor/request.rb', line 38

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
  ]
  p arr.join('&')
  Digest::SHA2.hexdigest(arr.join('&'))
end

.build_url(service, method, id) ⇒ Object



18
19
20
# File 'lib/netvisor/request.rb', line 18

def self.build_url(service, method, id)
  url = "#{Netvisor.configuration.host}/#{service.gsub(/_/,'')}.nv"
end

Instance Method Details

#dispatch(xml, service, method = nil, id = nil) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/netvisor/request.rb', line 6

def dispatch(xml, service, method = nil, id = nil)
  url = self.class.build_url(service, method, id)
  headers = self.class.build_headers(url)
  xml.gsub!("<?xml version=\"1.0\"?>", '')

  res = Faraday.post(url) do |req|
    req.headers.merge!(headers)
    req.body = xml
  end
  p res
end