class Apipie::MethodDescription

Attributes

apis[R]
examples[R]
formats[R]
full_description[R]
method[R]
resource[R]
see[R]

Public Class Methods

new(method, resource, app) click to toggle source
# File lib/apipie/method_description.rb, line 28
def initialize(method, resource, app)
  @method = method
  @resource = resource

  @apis = app.get_api_args
  @see = app.get_see
  @formats = app.get_formats

  desc = app.get_description || ''
  @full_description = Apipie.markup_to_html(desc)
  @errors = app.get_errors
  @params_ordered = app.get_params
  @examples = app.get_examples

  @examples += load_recorded_examples

  parent = @resource.controller.superclass
  if parent != ActionController::Base
    @parent_resource = parent.controller_name
  end
  @resource.add_method(id)
end

Public Instance Methods

doc_url() click to toggle source
# File lib/apipie/method_description.rb, line 89
def doc_url
  Apipie.full_url("#{@resource._id}/#{@method}")
end
errors() click to toggle source
# File lib/apipie/method_description.rb, line 76
def errors
  return @merged_errors if @merged_errors
  @merged_errors = []
  if @resource
    # exclude overwritten parent errors
    @merged_errors = @resource._errors_ordered.find_all do |err|
      !@errors.any? { |e| e.code == err.code }
    end
  end
  @merged_errors.concat(@errors)
  return @merged_errors
end
id() click to toggle source
# File lib/apipie/method_description.rb, line 51
def id
  "#{resource._id}##{method}"
end
method_apis_to_json() click to toggle source
# File lib/apipie/method_description.rb, line 93
def method_apis_to_json
  @apis.each.collect do |api|
    {
      :api_url => api.api_url,
      :http_method => api.http_method.to_s,
      :short_description => api.short_description
    }
  end
end
params() click to toggle source
# File lib/apipie/method_description.rb, line 55
def params
  params_ordered.reduce({}) { |h,p| h[p.name] = p; h }
end
params_ordered() click to toggle source
# File lib/apipie/method_description.rb, line 59
def params_ordered
  all_params = []
  # get params from parent resource description
  if @parent_resource
    parent = Apipie.get_resource_description(@parent_resource)
    merge_params(all_params, parent._params_ordered) if parent
  end

  # get params from actual resource description
  if @resource
    merge_params(all_params, resource._params_ordered)
  end

  merge_params(all_params, @params_ordered)
  all_params.find_all(&:validator)
end
see_url() click to toggle source
# File lib/apipie/method_description.rb, line 103
def see_url
  if @see
    method_description = Apipie[@see]
    if method_description.nil?
      raise ArgumentError.new("Method #{@see} referenced in 'see' does not exist.")
    end
    method_description.doc_url
  end
end
to_json() click to toggle source
# File lib/apipie/method_description.rb, line 121
def to_json
  {
    :doc_url => doc_url,
    :name => @method,
    :apis => method_apis_to_json,
    :formats => formats,
    :full_description => @full_description,
    :errors => errors.map(&:to_json),
    :params => params_ordered.map(&:to_json).flatten,
    :examples => @examples,
    :see => @see,
    :see_url => see_url
  }
end