class Aries::Link
Constants
- URL_REGEXP
Attributes
parent[R]
Public Class Methods
new(link, parent = nil)
click to toggle source
@param link [JsonSchema::Schema::Link]
# File lib/aries/link.rb, line 9 def initialize link, parent = nil @link = link @parent = parent end
Public Instance Methods
encode()
click to toggle source
@return [String] requrest encode type URL encode or JSON encode used in client
# File lib/aries/link.rb, line 69 def encode case http_method when "GET" "URL" else "JSON" end end
has_params?()
click to toggle source
@return [TrueClass, FalseClass]
# File lib/aries/link.rb, line 52 def has_params? params.size > 0 end
href()
click to toggle source
@return [String] url decoded href string
# File lib/aries/link.rb, line 85 def href URI.decode @link.href end
http_method()
click to toggle source
@return [String] http request method
# File lib/aries/link.rb, line 64 def http_method @link.method.to_s.upcase end
inspect()
click to toggle source
# File lib/aries/link.rb, line 94 def inspect return "#<Link title=#{title}>" end
method_name()
click to toggle source
@return [String] api client’s request method name @example
method_name #=> "list"
# File lib/aries/link.rb, line 59 def method_name title.split.join('_').underscore end
optional_params()
click to toggle source
@return [Array<Aries::Param>] Optional requrest parameter
# File lib/aries/link.rb, line 24 def optional_params params - required_params end
params()
click to toggle source
@return [Array<Aries::Param>]
# File lib/aries/link.rb, line 29 def params (prop_params + url_params).uniq end
pretty_href()
click to toggle source
@return [String] convert uri template to {resource_name}_{action_name} template
# File lib/aries/link.rb, line 79 def pretty_href href.gsub(URL_REGEXP){|n| "{" + n.scan(/definitions\/([a-zA-Z0-9\-\_]+)/) .map{|v| v[0].split('-').join('_') }.join('_').camelize(:lower) + "}" } end
prop_params()
click to toggle source
@return [Array<Aries::Param]
# File lib/aries/link.rb, line 34 def prop_params @prop_params ||= if @link.schema && @link.schema.properties @link.schema.properties.map do |name, definition| Param.new name, definition, self, type: :prop end else [] end end
required_params()
click to toggle source
@return [Array<Aries::Param>] Required request parameter
# File lib/aries/link.rb, line 15 def required_params if @link.schema && @link.schema.required && params params.select{|param| @link.schema.required.include? param.name } + url_params else url_params end end
root_schema()
click to toggle source
@return [Aries::Schema] Root schema of link
# File lib/aries/link.rb, line 100 def root_schema @parent.respond_to?(:parent) ? @parent.root_schema : @parent end
title()
click to toggle source
@return [String]
# File lib/aries/link.rb, line 90 def title @link.title end
url_params()
click to toggle source
@return [Array<Aries::Param>]
# File lib/aries/link.rb, line 45 def url_params @url_params ||= href.scan(URL_REGEXP).flatten.map do |param| Param.new param.split('/').last, root_schema.property_by(param), self, type: :url end end