class DTK::Network::Client::Conn

Constants

REST_PREFIX
REST_VERSION

Attributes

codecommit[R]
connection_error[R]
cookies[R]

Public Class Methods

new() click to toggle source
# File lib/client/conn.rb, line 4
def initialize
  @cookies          = {}
  @connection_error = nil
  @codecommit       = nil
  login
end

Public Instance Methods

connection_error?() click to toggle source
# File lib/client/conn.rb, line 25
def connection_error?
  !connection_error.nil?
end
delete(route, delete_body = {}) click to toggle source
# File lib/client/conn.rb, line 21
def delete(route, delete_body = {})
  check_and_wrap_response { json_parse_if_needed(delete_raw(rest_url(route), delete_body)) }
end
get(route, query_string_hash = {}) click to toggle source
# File lib/client/conn.rb, line 13
def get(route, query_string_hash = {})
  check_and_wrap_response { json_parse_if_needed(get_raw(rest_url(route), query_string_hash)) }
end
post(route, post_body = {}) click to toggle source
# File lib/client/conn.rb, line 17
def post(route, post_body = {})
  check_and_wrap_response { json_parse_if_needed(post_raw(rest_url(route), post_body)) }
end

Private Instance Methods

check_and_wrap_response(&rest_method_func) click to toggle source
# File lib/client/conn.rb, line 46
def check_and_wrap_response(&rest_method_func)
  if @connection_error
    if conn_error = connection_error['errors'].first
      raise Error, conn_error
    else
      raise Error, "Unable to connect to dtk network, please check your credentials and try again!"
    end
  end

  response = rest_method_func.call

  if check_for_session_expiried(response)
    3.times do
      sleep 2
      print "Session expired: re-establishing session & re-trying request ..."
      @cookies = Session.re_initialize
      response = rest_method_func.call
      return response unless check_for_session_expiried(response)
    end
  end

  response
end
check_for_session_expiried(response) click to toggle source
# File lib/client/conn.rb, line 70
def check_for_session_expiried(response)
  if response && response.is_a?(Hash)
    if errors = response['errors']
      if errors.is_a?(Array)
        error = errors.first
        return true if error.eql?('You need to sign in or sign up before continuing.')
      end
    end
  end

  false
end
default_rest_opts() click to toggle source
# File lib/client/conn.rb, line 104
def default_rest_opts
  @default_rest_opts ||= get_default_rest_opts
end
delete_raw(url, delete_body, params = {}) click to toggle source
# File lib/client/conn.rb, line 124
def delete_raw(url, delete_body, params = {})
  Response::RestClientWrapper.delete_raw(url, delete_body, default_rest_opts.merge(:cookies => @cookies).merge(params))
end
error_code?() click to toggle source
# File lib/client/conn.rb, line 31
def error_code?
  connection_error['errors'].first['code'] rescue nil
end
get_credentials() click to toggle source
# File lib/client/conn.rb, line 100
def get_credentials
  @parsed_credentials ||= Config.get_credentials
end
get_default_rest_opts() click to toggle source
# File lib/client/conn.rb, line 108
def get_default_rest_opts
  {
    :timeout => 200,
    :open_timeout => 10,
    :verify_ssl => OpenSSL::SSL::VERIFY_PEER
  }
end
get_raw(url, query_string_hash = {}) click to toggle source
# File lib/client/conn.rb, line 116
def get_raw(url, query_string_hash = {})
  Response::RestClientWrapper.get_raw(url, query_string_hash, default_rest_opts.merge(:cookies => @cookies))
end
json_parse_if_needed(item) click to toggle source
# File lib/client/conn.rb, line 128
def json_parse_if_needed(item)
  Response::RestClientWrapper.json_parse_if_needed(item)
end
login() click to toggle source
# File lib/client/conn.rb, line 83
def login
  response = post_raw rest_url('auth/sign_in'), get_credentials
  if response.kind_of?(::DTK::Common::Response) and !response.ok?
    @connection_error = response
  else
    @cookies = response.cookies
    set_codecommit_info(response)
  end
end
logout() click to toggle source
# File lib/client/conn.rb, line 93
def logout
  response = get_raw rest_url('auth/sign_out')
  # TODO: see if response can be nil
  raise Error, "Failed to logout, and terminate session!" unless response
  @cookies = nil
end
post_raw(url, post_body, params = {}) click to toggle source
# File lib/client/conn.rb, line 120
def post_raw(url, post_body, params = {})
  Response::RestClientWrapper.post_raw(url, post_body, default_rest_opts.merge(:cookies => @cookies).merge(params))
end
rest_url(route = nil) click to toggle source
# File lib/client/conn.rb, line 38
def rest_url(route = nil)
  "#{rest_url_base}/#{REST_PREFIX}/#{route}"
end
rest_url_base() click to toggle source
# File lib/client/conn.rb, line 42
def rest_url_base
  @@rest_url_base ||= Config.get_endpoint
end
set_codecommit_info(response) click to toggle source
# File lib/client/conn.rb, line 132
def set_codecommit_info(response)
  json_response = json_parse_if_needed(response)
  # if codecommit_data = json_response.dig('data', 'meta', 'aws', 'codecommit')
  if codecommit_data = json_response['data']['meta']['aws']['codecommit']
    @codecommit = codecommit_data
  end
end