Sha256: 6392e76d2f07bd597b1d3e54807fc2ab27c3c1014870e4cc26ebce6d7de39a0f

Contents?: true

Size: 1.3 KB

Versions: 4

Compression:

Stored size: 1.3 KB

Contents

require_relative "message"

module Hexx
  class Service

    # Exception to be raised by invalid services.
    class Invalid < ::RuntimeError

      # An invalid service object with error messages.
      attr_reader :service

      # Initializes the exception.
      #
      # @example
      #     fail Hexx::Service::Invalid.new(service)
      #
      # Params:
      # +service+:: a Hexx::Service object containing error messages.
      #
      def initialize(service)
        @service = service
        fail ArgumentError unless self.service.is_a? Hexx::Service
      end

      # Returns a default text message for the exception.
      #
      # @example
      #     error = Hexx::Service::Invalid.new service
      #     error.message # => "Service invalid: #<Hexx::Service... >"
      #
      def message
        "Service invalid: #{ service.inspect }"
      end

      # Returns a list of <tt>Hexx::Service::Message</tt> messages of
      # +error+ type.
      #
      # @example
      #     error = Hexx::Service::Invalid.new service
      #     error.messages            # => [#<Hexx::Message... >, ...]
      #     error.messages.first.type # => "error"
      #
      def messages
        service.errors.values.flatten.map do |text|
          Message.new type: "error", text: text
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
hexx-2.2.0 lib/hexx/service/invalid.rb
hexx-2.1.0 lib/hexx/service/invalid.rb
hexx-2.0.2 lib/hexx/service/invalid.rb
hexx-2.0.1 lib/hexx/service/invalid.rb