class ThreeScale::Core::UsageLimit

Constants

PERIODS

Public Class Methods

delete(service_id, plan_id, metric_id, period) click to toggle source
# File lib/3scale/core/usage_limit.rb, line 34
def self.delete(service_id, plan_id, metric_id, period)
  api_delete({}, uri: base_uri(service_id, plan_id, metric_id, period))
end
load_value(service_id, plan_id, metric_id, period) click to toggle source
# File lib/3scale/core/usage_limit.rb, line 15
def self.load_value(service_id, plan_id, metric_id, period)
  obj = api_read({}, uri: base_uri(service_id, plan_id, metric_id, period))
  obj and obj.public_send(period).to_i
end
save(attributes) click to toggle source
# File lib/3scale/core/usage_limit.rb, line 20
def self.save(attributes)
  # save currently DOES NOT support multiple periods at the same time,
  # since it would mean multiple API calls per call to this method.
  periodlst = PERIODS & attributes.keys
  raise UsageLimitInvalidPeriods.new(periodlst) unless periodlst.one?

  service_id, plan_id, metric_id = attributes.fetch(:service_id), attributes.fetch(:plan_id), attributes.fetch(:metric_id)
  period = periodlst.shift
  value = attributes[period]
  fixed_fields = { service_id: service_id, plan_id: plan_id, metric_id: metric_id }.freeze

  api_update(fixed_fields.merge({period => value}), uri: base_uri(service_id, plan_id, metric_id, period))
end

Private Class Methods

base_uri(service_id, plan_id, metric_id, period) click to toggle source
# File lib/3scale/core/usage_limit.rb, line 10
def self.base_uri(service_id, plan_id, metric_id, period)
  "#{default_uri}#{service_id}/plans/#{plan_id}/usagelimits/#{metric_id}/#{period}"
end