Sha256: 3598bafbaf2079a5d8156ba590975755301e4e4771f6c5925a62f73db566e73e

Contents?: true

Size: 1.33 KB

Versions: 9

Compression:

Stored size: 1.33 KB

Contents

module Factor
  module Runtime
    class ServiceAddress < Array
      def initialize(service_ref)
        if service_ref.is_a?(String)
          service_map = service_ref.split('::')
          raise ArgumentError, 'Address must not be empty' if service_ref.empty?
          raise ArgumentError, 'Address must contain at least one value' unless service_map.count > 0
          raise ArgumentError, 'Address must contain at least one value' unless service_map.all?{|i| !i.empty?}
          super service_map
        elsif service_ref.is_a?(ServiceAddress) || service_ref.is_a?(Array)
          raise ArgumentError, 'All elements in array must be a string' unless service_ref.all?{|i| i.is_a?(String)}
          super service_ref
        else
          raise ArgumentError, 'Address must be a String, Array, or ServiceAddress'
        end
      end

      def workflow?
        self.service == 'workflow'
      end

      def service
        self.first
      end

      def namespace
        raise ArgumentError, 'Address must contain at least two parts' unless self.count >= 2
        self[0..-2].map{|k| k.to_sym}
      end

      def id
        self.last
      end

      def to_s
        self.join('::')
      end

      def workflow_address
        workflow_service_map = self[1..-1]
        ServiceAddress.new workflow_service_map
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
factor-0.6.12 lib/runtime/service_address.rb
factor-0.6.11 lib/runtime/service_address.rb
factor-0.6.10 lib/runtime/service_address.rb
factor-0.6.9 lib/runtime/service_address.rb
factor-0.6.8 lib/runtime/service_address.rb
factor-0.6.7 lib/runtime/service_address.rb
factor-0.6.6 lib/runtime/service_address.rb
factor-0.6.5 lib/runtime/service_address.rb
factor-0.6.4 lib/runtime/service_address.rb