class Apipie::Application

Attributes

last_api_args[RW]
last_description[RW]
last_errors[RW]
last_examples[RW]
last_formats[RW]
last_params[RW]
last_see[RW]
method_descriptions[R]
resource_descriptions[R]

Public Class Methods

new() click to toggle source
# File lib/apipie/application.rb, line 18
def initialize
  super
  @method_descriptions = Hash.new
  @resource_descriptions = Hash.new
  clear_last
end

Public Instance Methods

[](resource_name, method_name = nil) click to toggle source
active_dsl?() click to toggle source

Is there a reason to interpret the DSL for this run? with specific setting for some environment there is no reason the dsl should be interpreted (e.g. no validations and doc from cache)

# File lib/apipie/application.rb, line 212
def active_dsl?
  Apipie.configuration.validate? || ! Apipie.configuration.use_cache? || Apipie.configuration.force_dsl?
end
add_example(example) click to toggle source
# File lib/apipie/application.rb, line 54
def add_example(example)
  @last_examples << example.strip_heredoc
end
add_method_description_args(method, path, desc) click to toggle source
# File lib/apipie/application.rb, line 50
def add_method_description_args(method, path, desc)
  @last_api_args << MethodDescription::Api.new(method, path, desc)
end
api_controllers_paths() click to toggle source
# File lib/apipie/application.rb, line 198
def api_controllers_paths
  Dir[Apipie.configuration.api_controllers_matcher]
end
apipie_provided?() click to toggle source

check if there is some saved description

# File lib/apipie/application.rb, line 59
def apipie_provided?
  true unless last_api_args.blank?
end
clear() click to toggle source

Clear all apis in this application.

# File lib/apipie/application.rb, line 99
def clear
  @resource_descriptions.clear
  @method_descriptions.clear
end
clear_last() click to toggle source

clear all saved data

# File lib/apipie/application.rb, line 105
def clear_last
  @last_api_args = []
  @last_errors = []
  @last_params = []
  @last_description = nil
  @last_examples = []
  @last_see = nil
  @last_formats = []
end
define_method_description(controller, method_name) click to toggle source

create new method api description

# File lib/apipie/application.rb, line 26
def define_method_description(controller, method_name)
  # create new or get existing api
  resource_name = get_resource_name(controller)
  key = [resource_name, method_name].join('#')
  # add method description key to resource description
  resource = define_resource_description(controller)

  method_description = Apipie::MethodDescription.new(method_name, resource, self)

  @method_descriptions[key] ||= method_description

  @method_descriptions[key]
end
define_resource_description(controller, &block) click to toggle source

create new resource api description

# File lib/apipie/application.rb, line 41
def define_resource_description(controller, &block)
  resource_name = get_resource_name(controller)

  # puts "defining api for #{resource_name}"

  @resource_descriptions[resource_name] ||=
    Apipie::ResourceDescription.new(controller, resource_name, &block)
end
get_api_args() click to toggle source
# File lib/apipie/application.rb, line 128
def get_api_args
  api_args = @last_api_args.clone
  @last_api_args.clear
  api_args
end
get_description() click to toggle source

Return the current description, clearing it in the process.

# File lib/apipie/application.rb, line 116
def get_description
  desc = @last_description
  @last_description = nil
  desc
end
get_errors() click to toggle source
# File lib/apipie/application.rb, line 122
def get_errors
  errors = @last_errors.clone
  @last_errors.clear
  errors
end
get_examples() click to toggle source
# File lib/apipie/application.rb, line 152
def get_examples
  examples = @last_examples.clone
  @last_examples.clear
  examples
end
get_formats() click to toggle source
# File lib/apipie/application.rb, line 140
def get_formats
  formats = @last_formats
  @last_formats = nil
  formats
end
get_method_description(resource_name, method_name = nil) click to toggle source

get api for given method

There are two ways how this method can be used: 1) Specify both parameters

resource_name: controller class or string with resource name (plural)
method_name: name of the method (string or symbol)

2) Specify only first parameter:

resource_name: string containing both resource and method name joined
with # (eg. "users#create")
# File lib/apipie/application.rb, line 72
def get_method_description(resource_name, method_name = nil)
  resource_name = get_resource_name(resource_name)
  key = method_name.blank? ? resource_name : [resource_name, method_name].join('#')
  @method_descriptions[key]
end
Also aliased as: []
get_params() click to toggle source
# File lib/apipie/application.rb, line 146
def get_params
  params = @last_params.clone
  @last_params.clear
  params
end
get_resource_description(resource_name) click to toggle source

get api for given resource

# File lib/apipie/application.rb, line 80
def get_resource_description(resource_name)
  resource_name = get_resource_name(resource_name)

  @resource_descriptions[resource_name]
end
get_see() click to toggle source
# File lib/apipie/application.rb, line 134
def get_see
  see = @last_see
  @last_see = nil
  see
end
recorded_examples() click to toggle source
# File lib/apipie/application.rb, line 158
def recorded_examples
  return @recorded_examples if @recorded_examples
  tape_file = File.join(Rails.root,"doc","apipie_examples.yml")
  if File.exists?(tape_file)
    @recorded_examples = YAML.load_file(tape_file)
  else
    @recorded_examples = {}
  end
  @recorded_examples
end
reload_documentation() click to toggle source
# File lib/apipie/application.rb, line 202
def reload_documentation
  reload_examples
  api_controllers_paths.each do |f|
    load_controller_from_file f
  end
end
reload_examples() click to toggle source
# File lib/apipie/application.rb, line 169
def reload_examples
  @recorded_examples = nil
end
remove_method_description(resource_name, method_name) click to toggle source
# File lib/apipie/application.rb, line 86
def remove_method_description(resource_name, method_name)
  resource_name = get_resource_name(resource_name)

  @method_descriptions.delete [resource_name, method_name].join('#')
end
remove_resource_description(resource_name) click to toggle source
# File lib/apipie/application.rb, line 92
def remove_resource_description(resource_name)
  resource_name = get_resource_name(resource_name)

  @resource_descriptions.delete resource_name
end
to_json(resource_name, method_name) click to toggle source
# File lib/apipie/application.rb, line 173
def to_json(resource_name, method_name)

  _resources = if resource_name.blank?
    # take just resources which have some methods because
    # we dont want to show eg ApplicationController as resource
    resource_descriptions.inject({}) do |result, (k,v)|
      result[k] = v.to_json unless v._methods.blank?
      result
    end
  else
    [@resource_descriptions[resource_name].to_json(method_name)]
  end

  {
    :docs => {
      :name => Apipie.configuration.app_name,
      :info => Apipie.configuration.app_info,
      :copyright => Apipie.configuration.copyright,
      :doc_url => Apipie.full_url(""),
      :api_url => Apipie.configuration.api_base_url,
      :resources => _resources
    }
  }
end