class DTK::Client::Conn
Constants
- DefaultRestOpts
- RestClientWrapper
- VERBOSE_MODE_ON
Attributes
connection_error[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.
# File lib/core.rb, line 414 def print_warning creds = get_credentials puts "[WARNING] Unable to connect to server, please check you configuration." puts "========================== Configuration ==========================" printf "%15s %s\n", "REST endpoint:", rest_url printf "%15s %s\n", "Username:", "#{creds[:username]}" printf "%15s %s\n", "Password:", "#{creds[:password] ? creds[:password].gsub(/./,'*') : 'No password set'}" puts "===================================================================" if self.connection_error['errors'].first['errors'] error_code = self.connection_error['errors'].first['errors'].first['code'] print " Error code: " DTK::Client::OsUtil.print(error_code, :red) end end
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