6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/twirp_rails/routes.rb', line 6
def mount_twirp(name, handler: nil, scope: 'twirp')
TwirpRails.handle_dev_error "mount twirp route #{name}" do
case name
when Class
raise 'handler param required when name is a class' unless handler&.is_a?(Class)
service_class = name
when String, Symbol
service_class = Helper.constantize_first "#{name}_service", name
unless service_class
msg = "mount_twirp of #{name} error. #{name.camelize}Service or #{name.camelize} class is not found"
raise TwirpRails::Error, msg
end
handler ||= "#{name}_handler".camelize.constantize
else
raise 'twirp service name required'
end
service = service_class.new(ErrorHandlingFactory.wrap_handler(handler.new))
Helper.run_create_hooks service
if scope
scope scope do
mount service, at: service.full_name
end
else
mount service, at: service.full_name
end
end
end
|