-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathhttp.rb
70 lines (56 loc) · 2.31 KB
/
http.rb
1
2
3
4
5
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# frozen_string_literal: true
require_relative '../controllers/index'
require_relative '../controllers/debug'
require_relative '../controllers/cartridges'
require 'newrelic_rpm' if ENV.fetch('NANO_BOTS_NEW_RELIC', nil).to_s == 'true'
module HTTP
def self.routes(route, request, response)
new_relic = ENV.fetch('NANO_BOTS_NEW_RELIC', nil).to_s == 'true'
ip = request.env['HTTP_X_FORWARDED_FOR']&.split(',')&.first || request.ip
environment = {
NANO_BOTS_END_USER: "#{ip}-#{request.get_header('HTTP_NANO_BOTS_END_USER')}"
}
cartridges_path = request.get_header('HTTP_NANO_BOTS_CARTRIDGES_PATH')
if ENV.fetch('ALLOW_CARTRIDGES_PATH_HEADER', nil).to_s == 'true' && !cartridges_path.to_s.strip.empty?
environment[:NANO_BOTS_CARTRIDGES_PATH] = cartridges_path
end
route.root do
NewRelic::Agent.set_transaction_name('GET/') if new_relic
IndexController.handler
end
route.get 'debug' do
NewRelic::Agent.set_transaction_name('GET/debug') if new_relic
DebugController.handler({ ip: }, request, environment)
end
route.get 'cartridges' do
NewRelic::Agent.set_transaction_name('GET/cartridges') if new_relic
result = CartridgesController.index(environment)
response.status = result[:status]
result[:body]
end
route.post 'cartridges/stream' do
NewRelic::Agent.set_transaction_name('POST/cartridges/stream') if new_relic
result = CartridgesController.create_stream(request.body.read, environment)
response.status = result[:status]
result[:body]
end
route.post 'cartridges/source' do
NewRelic::Agent.set_transaction_name('POST/cartridges/source') if new_relic
result = CartridgesController.source(request.body.read, environment)
response.status = result[:status]
result[:body]
end
route.get 'cartridges/stream', String do |id|
NewRelic::Agent.set_transaction_name('GET/cartridges/stream') if new_relic
result = CartridgesController.get_stream(id)
response.status = result[:status]
result[:body]
end
route.post 'cartridges' do
NewRelic::Agent.set_transaction_name('POST/cartridges') if new_relic
result = CartridgesController.run(request.body.read, environment)
response.status = result[:status]
result[:body]
end
end
end