Class: Aries::Link

Inherits:
Object
  • Object
show all
Defined in:
lib/aries/link.rb

Constant Summary collapse

URL_REGEXP =
/\{\(#([%\/a-zA-Z0-9_-]*)\)\}/

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(link, parent = nil) ⇒ Link

Returns a new instance of Link.

Parameters:

  • link (JsonSchema::Schema::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

#parentObject (readonly)

Returns the value of attribute parent.



6
7
8
# File 'lib/aries/link.rb', line 6

def parent
  @parent
end

Instance Method Details

#encodeString

Returns requrest encode type URL encode or JSON encode used in client.

Returns:

  • (String)

    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

Returns:

  • (TrueClass, FalseClass)


52
53
54
# File 'lib/aries/link.rb', line 52

def has_params?
  params.size > 0
end

#hrefString

Returns url decoded href string.

Returns:

  • (String)

    url decoded href string



85
86
87
# File 'lib/aries/link.rb', line 85

def href
  URI.decode @link.href
end

#http_methodString

Returns http request method.

Returns:

  • (String)

    http request method



64
65
66
# File 'lib/aries/link.rb', line 64

def http_method
  @link.method.to_s.upcase
end

#inspectObject



94
95
96
# File 'lib/aries/link.rb', line 94

def inspect
  return "#<Link title=#{title}>"
end

#method_nameString

Returns api client’s request method name.

Examples:

method_name #=> "list"

Returns:

  • (String)

    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_paramsArray<Aries::Param>

Returns Optional requrest parameter.

Returns:



24
25
26
# File 'lib/aries/link.rb', line 24

def optional_params
  params - required_params
end

#paramsArray<Aries::Param>

Returns:



29
30
31
# File 'lib/aries/link.rb', line 29

def params
  (prop_params + url_params).uniq
end

#pretty_hrefString

Returns convert uri template to resource_name_action_name template.

Returns:

  • (String)

    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_paramsArray<Aries::Param]

Returns Array<Aries::Param].

Returns:



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_paramsArray<Aries::Param>

Returns Required request parameter.

Returns:



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_schemaAries::Schema

Returns Root schema of link.

Returns:



100
101
102
# File 'lib/aries/link.rb', line 100

def root_schema
  @parent.respond_to?(:parent) ? @parent.root_schema : @parent
end

#titleString

Returns:

  • (String)


90
91
92
# File 'lib/aries/link.rb', line 90

def title
  @link.title
end

#url_paramsArray<Aries::Param>

Returns:



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