Module: LHS::Record::Endpoints::ClassMethods

Defined in:
lib/lhs/concerns/record/endpoints.rb

Instance Method Summary collapse

Instance Method Details

#compute_url(params, url = nil) ⇒ Object



61
62
63
64
# File 'lib/lhs/concerns/record/endpoints.rb', line 61

def compute_url(params, url = nil)
  find_endpoint(params, url)
    .compile(params)
end

#compute_url!(params) ⇒ Object

Computes the url from params by identifiying endpoint and compiles it if necessary.



54
55
56
57
58
59
# File 'lib/lhs/concerns/record/endpoints.rb', line 54

def compute_url!(params)
  endpoint = find_endpoint(params)
  url = endpoint.compile(params)
  endpoint.remove_interpolated_params!(params)
  url
end

#endpoint(url, options = nil) ⇒ Object

Adds the endpoint to the list of endpoints.



24
25
26
27
28
29
30
31
# File 'lib/lhs/concerns/record/endpoints.rb', line 24

def endpoint(url, options = nil)
  self.endpoints = endpoints.clone
  validates_deprecation_check!(options)
  endpoint = LHC::Endpoint.new(url, options)
  endpoints.push(endpoint)
  LHS::Record::Endpoints.all ||= {}
  LHS::Record::Endpoints.all[url] ||= self
end

#find_endpoint(params = {}, url = nil) ⇒ 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.



44
45
46
47
48
49
50
# File 'lib/lhs/concerns/record/endpoints.rb', line 44

def find_endpoint(params = {}, url = nil)
  endpoint = find_best_endpoint(params) if params && params.keys.count > 0
  endpoint ||= find_endpoint_by_url(url) if url.present?
  endpoint ||= LHC::Endpoint.new(url) if url.present?
  endpoint ||= find_base_endpoint
  endpoint
end

#for_url(url) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/lhs/concerns/record/endpoints.rb', line 33

def for_url(url)
  return unless url
  _template, record = LHS::Record::Endpoints.all.dup.detect do |template, _|
    LHC::Endpoint.match?(url, template)
  end
  record
end