Class: Interpol::Endpoint
- Inherits:
-
Object
- Object
- Interpol::Endpoint
- Includes:
- HashFetcher
- Defined in:
- lib/interpol/endpoint.rb
Overview
Represents an endpoint. Instances of this class are constructed based on the endpoint definitions in the YAML files.
Instance Attribute Summary collapse
-
#method ⇒ Object
readonly
Returns the value of attribute method.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#route ⇒ Object
readonly
Returns the value of attribute route.
Instance Method Summary collapse
- #available_request_versions ⇒ Object
- #available_response_versions ⇒ Object
- #definitions ⇒ Object
- #find_definition(version, message_type, &block) ⇒ Object
- #find_definition!(version, message_type) ⇒ Object
- #find_example_for!(version, message_type) ⇒ Object
- #find_example_status_code_for!(version) ⇒ Object
-
#initialize(endpoint_hash) ⇒ Endpoint
constructor
A new instance of Endpoint.
- #route_matches?(path) ⇒ Boolean
Methods included from HashFetcher
Constructor Details
#initialize(endpoint_hash) ⇒ Endpoint
Returns a new instance of Endpoint.
44 45 46 47 48 49 50 51 52 |
# File 'lib/interpol/endpoint.rb', line 44 def initialize(endpoint_hash) @name = fetch_from(endpoint_hash, 'name') @route = fetch_from(endpoint_hash, 'route') @method = fetch_from(endpoint_hash, 'method').downcase.to_sym @definitions_hash, @all_definitions = extract_definitions_from(endpoint_hash) validate_name! end |
Instance Attribute Details
#method ⇒ Object (readonly)
Returns the value of attribute method.
42 43 44 |
# File 'lib/interpol/endpoint.rb', line 42 def method @method end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
42 43 44 |
# File 'lib/interpol/endpoint.rb', line 42 def name @name end |
#route ⇒ Object (readonly)
Returns the value of attribute route.
42 43 44 |
# File 'lib/interpol/endpoint.rb', line 42 def route @route end |
Instance Method Details
#available_request_versions ⇒ Object
74 75 76 |
# File 'lib/interpol/endpoint.rb', line 74 def available_request_versions available_versions_matching &:request? end |
#available_response_versions ⇒ Object
78 79 80 |
# File 'lib/interpol/endpoint.rb', line 78 def available_response_versions available_versions_matching &:response? end |
#definitions ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/interpol/endpoint.rb', line 82 def definitions # sort all requests before all responses # sort higher version numbers before lower version numbers @sorted_definitions ||= @all_definitions.sort do |x, y| if x. == y. y.version <=> x.version else x. <=> y. end end end |
#find_definition(version, message_type, &block) ⇒ Object
62 63 64 |
# File 'lib/interpol/endpoint.rb', line 62 def find_definition(version, , &block) @definitions_hash.fetch([, version], &block) end |
#find_definition!(version, message_type) ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/interpol/endpoint.rb', line 54 def find_definition!(version, ) find_definition(version, ) do = "No definition found for #{name} endpoint for version #{version}" << " and message_type #{}" raise NoEndpointDefinitionFoundError.new() end end |
#find_example_for!(version, message_type) ⇒ Object
66 67 68 |
# File 'lib/interpol/endpoint.rb', line 66 def find_example_for!(version, ) find_definition!(version, ).first.examples.first end |
#find_example_status_code_for!(version) ⇒ Object
70 71 72 |
# File 'lib/interpol/endpoint.rb', line 70 def find_example_status_code_for!(version) find_definition!(version, 'response').first.example_status_code end |
#route_matches?(path) ⇒ Boolean
94 95 96 |
# File 'lib/interpol/endpoint.rb', line 94 def route_matches?(path) path =~ route_regex end |