module ProtoPharm::StubComponents::FailureResponse

Public Instance Methods

to_fail() click to toggle source
# File lib/proto_pharm/stub_components/failure_response.rb, line 13
def to_fail
  to_fail_with
end
to_fail_with(code = :invalid_argument, message = "unknown cause", **metadata) click to toggle source

@param code [String, Symbol] A gRPC failure code, such as not_found or invalid_argument. Default: :invalid_argument @param message [String] A message to pass back with the exception @param metadata [Hash] A hash of metadata to be passed back with the exception. See {ProtoPharm::MetadataSerializers::Base.serialize}.

# File lib/proto_pharm/stub_components/failure_response.rb, line 9
def to_fail_with(code = :invalid_argument, message = "unknown cause", **metadata)
  to_raise(exception_class(code).new(message, metadata_serializer.serialize(code: code, message: message, **metadata)))
end

Private Instance Methods

exception_class(code) click to toggle source
# File lib/proto_pharm/stub_components/failure_response.rb, line 23
def exception_class(code)
  class_name = code.to_s.camelize

  (GRPC.const_get(class_name) if GRPC.const_defined?(class_name)).tap do |klass|
    raise ArgumentError, "'#{code}' is not a valid gRPC failure code" unless klass.present? && klass < GRPC::BadStatus
  end
end
metadata_serializer() click to toggle source
# File lib/proto_pharm/stub_components/failure_response.rb, line 19
def metadata_serializer
  Configuration.config.metadata_serializer
end