Sha256: 1ccce4fdc52547d833fa7e6eaa1c826198024b2cddc88f1a7b48db577de6f785

Contents?: true

Size: 1.57 KB

Versions: 37

Compression:

Stored size: 1.57 KB

Contents

# frozen_string_literal: true

module Mutant
  module License
    class Subscription
      include Concord.new(:licensed)

      FORMAT = <<~'MESSAGE'
        %<subscription_name>s subscription:
        Licensed:
        %<licensed>s
      MESSAGE

      FAILURE_FORMAT = <<~'MESSAGE'
        Can not validate %<subscription_name>s license.
        Licensed:
        %<expected>s
        Present:
        %<actual>s
      MESSAGE

      # Load value into subscription
      #
      # @param [Object] value
      #
      # @return [Subscription]
      def self.load(world, value)
        {
          'com' => Commercial,
          'oss' => Opensource
        }.fetch(value.fetch('type'))
          .from_json(value.fetch('contents'))
          .call(world)
      end

      # Subscription self description
      #
      # @return [String]
      def description
        FORMAT % {
          licensed:          licensed.to_a.join("\n"),
          subscription_name: subscription_name
        }
      end

    private

      def failure(expected, actual)
        Either::Left.new(failure_message(expected, actual))
      end

      def success
        Either::Right.new(self)
      end

      def subscription_name
        self.class.name.split('::').last.downcase
      end

      def failure_message(expected, actual)
        FAILURE_FORMAT % {
          actual:            actual.any? ? actual.map(&:to_s).join("\n") : '[none]',
          expected:          expected.map(&:to_s).join("\n"),
          subscription_name: subscription_name
        }
      end
    end # Subscription
  end # License
end # Mutant

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
mutant-0.11.18 lib/mutant/license/subscription.rb
mutant-0.11.17 lib/mutant/license/subscription.rb
mutant-0.11.16 lib/mutant/license/subscription.rb
mutant-0.11.15 lib/mutant/license/subscription.rb
mutant-0.11.14 lib/mutant/license/subscription.rb
mutant-0.11.13 lib/mutant/license/subscription.rb
mutant-0.11.12 lib/mutant/license/subscription.rb
mutant-0.11.11 lib/mutant/license/subscription.rb
mutant-0.11.10 lib/mutant/license/subscription.rb
mutant-0.11.9 lib/mutant/license/subscription.rb
mutant-0.11.8 lib/mutant/license/subscription.rb
mutant-0.11.7 lib/mutant/license/subscription.rb
mutant-0.11.6 lib/mutant/license/subscription.rb
mutant-0.11.5 lib/mutant/license/subscription.rb
mutant-0.11.4 lib/mutant/license/subscription.rb
mutant-0.11.3 lib/mutant/license/subscription.rb
mutant-0.11.2 lib/mutant/license/subscription.rb
mutant-0.11.1 lib/mutant/license/subscription.rb
mutant-0.11.0 lib/mutant/license/subscription.rb
mutant-0.10.35 lib/mutant/license/subscription.rb