Class: ThreeScale::Core::UsageLimit

Inherits:
APIClient::Resource show all
Defined in:
lib/3scale/core/usage_limit.rb

Constant Summary collapse

PERIODS =
[:eternity, :year, :month, :week, :day, :hour, :minute].freeze

Class Method Summary collapse

Methods inherited from APIClient::Resource

#initialize

Methods included from APIClient::Operations

included

Methods included from APIClient::Support

included

Methods included from APIClient::Attributes

#attributes, #dirty?, included, #update_attributes

Constructor Details

This class inherits a constructor from ThreeScale::Core::APIClient::Resource

Class Method Details

.delete(service_id, plan_id, metric_id, period) ⇒ Object



34
35
36
# 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) ⇒ Object



15
16
17
18
# 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) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
# 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