Class: ThreeScaleToolbox::Entities::PricingRule

Inherits:
Object
  • Object
show all
Includes:
CRD::PricingRuleSerializer
Defined in:
lib/3scale_toolbox/entities/pricing_rule.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from CRD::PricingRuleSerializer

#metric_system_name, #to_cr

Constructor Details

#initialize(id:, plan:, metric_id:, attrs:) ⇒ PricingRule

Returns a new instance of PricingRule.



19
20
21
22
23
24
25
# File 'lib/3scale_toolbox/entities/pricing_rule.rb', line 19

def initialize(id:, plan:, metric_id:, attrs:)
  @id = id.to_i
  @plan = plan
  @remote = plan.remote
  @metric_id = metric_id
  @attrs = attrs
end

Instance Attribute Details

#attrsObject (readonly)

Returns the value of attribute attrs.



17
18
19
# File 'lib/3scale_toolbox/entities/pricing_rule.rb', line 17

def attrs
  @attrs
end

#idObject (readonly)

Returns the value of attribute id.



17
18
19
# File 'lib/3scale_toolbox/entities/pricing_rule.rb', line 17

def id
  @id
end

#metric_idObject (readonly)

Returns the value of attribute metric_id.



17
18
19
# File 'lib/3scale_toolbox/entities/pricing_rule.rb', line 17

def metric_id
  @metric_id
end

#planObject (readonly)

Returns the value of attribute plan.



17
18
19
# File 'lib/3scale_toolbox/entities/pricing_rule.rb', line 17

def plan
  @plan
end

#remoteObject (readonly)

Returns the value of attribute remote.



17
18
19
# File 'lib/3scale_toolbox/entities/pricing_rule.rb', line 17

def remote
  @remote
end

Class Method Details

.create(plan:, metric_id:, attrs:) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/3scale_toolbox/entities/pricing_rule.rb', line 7

def create(plan:, metric_id:, attrs:)
  resp_attrs = plan.remote.create_pricingrule plan.id, metric_id, attrs
  if (errors = resp_attrs['errors'])
    raise ThreeScaleToolbox::ThreeScaleApiError.new('Pricing rule has not been created', errors)
  end

  new(id: resp_attrs.fetch('id'), plan: plan, metric_id: metric_id, attrs: resp_attrs)
end

Instance Method Details

#cost_per_unitObject



27
28
29
# File 'lib/3scale_toolbox/entities/pricing_rule.rb', line 27

def cost_per_unit
  attrs['cost_per_unit'].to_f
end

#deleteObject



47
48
49
# File 'lib/3scale_toolbox/entities/pricing_rule.rb', line 47

def delete
  remote.delete_application_plan_pricingrule plan.id, metric_id, id
end


39
40
41
# File 'lib/3scale_toolbox/entities/pricing_rule.rb', line 39

def links
  attrs['links'] || []
end

#maxObject



35
36
37
# File 'lib/3scale_toolbox/entities/pricing_rule.rb', line 35

def max
  attrs['max']
end


43
44
45
# File 'lib/3scale_toolbox/entities/pricing_rule.rb', line 43

def metric_link
  links.find { |link| link['rel'] == 'metric' }
end

#minObject



31
32
33
# File 'lib/3scale_toolbox/entities/pricing_rule.rb', line 31

def min
  attrs['min']
end