class ThreeScaleToolbox::RemoteCache

Attributes

backend_methods_cache[R]
backend_metrics_cache[R]
methods_cache[R]
metrics_cache[R]
subject[R]

Public Class Methods

new(subject) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 6
def initialize(subject)
  @subject = subject
  # Metrics and methods cache data
  @metrics_cache = {}
  # methods cache data
  @methods_cache = {}
  # Backend Metrics and methods cache data
  @backend_metrics_cache = {}
  # Backend methods cache data
  @backend_methods_cache = {}
end

Public Instance Methods

create_backend_method(backend_id, metric_id, attributes) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 114
def create_backend_method(backend_id, metric_id, attributes)
  subject.create_backend_method(backend_id, metric_id, attributes).tap do |method_attrs|
    unless method_attrs.respond_to?(:has_key?) && !method_attrs['errors'].nil?
      backend_metrics_cache.delete(backend_id)
      backend_methods_cache.delete(method_cache_key(backend_id, metric_id))
    end
  end
end
create_backend_metric(backend_id, attributes) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 96
def create_backend_metric(backend_id, attributes)
  subject.create_backend_metric(backend_id, attributes).tap do |metric_attrs|
    backend_metrics_cache.delete(backend_id) unless metric_attrs.respond_to?(:has_key?) && !metric_attrs['errors'].nil?
  end
end
create_method(service_id, metric_id, attributes) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 61
def create_method(service_id, metric_id, attributes)
  subject.create_method(service_id, metric_id, attributes).tap do |method_attrs|
    metrics_cache.delete(service_id) unless method_attrs.respond_to?(:has_key?) && !method_attrs['errors'].nil?
    methods_cache.delete(method_cache_key(service_id, metric_id)) unless method_attrs.respond_to?(:has_key?) && !method_attrs['errors'].nil?
  end
end
create_metric(service_id, attributes) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 35
def create_metric(service_id, attributes)
  subject.create_metric(service_id, attributes).tap do |metric_attrs|
    metrics_cache.delete(service_id) unless metric_attrs.respond_to?(:has_key?) && !metric_attrs['errors'].nil?
  end
end
delete_backend_method(backend_id, metric_id, method_id) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 123
def delete_backend_method(backend_id, metric_id, method_id)
  subject.delete_backend_method(backend_id, metric_id, method_id).tap do |_|
    backend_metrics_cache.delete(backend_id)
    backend_methods_cache.delete(method_cache_key(backend_id, metric_id))
  end
end
delete_backend_metric(backend_id, metric_id) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 108
def delete_backend_metric(backend_id, metric_id)
  subject.delete_backend_metric(backend_id, metric_id).tap do |_|
    backend_metrics_cache.delete(backend_id)
  end
end
delete_method(service_id, parent_id, id) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 68
def delete_method(service_id, parent_id, id)
  subject.delete_method(service_id, parent_id, id).tap do |_|
    metrics_cache.delete(service_id)
    methods_cache.delete(method_cache_key(service_id, parent_id))
  end
end
delete_metric(service_id, metric_id) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 47
def delete_metric(service_id, metric_id)
  subject.delete_metric(service_id, metric_id).tap do |_|
    metrics_cache.delete(service_id)
  end
end
list_backend_methods(backend_id, metric_id) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 87
def list_backend_methods(backend_id, metric_id)
  key = method_cache_key(backend_id, metric_id)
  return backend_methods_cache[key] if backend_methods_cache.has_key? key

  subject.list_backend_methods(backend_id, metric_id).tap do |methods|
    backend_methods_cache[key] = methods unless methods.respond_to?(:has_key?) && !methods['errors'].nil?
  end
end
list_backend_metrics(backend_id) click to toggle source

Backends

# File lib/3scale_toolbox/remote_cache.rb, line 79
def list_backend_metrics(backend_id)
  return backend_metrics_cache[backend_id] if backend_metrics_cache.has_key? backend_id

  subject.list_backend_metrics(backend_id).tap do |metrics|
    backend_metrics_cache[backend_id] = metrics unless metrics.respond_to?(:has_key?) && !metrics['errors'].nil?
  end
end
list_methods(service_id, metric_id) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 26
def list_methods(service_id, metric_id)
  key = method_cache_key(service_id, metric_id)
  return methods_cache[key] if methods_cache.has_key? key

  subject.list_methods(service_id, metric_id).tap do |methods|
    methods_cache[key] = methods unless methods.respond_to?(:has_key?) && !methods['errors'].nil?
  end
end
list_metrics(service_id) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 18
def list_metrics(service_id)
  return metrics_cache[service_id] if metrics_cache.has_key? service_id

  subject.list_metrics(service_id).tap do |metrics|
    metrics_cache[service_id] = metrics unless metrics.respond_to?(:has_key?) && !metrics['errors'].nil?
  end
end
method_missing(name, *args) click to toggle source

Generic methods

# File lib/3scale_toolbox/remote_cache.rb, line 143
def method_missing(name, *args)
  # Correct delegation https://eregon.me/blog/2021/02/13/correct-delegation-in-ruby-2-27-3.html
  @subject.public_send(name, *args)
end
public_send(name, *args) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 149
def public_send(name, *args)
  method_missing(name, *args)
end
respond_to_missing?(method_name, include_private = false) click to toggle source
Calls superclass method
# File lib/3scale_toolbox/remote_cache.rb, line 153
def respond_to_missing?(method_name, include_private = false)
  super
end
update_backend_method(backend_id, metric_id, method_id, attributes) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 130
def update_backend_method(backend_id, metric_id, method_id, attributes)
  subject.update_backend_method(backend_id, metric_id, method_id, attributes).tap do |method_attrs|
    unless method_attrs.respond_to?(:has_key?) && !method_attrs['errors'].nil?
      backend_metrics_cache.delete(backend_id)
      backend_methods_cache.delete(method_cache_key(backend_id, metric_id))
    end
  end
end
update_backend_metric(backend_id, metric_id, attributes) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 102
def update_backend_metric(backend_id, metric_id, attributes)
  subject.update_backend_metric(backend_id, metric_id, attributes).tap do |metric_attrs|
    backend_metrics_cache.delete(backend_id) unless metric_attrs.respond_to?(:has_key?) && !metric_attrs['errors'].nil?
  end
end
update_method(service_id, parent_id, id, attributes) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 53
def update_method(service_id, parent_id, id, attributes)
  subject.update_method(service_id, parent_id, id, attributes).tap do |method_attrs|
    metrics_cache.delete(service_id) unless method_attrs.respond_to?(:has_key?) && !method_attrs['errors'].nil?
    methods_cache.delete(method_cache_key(service_id, parent_id)) unless method_attrs.respond_to?(:has_key?) && !method_attrs['errors'].nil?
  end
end
update_metric(service_id, metric_id, attributes) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 41
def update_metric(service_id, metric_id, attributes)
  subject.update_metric(service_id, metric_id, attributes).tap do |metric_attrs|
    metrics_cache.delete(service_id) unless metric_attrs.respond_to?(:has_key?) && !metric_attrs['errors'].nil?
  end
end

Private Instance Methods

method_cache_key(id, metric_id) click to toggle source
# File lib/3scale_toolbox/remote_cache.rb, line 159
def method_cache_key(id, metric_id)
  "#{id}#{metric_id}"
end