class JsonWorld::LinkDefinition

Constants

DEFAULT_HTTP_METHOD

Attributes

Public Class Methods

new(link_name: nil, **options) click to toggle source

@param [Symbol] link_name @param [Hash{Symbol => Object}] options

# File lib/json_world/link_definition.rb, line 10
def initialize(link_name: nil, **options)
  @options = options
  @link_name = link_name
end

Public Instance Methods

as_json_schema() click to toggle source

@todo @return [Hash]

# File lib/json_world/link_definition.rb, line 17
def as_json_schema
  {
    description: description,
    href: path,
    mediaType: media_type,
    method: http_method,
    rel: rel,
    schema: schema,
    targetSchema: target_schema,
    title: title,
  }.reject do |_key, value|
    value.nil? || value.empty?
  end
end

Private Instance Methods

description() click to toggle source

@return [String, nil]

# File lib/json_world/link_definition.rb, line 35
def description
  @options[:description]
end
http_method() click to toggle source

@note method is reserved by Kernel.#method ;( @return [String]

# File lib/json_world/link_definition.rb, line 41
def http_method
  @options[:method] || DEFAULT_HTTP_METHOD
end
media_type() click to toggle source

@return [String, nil]

# File lib/json_world/link_definition.rb, line 46
def media_type
  @options[:media_type]
end
path() click to toggle source

@return [String]

# File lib/json_world/link_definition.rb, line 51
def path
  @options[:path]
end
rel() click to toggle source

@return [String, nil]

# File lib/json_world/link_definition.rb, line 56
def rel
  @options[:rel]
end
schema() click to toggle source

@return [Hash{Symbol => Object}, nil]

# File lib/json_world/link_definition.rb, line 61
def schema
  if @options[:parameters]
    JsonWorld::PropertyDefinition.new(
      properties: @options[:parameters],
      property_name: :schema,
    ).as_json_schema
  end
end
target_schema() click to toggle source

@return [Hash{Symbol => Object}, nil]

# File lib/json_world/link_definition.rb, line 71
def target_schema
  if @options[:target_schema]
    JsonWorld::PropertyDefinition.new(
      properties: @options[:target_schema],
      property_name: :targetSchema,
    ).as_json_schema
  end
end
title() click to toggle source

@return [String]

# File lib/json_world/link_definition.rb, line 81
def title
  @options[:title] || @link_name.to_s
end