Sha256: b011a5d1c5dbcdb909455012ec5f0ced91e1ffd715bbdebda58d4ed9550677e6

Contents?: true

Size: 1.13 KB

Versions: 5

Compression:

Stored size: 1.13 KB

Contents

module RestPack::Service
  class Command < Mutations::Command
    attr_accessor :response

    def run
      @response = Response.new

      begin
        init
        mutation = super

        if mutation.errors
          mutation.errors.message.each do |error|
            @response.add_error(error[0], error[1].gsub(error[0].capitalize, ''))
          end

          @response.status ||= :unprocessable_entity
        else
          @response.status ||= :ok
        end

        if @response.status == :ok
          @response.result = mutation.result if mutation.result
        end
      rescue Exception => e
        puts "---COMMAND EXCEPTION---"
        puts e.message #TODO: GJ: logging
        puts "-----------------------"

        @response.add_error(:base, 'Service Error')
        @response.status = :internal_service_error
      end

      @response
    end

    def init
    end

    def status(status)
      @response.status = status
    end

    def valid?
      !has_errors?
    end

    def service_error(message)
      field_error :base, message
    end

    def field_error(key, message)
      add_error key, key, message
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
restpack_service-0.0.42 lib/restpack_service/command.rb
restpack_service-0.0.41 lib/restpack_service/command.rb
restpack_service-0.0.40 lib/restpack_service/command.rb
restpack_service-0.0.39 lib/restpack_service/command.rb
restpack_service-0.0.38 lib/restpack_service/command.rb