module Idcf::JsonHyperSchema::Expands::LinkInfoBaseExtension

Link Info Base ext

Public Instance Methods

async?() click to toggle source

is async

@return Boolean

# File lib/idcf/cli/gem_ext/idcf/json_hyper_schema/expands/link_info_base_extension.rb, line 9
def async?
  !!@data.data['$async']
end
make_params_for_cli(args) click to toggle source
# File lib/idcf/cli/gem_ext/idcf/json_hyper_schema/expands/link_info_base_extension.rb, line 44
def make_params_for_cli(args)
  make_params(args[url_param_names.size])
end
make_uri_for_cli(args) click to toggle source
# File lib/idcf/cli/gem_ext/idcf/json_hyper_schema/expands/link_info_base_extension.rb, line 37
def make_uri_for_cli(args)
  param_size = url_param_names.size
  url_params = args.slice(0, param_size)
  params     = args[param_size]
  make_uri(url_params, params)
end
parent_titles(schema = nil) click to toggle source
# File lib/idcf/cli/gem_ext/idcf/json_hyper_schema/expands/link_info_base_extension.rb, line 48
def parent_titles(schema = nil)
  result = []
  if schema.present?
    parent_schema = schema.parent
    if parent_schema.present?
      result << parent_schema.title if parent_schema.title.present?
      result.concat(parent_titles(parent_schema))
    end
  else
    result << title
    result.concat(parent_titles(@data))
    result.reverse!
  end
  result
end
result_api_params(args, api_result, resource_id = nil) click to toggle source

result api params

@params args [Array] @params api_result [Hash] @params resource_id [String] @return [Array]

# File lib/idcf/cli/gem_ext/idcf/json_hyper_schema/expands/link_info_base_extension.rb, line 27
def result_api_params(args, api_result, resource_id = nil)
  return [] if @data.data['$result'].nil?
  arg    = Marshal.load(Marshal.dump(args))
  target = @data.data['$result']['params']
  target = target.nil? ? [] : target
  raise Idcf::Cli::Error::CliError, 'params is not Array' unless target.class == Array
  result = make_result_api_params(target, arg, api_result, resource_id)
  result
end
result_api_title() click to toggle source

result api link title

@return [String]

# File lib/idcf/cli/gem_ext/idcf/json_hyper_schema/expands/link_info_base_extension.rb, line 16
def result_api_title
  res = @data.data['$result']
  res && res['title'] ? res['title'] : ''
end

Protected Instance Methods

make_query_params(param) click to toggle source
# File lib/idcf/cli/gem_ext/idcf/json_hyper_schema/expands/link_info_base_extension.rb, line 127
def make_query_params(param)
  result = {}
  return result unless param.class == Hash
  query_param_names.each do |k|
    result[k] = param[k] if param.key?(k)
    reg       = Regexp.new("#{k}[\\.\\[].+")
    param.each_key do |pk|
      result[pk] = param[pk] if (reg =~ pk).present?
    end
  end
  result
end
make_result_api_params(target, args, api_result, resource_id) click to toggle source
# File lib/idcf/cli/gem_ext/idcf/json_hyper_schema/expands/link_info_base_extension.rb, line 66
def make_result_api_params(target, args, api_result, resource_id)
  case target
  when Hash
    result_api_hash(target, args, api_result, resource_id)
  when Array
    result_api_array(target, args, api_result, resource_id)
  when String
    result_api_str(target, args, api_result, resource_id)
  else
    target
  end
end
result_api_array(target, args, api_result, resource_id) click to toggle source
# File lib/idcf/cli/gem_ext/idcf/json_hyper_schema/expands/link_info_base_extension.rb, line 87
def result_api_array(target, args, api_result, resource_id)
  [].tap do |result|
    target.each do |v|
      result << make_result_api_params(v, args, api_result, resource_id)
    end
  end
end
result_api_hash(target, args, api_result, resource_id) click to toggle source
# File lib/idcf/cli/gem_ext/idcf/json_hyper_schema/expands/link_info_base_extension.rb, line 79
def result_api_hash(target, args, api_result, resource_id)
  {}.tap do |result|
    target.each do |k, v|
      result[k] = make_result_api_params(v, args, api_result, resource_id)
    end
  end
end
result_api_str(target, args, api_result, resource_id) click to toggle source
# File lib/idcf/cli/gem_ext/idcf/json_hyper_schema/expands/link_info_base_extension.rb, line 95
def result_api_str(target, args, api_result, resource_id)
  return resource_id if target == '#{resource_id}'
  result_api_str_regexp(target, args, api_result)
rescue Standarderror => e
  raise Idcf::Cli::Error::CliError, e.message
end
result_api_str_regexp(target, args, api_result) click to toggle source
# File lib/idcf/cli/gem_ext/idcf/json_hyper_schema/expands/link_info_base_extension.rb, line 102
def result_api_str_regexp(target, args, api_result)
  result = target
  case target
  when Regexp.new('\A#\{(.+)\}\Z')
    result = args[url_param_names.index(Regexp.last_match(1))]
  when Regexp.new('\Aresult\[(.*)\]\Z')
    result = result_api_str_result(api_result, Regexp.last_match(1))
  end
  result
end
result_api_str_result(data, path) click to toggle source
# File lib/idcf/cli/gem_ext/idcf/json_hyper_schema/expands/link_info_base_extension.rb, line 113
def result_api_str_result(data, path)
  result = data.deep_dup
  path.split('.').each do |k|
    case result
    when Array
      result = result[k.to_i]
    when Hash
      raise Idcf::Cli::Error::CliError, 'not found result key' unless result.key?(k)
      result = result[k]
    end
  end
  result
end