class Apipie::ResourceDescription
Resource description
version - api version (1) description path - relative path (/api/articles) methods - array of keys to Apipie.method_descriptions (array of Apipie::MethodDescription
) name - human readable alias of resource (Articles) id - resouce name formats - acceptable request/response format types headers - array of headers deprecated - boolean indicating if resource is deprecated
Attributes
_deprecated[R]
_errors_args[R]
_formats[R]
_full_description[R]
_headers[R]
_id[R]
_metadata[R]
_methods[R]
_name[R]
_params_args[R]
_parent[R]
_path[R]
_returns_args[R]
_short_description[R]
_tag_list_arg[R]
controller[R]
Public Class Methods
new(controller, resource_name, dsl_data = nil, version = nil, &block)
click to toggle source
# File lib/apipie/resource_description.rb, line 20 def initialize(controller, resource_name, dsl_data = nil, version = nil, &block) @_methods = ActiveSupport::OrderedHash.new @_params_args = [] @_errors_args = [] @_returns_args = [] @controller = controller @_id = resource_name @_version = version || Apipie.configuration.default_version @_name = @_id.humanize @_parent = Apipie.get_resource_description(controller.superclass, version) update_from_dsl_data(dsl_data) if dsl_data end
Public Instance Methods
_api_base_url()
click to toggle source
# File lib/apipie/resource_description.rb, line 60 def _api_base_url @_api_base_url || @_parent.try(:_api_base_url) || Apipie.api_base_url(_version) end
_version()
click to toggle source
# File lib/apipie/resource_description.rb, line 56 def _version @_version || @_parent.try(:_version) || Apipie.configuration.default_version end
add_method_description(method_description)
click to toggle source
# File lib/apipie/resource_description.rb, line 64 def add_method_description(method_description) Apipie.debug "@resource_descriptions[#{self._version}][#{self._name}]._methods[#{method_description.method}] = #{method_description}" @_methods[method_description.method.to_sym] = method_description end
api_url()
click to toggle source
# File lib/apipie/resource_description.rb, line 90 def api_url; "#{Apipie.api_base_url(_version)}#{@_path}"; end
doc_url()
click to toggle source
# File lib/apipie/resource_description.rb, line 83 def doc_url crumbs = [] crumbs << _version if Apipie.configuration.version_in_url crumbs << @_id Apipie.full_url crumbs.join('/') end
method_description(method_name)
click to toggle source
# File lib/apipie/resource_description.rb, line 69 def method_description(method_name) @_methods[method_name.to_sym] end
method_descriptions()
click to toggle source
# File lib/apipie/resource_description.rb, line 79 def method_descriptions @_methods.values end
remove_method_description(method_name)
click to toggle source
# File lib/apipie/resource_description.rb, line 73 def remove_method_description(method_name) if @_methods.has_key?(method_name) @_methods.delete(method_name) end end
to_json(method_name = nil, lang = nil)
click to toggle source
# File lib/apipie/resource_description.rb, line 96 def to_json(method_name = nil, lang = nil) if method_name && !valid_method_name?(method_name) raise "Method #{method_name} not found for resource #{_name}" end methods = if method_name.blank? @_methods.collect { |key, method_description| method_description.to_json(lang) } else [@_methods[method_name.to_sym].to_json(lang)] end { :doc_url => doc_url, :id => _id, :api_url => api_url, :name => @_name, :short_description => Apipie.app.translate(@_short_description, lang), :full_description => Apipie.app.translate(@_full_description, lang), :version => _version, :formats => @_formats, :metadata => @_metadata, :methods => methods, :headers => _headers, :deprecated => @_deprecated } end
update_from_dsl_data(dsl_data)
click to toggle source
# File lib/apipie/resource_description.rb, line 36 def update_from_dsl_data(dsl_data) @_name = dsl_data[:resource_name] if dsl_data[:resource_name] @_full_description = Apipie.markup_to_html(dsl_data[:description]) @_short_description = dsl_data[:short_description] @_path = dsl_data[:path] || "" @_formats = dsl_data[:formats] @_errors_args = dsl_data[:errors] @_params_args = dsl_data[:params] @_returns_args = dsl_data[:returns] @_tag_list_arg = dsl_data[:tag_list] @_metadata = dsl_data[:meta] @_api_base_url = dsl_data[:api_base_url] @_headers = dsl_data[:headers] @_deprecated = dsl_data[:deprecated] || false if dsl_data[:app_info] Apipie.configuration.app_info[_version] = dsl_data[:app_info] end end
valid_method_name?(method_name)
click to toggle source
# File lib/apipie/resource_description.rb, line 92 def valid_method_name?(method_name) @_methods.keys.map(&:to_s).include?(method_name.to_s) end