class NetSuite::Rest::Utilities::Request

Constants

DEFAULT_TIMEOUT
PRODUCTION_API
SANDBOX_API
USE_SSL

Public Class Methods

get(options) click to toggle source
# File lib/netsuite/rest/utilities/request.rb, line 17
def get(options)
  email       = encode(options.fetch :email)
  signature   = encode(options.fetch :password)
  sandbox     = options.fetch(:sandbox, false)
  uri         = determine_uri(options.fetch(:uri), sandbox)
  response    = make_request(:get, uri, email, signature)
  [response.code, JSON.parse(response.body)]
end

Private Class Methods

auth_header(email, signature) click to toggle source
# File lib/netsuite/rest/utilities/request.rb, line 46
def auth_header(email, signature)
  "NLAuth nlauth_email=#{email},nlauth_signature=#{signature}"
end
determine_uri(uri, sandbox) click to toggle source
# File lib/netsuite/rest/utilities/request.rb, line 50
def determine_uri(uri, sandbox)
  URI((sandbox ? SANDBOX_API : PRODUCTION_API) + uri)
end
encode(unencoded_string) click to toggle source
# File lib/netsuite/rest/utilities/request.rb, line 54
def encode(unencoded_string)
  CGI.escape(unencoded_string)
end
make_request(method_name, uri, email, signature) click to toggle source
# File lib/netsuite/rest/utilities/request.rb, line 28
def make_request(method_name, uri, email, signature)
  klass = Module.const_get "Net::HTTP::#{method_name.to_s.capitalize}"
  method = klass.new(uri)
  method['AUTHORIZATION'] = auth_header(email, signature)

  http = Net::HTTP.new(uri.hostname, uri.port)
  http.use_ssl      = USE_SSL
  http.ssl_version = :TLSv1_2
  http.read_timeout = DEFAULT_TIMEOUT

  # TODO username + password will be outputted to STDOUT if this is enabled
  # if !NetSuite::Configuration.silent
  #   http.set_debug_output(NetSuite::Configuration.logger)
  # end

  http.start { |http| http.request(method) }
end