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
# File lib/apipie/resource_description.rb, line 17 def initialize(controller, resource_name, dsl_data = nil, version = nil, &block) @_methods = ActiveSupport::OrderedHash.new @_params_args = [] @_errors_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
# File lib/apipie/resource_description.rb, line 49 def _version @_version || @_parent.try(:_version) || Apipie.configuration.default_version end
# File lib/apipie/resource_description.rb, line 53 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
# File lib/apipie/resource_description.rb, line 79 def api_url; "#{Apipie.api_base_url(_version)}#{@_path}"; end
# File lib/apipie/resource_description.rb, line 72 def doc_url crumbs = [] crumbs << _version if Apipie.configuration.version_in_url crumbs << @_id Apipie.full_url crumbs.join('/') end
# File lib/apipie/resource_description.rb, line 58 def method_description(method_name) @_methods[method_name.to_sym] end
# File lib/apipie/resource_description.rb, line 68 def method_descriptions @_methods.values end
# File lib/apipie/resource_description.rb, line 62 def remove_method_description(method_name) if @_methods.has_key?(method_name) @_methods.delete(method_name) end end
# File lib/apipie/resource_description.rb, line 81 def to_json(method_name = nil) methods = if method_name.blank? @_methods.collect { |key, method_description| method_description.to_json} else [@_methods[method_name.to_sym].to_json] end { :doc_url => doc_url, :api_url => api_url, :name => @_name, :short_description => @_short_description, :full_description => @_full_description, :version => _version, :formats => @_formats, :methods => methods } end
# File lib/apipie/resource_description.rb, line 32 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] if dsl_data[:app_info] Apipie.configuration.app_info[_version] = dsl_data[:app_info] end if dsl_data[:api_base_url] Apipie.configuration.api_base_url[_version] = dsl_data[:api_base_url] end end