Module: Apipie::DSL::Common
- Included in:
- Concern, Controller, ResourceDescriptionDsl
- Defined in:
- lib/apipie/dsl_definition.rb
Instance Method Summary collapse
- #_apipie_define_validators(description) ⇒ Object
- #api_versions(*versions) ⇒ Object (also: #api_version)
-
#desc(description) ⇒ Object
(also: #description, #full_description)
Describe the next method.
-
#document(path) ⇒ Object
describe next method with document in given path in convension, these doc located under “#Rails.root/doc” Example: document “hello_world.md” def hello_world puts “hello world” end.
-
#error(code_or_options, desc = nil, options = {}) ⇒ Object
Describe possible errors.
-
#formats(formats) ⇒ Object
Describe available request/response formats.
-
#meta(meta) ⇒ Object
Describe additional metadata.
Instance Method Details
#_apipie_define_validators(description) ⇒ Object
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 |
# File 'lib/apipie/dsl_definition.rb', line 191 def _apipie_define_validators(description) # redefine method only if validation is turned on if description && Apipie.configuration.validate == true old_method = instance_method(description.method) # @todo we should use before_filter define_method(description.method) do |*args| if Apipie.configuration.validate_presence? description.params.each do |_, param| # check if required parameters are present raise ParamMissing.new(param.name) if param.required && !params.has_key?(param.name) end end if Apipie.configuration.validate_value? description.params.each do |_, param| # params validations param.validate(params[:"#{param.name}"]) if params.has_key?(param.name) end end if Apipie.configuration.process_value? @api_params = {} description.params.each do |_, param| # params processing @api_params[param.as] = param.process_value(params[:"#{param.name}"]) if params.has_key?(param.name) end end # run the original method code old_method.bind(self).call(*args) end end end |
#api_versions(*versions) ⇒ Object Also known as: api_version
125 126 127 |
# File 'lib/apipie/dsl_definition.rb', line 125 def api_versions(*versions) _apipie_dsl_data[:api_versions].concat(versions) end |
#desc(description) ⇒ Object Also known as: description, full_description
Describe the next method.
Example:
desc "print hello world"
def hello_world
puts "hello world"
end
138 139 140 141 142 143 144 |
# File 'lib/apipie/dsl_definition.rb', line 138 def desc(description) #:doc: return unless Apipie.active_dsl? if _apipie_dsl_data[:description] raise "Double method description." end _apipie_dsl_data[:description] = description end |
#document(path) ⇒ Object
describe next method with document in given path in convension, these doc located under “#Rails.root/doc” Example: document “hello_world.md” def hello_world
puts "hello world"
end
155 156 157 158 |
# File 'lib/apipie/dsl_definition.rb', line 155 def document path content = File.open(File.join(Rails.root, Apipie.configuration.doc_path, path)).read desc content end |
#error(code_or_options, desc = nil, options = {}) ⇒ Object
Describe possible errors
Example:
error :desc => "speaker is sleeping", :code => 500, :meta => [:some, :more, :data]
error 500, "speaker is sleeping"
def hello_world
return 500 if self.speaker.sleeping?
puts "hello world"
end
186 187 188 189 |
# File 'lib/apipie/dsl_definition.rb', line 186 def error(, desc=nil, ={}) #:doc: return unless Apipie.active_dsl? _apipie_dsl_data[:errors] << [, desc, ] end |
#formats(formats) ⇒ Object
Describe available request/response formats
formats ['json', 'jsonp', 'xml']
163 164 165 166 |
# File 'lib/apipie/dsl_definition.rb', line 163 def formats(formats) #:doc: return unless Apipie.active_dsl? _apipie_dsl_data[:formats] = formats end |
#meta(meta) ⇒ Object
Describe additional metadata
:author => { :name => 'John', :surname => 'Doe' }
171 172 173 |
# File 'lib/apipie/dsl_definition.rb', line 171 def () #:doc: _apipie_dsl_data[:meta] = end |