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(*args) ⇒ Object
Describe possible errors.
-
#formats(formats) ⇒ Object
Describe available request/response formats.
Instance Method Details
#_apipie_define_validators(description) ⇒ Object
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 |
# File 'lib/apipie/dsl_definition.rb', line 183 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) 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 # run the original method code old_method.bind(self).call(*args) end end end |
#api_versions(*versions) ⇒ Object Also known as: api_version
124 125 126 |
# File 'lib/apipie/dsl_definition.rb', line 124 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
137 138 139 140 141 142 143 |
# File 'lib/apipie/dsl_definition.rb', line 137 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
154 155 156 157 |
# File 'lib/apipie/dsl_definition.rb', line 154 def document path content = File.open(File.join(Rails.root, Apipie.configuration.doc_path, path)).read desc content end |
#error(*args) ⇒ Object
Describe possible errors
Example:
error :desc => "speaker is sleeping", :code => 500
error 500, "speaker is sleeping"
def hello_world
return 500 if self.speaker.sleeping?
puts "hello world"
end
178 179 180 181 |
# File 'lib/apipie/dsl_definition.rb', line 178 def error(*args) #:doc: return unless Apipie.active_dsl? _apipie_dsl_data[:errors] << args end |
#formats(formats) ⇒ Object
Describe available request/response formats
formats ['json', 'jsonp', 'xml']
162 163 164 165 |
# File 'lib/apipie/dsl_definition.rb', line 162 def formats(formats) #:doc: return unless Apipie.active_dsl? _apipie_dsl_data[:formats] = formats end |