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