Class: Aries::Link
- Inherits:
-
Object
- Object
- Aries::Link
- Defined in:
- lib/aries/link.rb
Constant Summary collapse
- URL_REGEXP =
/\{\(#([%\/a-zA-Z0-9_-]*)\)\}/
Instance Attribute Summary collapse
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
Instance Method Summary collapse
-
#encode ⇒ String
Requrest encode type URL encode or JSON encode used in client.
- #has_params? ⇒ TrueClass, FalseClass
-
#href ⇒ String
Url decoded href string.
-
#http_method ⇒ String
Http request method.
-
#initialize(link, parent = nil) ⇒ Link
constructor
A new instance of Link.
- #inspect ⇒ Object
-
#method_name ⇒ String
Api client’s request method name.
-
#optional_params ⇒ Array<Aries::Param>
Optional requrest parameter.
- #params ⇒ Array<Aries::Param>
-
#pretty_href ⇒ String
Convert uri template to resource_name_action_name template.
-
#prop_params ⇒ Array<Aries::Param]
Array<Aries::Param].
-
#required_params ⇒ Array<Aries::Param>
Required request parameter.
-
#root_schema ⇒ Aries::Schema
Root schema of link.
- #title ⇒ String
- #url_params ⇒ Array<Aries::Param>
Constructor Details
#initialize(link, parent = nil) ⇒ Link
Returns a new instance of Link.
9 10 11 12 |
# File 'lib/aries/link.rb', line 9 def initialize link, parent = nil @link = link @parent = parent end |
Instance Attribute Details
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
6 7 8 |
# File 'lib/aries/link.rb', line 6 def parent @parent end |
Instance Method Details
#encode ⇒ String
Returns requrest encode type URL encode or JSON encode used in client.
69 70 71 72 73 74 75 76 |
# File 'lib/aries/link.rb', line 69 def encode case http_method when "GET" "URL" else "JSON" end end |
#has_params? ⇒ TrueClass, FalseClass
52 53 54 |
# File 'lib/aries/link.rb', line 52 def has_params? params.size > 0 end |
#href ⇒ String
Returns url decoded href string.
85 86 87 |
# File 'lib/aries/link.rb', line 85 def href URI.decode @link.href end |
#http_method ⇒ String
Returns http request method.
64 65 66 |
# File 'lib/aries/link.rb', line 64 def http_method @link.method.to_s.upcase end |
#inspect ⇒ Object
94 95 96 |
# File 'lib/aries/link.rb', line 94 def inspect return "#<Link title=#{title}>" end |
#method_name ⇒ String
Returns api client’s request method name.
59 60 61 |
# File 'lib/aries/link.rb', line 59 def method_name title.split.join('_').underscore end |
#optional_params ⇒ Array<Aries::Param>
Returns Optional requrest parameter.
24 25 26 |
# File 'lib/aries/link.rb', line 24 def optional_params params - required_params end |
#params ⇒ Array<Aries::Param>
29 30 31 |
# File 'lib/aries/link.rb', line 29 def params (prop_params + url_params).uniq end |
#pretty_href ⇒ String
Returns convert uri template to resource_name_action_name template.
79 80 81 82 |
# 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 ⇒ Array<Aries::Param]
Returns Array<Aries::Param].
34 35 36 37 38 39 40 41 42 |
# 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 ⇒ Array<Aries::Param>
Returns Required request parameter.
15 16 17 18 19 20 21 |
# 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 ⇒ Aries::Schema
Returns Root schema of link.
100 101 102 |
# File 'lib/aries/link.rb', line 100 def root_schema @parent.respond_to?(:parent) ? @parent.root_schema : @parent end |
#title ⇒ String
90 91 92 |
# File 'lib/aries/link.rb', line 90 def title @link.title end |
#url_params ⇒ Array<Aries::Param>
45 46 47 48 49 |
# 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 |