Class: Praxis::ApiDefinition
- Inherits:
-
Object
- Object
- Praxis::ApiDefinition
- Extended by:
- Forwardable
- Includes:
- Singleton
- Defined in:
- lib/praxis/api_definition.rb
Instance Attribute Summary collapse
-
#global_info ⇒ Object
readonly
Returns the value of attribute global_info.
-
#infos ⇒ Object
readonly
Returns the value of attribute infos.
-
#responses ⇒ Object
readonly
Returns the value of attribute responses.
-
#traits ⇒ Object
readonly
Returns the value of attribute traits.
-
#versioning_scheme ⇒ Object
Returns the value of attribute versioning_scheme.
Class Method Summary collapse
Instance Method Summary collapse
- #describe ⇒ Object
-
#info(version = nil, &block) ⇒ Object
Setting info to the nil version, means setting it for all versions (if they don’t override them).
-
#initialize ⇒ ApiDefinition
constructor
A new instance of ApiDefinition.
- #response(name) ⇒ Object
- #response_template(name, &block) ⇒ Object
- #trait(name, &block) ⇒ Object
Constructor Details
#initialize ⇒ ApiDefinition
Returns a new instance of ApiDefinition.
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/praxis/api_definition.rb', line 23 def initialize @responses = {} @traits = {} @base_path = '' @global_info = ApiGeneralInfo.new @infos = Hash.new do |hash, version| hash[version] = ApiGeneralInfo.new(@global_info, version: version) end end |
Instance Attribute Details
#global_info ⇒ Object (readonly)
Returns the value of attribute global_info.
11 12 13 |
# File 'lib/praxis/api_definition.rb', line 11 def global_info @global_info end |
#infos ⇒ Object (readonly)
Returns the value of attribute infos.
11 12 13 |
# File 'lib/praxis/api_definition.rb', line 11 def infos @infos end |
#responses ⇒ Object (readonly)
Returns the value of attribute responses.
11 12 13 |
# File 'lib/praxis/api_definition.rb', line 11 def responses @responses end |
#traits ⇒ Object (readonly)
Returns the value of attribute traits.
11 12 13 |
# File 'lib/praxis/api_definition.rb', line 11 def traits @traits end |
#versioning_scheme ⇒ Object
Returns the value of attribute versioning_scheme.
13 14 15 |
# File 'lib/praxis/api_definition.rb', line 13 def versioning_scheme @versioning_scheme end |
Class Method Details
.define(&block) ⇒ Object
15 16 17 18 19 20 21 |
# File 'lib/praxis/api_definition.rb', line 15 def self.define(&block) if block.arity.zero? instance.instance_eval(&block) else yield(instance) end end |
Instance Method Details
#describe ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/praxis/api_definition.rb', line 66 def describe data = Hash.new do |hash, version| hash[version] = {} end data[:global][:info] = @global_info.describe # Fill in the "info" portion @infos.each do |version, info| data[version][:info] = info.describe end if traits.any? data[:traits] = {} traits.each do |name, trait| data[:traits][name] = trait.describe end end data end |
#info(version = nil, &block) ⇒ Object
Setting info to the nil version, means setting it for all versions (if they don’t override them)
52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/praxis/api_definition.rb', line 52 def info(version = nil, &block) if version.nil? if block_given? @global_info.instance_eval(&block) else @global_info end else i = @infos[version] i.instance_eval(&block) if block_given? i end end |
#response(name) ⇒ Object
39 40 41 42 43 |
# File 'lib/praxis/api_definition.rb', line 39 def response(name) @responses.fetch(name) do raise ArgumentError, "no response template defined with name #{name.inspect}. Are you forgetting to register it with ApiDefinition?" end end |
#response_template(name, &block) ⇒ Object
35 36 37 |
# File 'lib/praxis/api_definition.rb', line 35 def response_template(name, &block) @responses[name] = Praxis::ResponseTemplate.new(name, &block) end |
#trait(name, &block) ⇒ Object
45 46 47 48 49 |
# File 'lib/praxis/api_definition.rb', line 45 def trait(name, &block) raise Exceptions::InvalidTrait, "Overwriting a previous trait with the same name (#{name})" if traits.key? name traits[name] = Trait.new(&block) end |