Sha256: 4bd6492c860b9dada1d6606c30781f191b70a32daae154cb12627cebd7cd040e

Contents?: true

Size: 1.65 KB

Versions: 4

Compression:

Stored size: 1.65 KB

Contents

module MxHero::API
  
  module MetadataLoader
    
    def initialize(data = {})
      super(data)
      load_metadata
    end

    private

    def load_metadata
      is_empty = metadata.nil? ||  metadata == '' || metadata == 'null' 
      #@metadata = JSON.parse(metadata) if metadata
      @metadata = is_empty ? nil : JSON.parse(metadata, symbolize_names: true)
    end

  end

  
  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

    include MetadataLoader

    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

  end

  

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

    include MetadataLoader

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

    def unlimited_use?
      max_rules_amount == Float::INFINITY
    end

  end


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

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mxhero-api-0.1.37 lib/resources/domain.rb
mxhero-api-0.1.36 lib/resources/domain.rb
mxhero-api-0.1.35 lib/resources/domain.rb
mxhero-api-0.1.34 lib/resources/domain.rb