module Twirp::ServiceDSL
Public Instance Methods
package(name)
click to toggle source
Configure service package name.
# File lib/twirp/service_dsl.rb, line 19 def package(name) @package = name.to_s end
package_name()
click to toggle source
Get configured package name as String. An empty value means that there's no package.
# File lib/twirp/service_dsl.rb, line 50 def package_name @package.to_s end
rpc(rpc_method, input_class, output_class, opts)
click to toggle source
Configure service rpc methods.
# File lib/twirp/service_dsl.rb, line 29 def rpc(rpc_method, input_class, output_class, opts) raise ArgumentError.new("rpc_method can not be empty") if rpc_method.to_s.empty? raise ArgumentError.new("input_class must be a Protobuf Message class") unless input_class.is_a?(Class) raise ArgumentError.new("output_class must be a Protobuf Message class") unless output_class.is_a?(Class) raise ArgumentError.new("opts[:ruby_method] is mandatory") unless opts && opts[:ruby_method] rpcdef = { rpc_method: rpc_method.to_sym, # as defined in the Proto file. input_class: input_class, # google/protobuf Message class to serialize the input (proto request). output_class: output_class, # google/protobuf Message class to serialize the output (proto response). ruby_method: opts[:ruby_method].to_sym, # method on the handler or client to handle this rpc requests. } @rpcs ||= {} @rpcs[rpc_method.to_s] = rpcdef rpc_define_method(rpcdef) if respond_to? :rpc_define_method # hook for the client to implement the methods on the class end
rpcs()
click to toggle source
Get raw definitions for rpc methods. This values are used as base env for handler methods.
# File lib/twirp/service_dsl.rb, line 69 def rpcs @rpcs || {} end
service(name)
click to toggle source
Configure service name.
# File lib/twirp/service_dsl.rb, line 24 def service(name) @service = name.to_s end
service_full_name()
click to toggle source
Service
name with package prefix, which should uniquelly identifiy the service, for example “example.v3.Haberdasher” for package “example.v3” and service “Haberdasher”. This can be used as a path prefix to route requests to the service, because a Twirp
URL is: “#{base_url}/#{service_full_name}/#{method]”
# File lib/twirp/service_dsl.rb, line 63 def service_full_name package_name.empty? ? service_name : "#{package_name}.#{service_name}" end
service_name()
click to toggle source
Service
name as String. Defaults to the class name.
# File lib/twirp/service_dsl.rb, line 55 def service_name (@service || self.name.split("::").last).to_s end