class Idcf::JsonHyperSchema::Expands::LinkInfoBase
Link Info Base
json schema v4
Constants
- BIND_PARAMS_REGEXP
- FULL_HREF_REGEXP
- PARAMS_REGEXP
- QUERY_PARAMS_REGEXP
Attributes
data[R]
Public Class Methods
new(data)
click to toggle source
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 13 def initialize(data) @data = data end
Public Instance Methods
description()
click to toggle source
description
@return String
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 20 def description @data.description.nil? ? '' : @data.description end
href()
click to toggle source
href string
@return String
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 48 def href href_str = @data.href return '' if href_str.nil? l = [] href_str.split('/').each do |v| next if v.empty? l << v.gsub(PARAMS_REGEXP, '%s').gsub(QUERY_PARAMS_REGEXP, '') end href_head = href_str =~ FULL_HREF_REGEXP ? "#{l.shift}/" : base_href "#{href_head}/#{l.join('/')}" end
make_params(args)
click to toggle source
make params The price of the rest except for a query parameter
@param args @return Hash
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 130 def make_params(args) {}.tap do |result| param = args.deep_dup next unless param.class == Hash param = param.stringify_keys make_query_params(args).each_key do |qk| param.delete(qk) end properties.each_key do |pk| result[pk] = param[pk] if param.key?(pk) end end end
make_uri(url_params, params, host = nil)
click to toggle source
make uri
@param url_params [Array] @param params [Hash] @param host [String] @return String
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 115 def make_uri(url_params, params, host = nil) uri = URI(make_url(url_params, host)) query_params = [] [uri.query, make_query_params(params).to_param].each do |param| query_params << param if param.present? end uri.query = query_params.join('&') uri.to_s end
method()
click to toggle source
method
@return String
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 34 def method @data.method.nil? ? 'get' : @data.method.to_s.downcase end
method?(val)
click to toggle source
is_method
@return String
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 41 def method?(val) method == val.to_s.downcase end
properties()
click to toggle source
properties
@return Hash
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 94 def properties d = @data.schema return {} if d.nil? || d.properties.nil? d.properties.deep_dup end
query_param_names()
click to toggle source
http query params ex) /hoge/{id}/{sec}{?name} : [“name”]
@return Array
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 79 def query_param_names result = [].tap do |list| href = @data.href next if href.nil? params = href =~ QUERY_PARAMS_REGEXP next if params.nil? list.concat(Regexp.last_match(1).split(',')) end result.concat(properties.keys) if method?('get') result.uniq end
required()
click to toggle source
required
@return Array
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 103 def required d = @data.schema return [] if d.nil? || d.required.nil? d.required.deep_dup end
title()
click to toggle source
title
@return String
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 27 def title @data.title.nil? ? '' : @data.title end
url_param_names()
click to toggle source
url params ex) /hoge/{id}/{sec}{?name} : [“id”, “sec”]
@return Array
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 64 def url_param_names [].tap do |result| href = @data.href next if href.nil? href.split('/').each do |v| str = url_param_str(v) result << str unless str.empty? end end end
Protected Instance Methods
base_href()
click to toggle source
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 176 def base_href list = [] parent_base_urls(@data.parent).each do |base| list << base.gsub(%r{\A/+}, '').gsub(%r{\Z/+}, '') break if base =~ FULL_HREF_REGEXP end list.reverse.join('/') end
make_query_params(param)
click to toggle source
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 157 def make_query_params(param) {}.tap do |result| next unless param.class == Hash query_param_names.each do |k| result[k] = param[k] if param.key?(k) end end end
make_url(args, host = nil)
click to toggle source
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 146 def make_url(args, host = nil) result = href r_params = [] url_param_names.each_index do |index| r_params << CGI.escape(args[index]) end result = result % r_params unless r_params.empty? result = URI.join(host, result).to_s unless host.nil? result end
parent_base_urls(schema)
click to toggle source
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 185 def parent_base_urls(schema) [].tap do |result| next if schema.nil? result << schema.data['base'] unless schema.data['base'].nil? result.concat(parent_base_urls(schema.parent)) end end
url_param_name(name)
click to toggle source
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 193 def url_param_name(name) return nil if name[0] == '?' return name unless name =~ BIND_PARAMS_REGEXP name.split('/').pop end
url_param_str(piece)
click to toggle source
# File lib/idcf/json_hyper_schema/expands/link_info_base.rb, line 166 def url_param_str(piece) return '' unless piece =~ PARAMS_REGEXP (1..2).each do |num| next if Regexp.last_match(num).nil? p_name = url_param_name(Regexp.last_match(num)) return p_name unless p_name.nil? end '' end