class NetSuite::Passports::Token

Attributes

account[R]
consumer_key[R]
consumer_secret[R]
token_id[R]
token_secret[R]

Public Class Methods

new(account, consumer_key, consumer_secret, token_id, token_secret) click to toggle source
# File lib/netsuite/passports/token.rb, line 6
def initialize(account, consumer_key, consumer_secret, token_id, token_secret)
  @account = account.to_s
  @consumer_key = consumer_key
  @consumer_secret = consumer_secret
  @token_id = token_id
  @token_secret = token_secret
end

Public Instance Methods

passport() click to toggle source
# File lib/netsuite/passports/token.rb, line 14
def passport
  {
    'platformMsgs:tokenPassport' => {
      'platformCore:account' => account,
      'platformCore:consumerKey' => consumer_key,
      'platformCore:token' => token_id,
      'platformCore:nonce' => nonce,
      'platformCore:timestamp' => timestamp,
      'platformCore:signature' => signature,
      :attributes! => { 'platformCore:signature' => { 'algorithm' => 'HMAC-SHA256' } }
    }
  }
end

Private Instance Methods

alphanumerics() click to toggle source
# File lib/netsuite/passports/token.rb, line 46
def alphanumerics
  [*'0'..'9',*'A'..'Z',*'a'..'z']
end
nonce() click to toggle source
# File lib/netsuite/passports/token.rb, line 42
def nonce
  @nonce ||= Array.new(20) { alphanumerics.sample }.join
end
signature() click to toggle source
# File lib/netsuite/passports/token.rb, line 30
def signature
  Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'), signature_key, signature_data))
end
signature_data() click to toggle source
# File lib/netsuite/passports/token.rb, line 38
def signature_data
  "#{account}&#{consumer_key}&#{token_id}&#{nonce}&#{timestamp}"
end
signature_key() click to toggle source
# File lib/netsuite/passports/token.rb, line 34
def signature_key
  "#{consumer_secret}&#{token_secret}"
end
timestamp() click to toggle source
# File lib/netsuite/passports/token.rb, line 50
def timestamp
  @timestamp ||= Time.now.to_i
end