Sha256: 2acd1dd11f42969c5667eda828fd3c1e1682c034736ad8fa67c771993387bb8c

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 KB

Contents

module MxHero::API

  class Domain < Resource

    attributes :domain, :server,
      :aliases, :features, :cos

    attribute :creation_date, map: 'creationDate', date: true
    attribute :update_date, map: 'updateDate', date: true
    attribute :cos_last_change, map: 'cosLastChange', date: true
    attribute :source
    attribute :metadata

    def initialize(data = {})
      super(data)
      load_features(features)
      load_cos(cos)
      load_metadata
    end

    def change_to_trial
      if cos.type == 'free'
        cos.type = 'trial'
      end
    end

    private

    def load_cos(cos)
      @cos = Cos.new cos
    end

    def load_features(features)
      @features = features.map { |feature| Feature.new feature }
    end

    def load_metadata
      @metadata = JSON.parse(metadata) if metadata
    end

  end


  class Feature < Resource
    attribute :component, map: 'feature'
    attributes :created, :updated, :metadata
    attribute :max_rules_amount, map: 'maxRulesAmount'

    def initialize(data = {})
      super(data)
      if max_rules_amount == 0 || max_rules_amount.nil?
        @max_rules_amount = Float::INFINITY
      end
      load_metadata
    end

    def unlimited_use?
      max_rules_amount == Float::INFINITY
    end

    private

    def load_metadata
      @metadata = JSON.parse(metadata, symbolize_names: true) if metadata
    end

  end


  class Cos < Resource
    attribute :type, map: 'cos'
    attribute :edition
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mxhero-api-0.1.33 lib/resources/domain.rb