class DTK::Client::Conn

Constants

DefaultRestOpts
RestClientWrapper
VERBOSE_MODE_ON

Attributes

connection_error[R]
cookies[R]

Public Class Methods

get_timeout() click to toggle source
# File lib/core.rb, line 330
def self.get_timeout
  DefaultRestOpts[:timeout]
end
new() click to toggle source
# File lib/core.rb, line 316
def initialize
  @cookies = Hash.new
  @connection_error = nil
  login
end
set_timeout(timeout_sec) click to toggle source
# File lib/core.rb, line 334
def self.set_timeout(timeout_sec)
  DefaultRestOpts[:timeout] = timeout_sec
end

Public Instance Methods

check_and_wrap_response(command_class, rest_method_func) click to toggle source

method will repeat request in case session has expired

# File lib/core.rb, line 376
def check_and_wrap_response(command_class, rest_method_func)
  response = rest_method_func.call

  if ResponseErrorHandler.check_for_session_expiried(response)
    # re-logging user and repeating request
    DTK::Client::OsUtil.print("Session expired: re-establishing session & re-trying request ...", :yellow)
    @cookies = DTK::Client::Session.re_initialize
    response = rest_method_func.call
  end

  response_obj = Response.new(command_class, response)

  # queue messages from server to be displayed later
  DTK::Shell::MessageQueue.process_response(response_obj)

  response_obj
end
connection_error?() click to toggle source
# File lib/core.rb, line 396
def connection_error?
  return !@connection_error.nil?
end
get(command_class,url) click to toggle source
# File lib/core.rb, line 349
def get(command_class,url)
  ap "GET #{url}" if VERBOSE_MODE_ON

  check_and_wrap_response(command_class, Proc.new { json_parse_if_needed(get_raw(url)) })
end
get_username() click to toggle source
# File lib/core.rb, line 338
def get_username
  get_credentials[:username]
end
logout() click to toggle source
# File lib/core.rb, line 400
def logout
  response = get_raw rest_url("user/process_logout")

  # save cookies - no need to persist them
  # DiskCacher.new.save_cookie(@cookies)

  raise DTK::Client::DtkError, "Failed to logout, and terminate session!" unless response
  @cookies = nil
end
post(command_class,url,body=nil) click to toggle source
# File lib/core.rb, line 355
def post(command_class,url,body=nil)
  if VERBOSE_MODE_ON
    ap "POST (REST) #{url}"
    ap "params: "
    ap body
  end

  check_and_wrap_response(command_class, Proc.new { json_parse_if_needed(post_raw(url,body)) })
end
post_file(command_class,url,body=nil) click to toggle source
# File lib/core.rb, line 365
def post_file(command_class,url,body=nil)
  if VERBOSE_MODE_ON
    ap "POST (FILE) #{url}"
    ap "params: "
    ap body
  end

  check_and_wrap_response(command_class, Proc.new { json_parse_if_needed(post_raw(url,body,{:content_type => 'avro/binary'})) })
end
print_warning() click to toggle source

Method will warn user that connection could not be established. User should check configuration to make sure that connection is properly set.

rest_url(route=nil) click to toggle source
# File lib/core.rb, line 342
def rest_url(route=nil)
  protocol, port = "http", Config[:server_port].to_s
  protocol, port = "https", Config[:secure_connection_server_port].to_s if Config[:secure_connection] == "true"

  "#{protocol}://#{Config[:server_host]}:#{port}/rest/#{route}"
end

Private Instance Methods

get_credentials() click to toggle source
# File lib/core.rb, line 454
def get_credentials
  unless @parsed_credentials
    cred_file = Config::CRED_FILE
    raise DTK::Client::DtkError,"Authorization configuration file (#{cred_file}) does not exist" unless File.exists?(cred_file)
    ret = parse_key_value_file(cred_file)
    [:username,:password].each{ |k| raise DTK::Client::DtkError, "cannot find #{k}" unless ret[k] }
    @parsed_credentials = ret
  end

  @parsed_credentials
end
get_raw(url) click to toggle source
# File lib/core.rb, line 485
def get_raw(url)
  RestClientWrapper.get_raw(url, {}, DefaultRestOpts.merge(:cookies => @cookies))
end
json_parse_if_needed(item) click to toggle source
# File lib/core.rb, line 492
def json_parse_if_needed(item)
  RestClientWrapper.json_parse_if_needed(item)
end
login() click to toggle source
# File lib/core.rb, line 434
def login
  creds = get_credentials
  response = post_raw rest_url("user/process_login"),creds
  errors = response['errors']

  if response.kind_of?(Common::Response) and not response.ok?
    if (errors && errors.first['code']=="pg_error")
      DTK::Client::OsUtil.print(errors.first['message'].gsub!("403 Forbidden", "[PG_ERROR]"), :red)
      exit
    end
    @connection_error = response
  else
    @cookies = response.cookies
  end
end
post_raw(url,body,params={}) click to toggle source
# File lib/core.rb, line 488
def post_raw(url,body,params={})
  RestClientWrapper.post_raw(url, body, DefaultRestOpts.merge(:cookies => @cookies).merge(params))
end
set_credentials(username, password) click to toggle source
# File lib/core.rb, line 450
def set_credentials(username, password)
  @parsed_credentials = { :username => username, :password => password}
end