Module: LHS::Service::Endpoints
- Extended by:
- ActiveSupport::Concern
- Included in:
- LHS::Service
- Defined in:
- lib/lhs/concerns/service/endpoints.rb
Overview
An endpoint is an url that leads to a backend resource. A service can contain multiple endpoints. The endpoint that is used to request data is choosen based on the provided parameters.
Defined Under Namespace
Modules: ClassMethods
Instance Attribute Summary collapse
-
#endpoints ⇒ Object
Returns the value of attribute endpoints.
Instance Method Summary collapse
-
#compute_url!(params) ⇒ Object
Computes the url from params by identifiying endpoint and compiles it if necessary.
-
#find_endpoint(params = {}) ⇒ Object
Find an endpoint based on the provided parameters.
- #initialize ⇒ Object
-
#sanity_check(endpoint) ⇒ Object
Prevent clashing endpoints.
Instance Attribute Details
#endpoints ⇒ Object
Returns the value of attribute endpoints.
12 13 14 |
# File 'lib/lhs/concerns/service/endpoints.rb', line 12 def endpoints @endpoints end |
Instance Method Details
#compute_url!(params) ⇒ Object
Computes the url from params by identifiying endpoint and compiles it if necessary. Id in params is threaded in a special way.
57 58 59 60 61 62 |
# File 'lib/lhs/concerns/service/endpoints.rb', line 57 def compute_url!(params) endpoint = find_endpoint(params) url = endpoint.compile(params) endpoint.remove_interpolated_params!(params) url end |
#find_endpoint(params = {}) ⇒ Object
Find an endpoint based on the provided parameters. If no parameters are provided it finds the base endpoint otherwise it finds the endpoint that matches the parameters best.
42 43 44 45 46 |
# File 'lib/lhs/concerns/service/endpoints.rb', line 42 def find_endpoint(params = {}) endpoint = find_best_endpoint(params) if params && params.keys.count > 0 endpoint ||= find_base_endpoint endpoint end |
#initialize ⇒ Object
34 35 36 37 |
# File 'lib/lhs/concerns/service/endpoints.rb', line 34 def initialize self.endpoints = [] super end |
#sanity_check(endpoint) ⇒ Object
Prevent clashing endpoints.
49 50 51 52 |
# File 'lib/lhs/concerns/service/endpoints.rb', line 49 def sanity_check(endpoint) placeholders = endpoint.placeholders fail 'Clashing endpoints.' if endpoints.any? { |e| e.placeholders.sort == placeholders.sort } end |