module Route

Provides operations for parsing and building gRPC request paths.

Definitions

def self.parse(path)

Parse a gRPC request path into its service and method names.

Signature

parameter path String

The gRPC request path.

returns Array(String)

The service and method names.

raises ArgumentError

If the path does not contain valid protobuf service and method names.

Implementation

def self.parse(path)
	match = PATTERN.match(path) if path.is_a?(String)
	
	unless match
		raise ArgumentError, "Invalid gRPC route: #{path.inspect}"
	end
	
	[match[1], match[2]]
end

def self.build(service_name, method_name)

Build a gRPC request path from its service and method names.

Signature

parameter service_name String

The fully qualified service name.

parameter method_name String

The method name.

returns String

The gRPC request path.

raises ArgumentError

If either component is not a valid protobuf service or method name.

Implementation

def self.build(service_name, method_name)
	unless service_name.is_a?(String) && SERVICE_PATTERN.match?(service_name)
		raise ArgumentError, "Invalid gRPC service name: #{service_name.inspect}"
	end
	
	unless method_name.is_a?(String) && METHOD_PATTERN.match?(method_name)
		raise ArgumentError, "Invalid gRPC method name: #{method_name.inspect}"
	end
	
	"/#{service_name}/#{method_name}"
end