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
|
# File 'lib/cors/ui/cors_config_reader.rb', line 4
def self.fetch_all_resources
cors_middleware = Rails.application.config.middleware.detect do |m|
m.klass == Rack::Cors
end
return [] unless cors_middleware
middleware_instance = cors_middleware.build(Rails.application)
all_resources_blocks = middleware_instance.instance_variable_get(:@all_resources)
configs = []
all_resources_blocks.each do |resources_block|
origins = resources_block.instance_variable_get(:@origins)
public_resources = resources_block.instance_variable_get(:@public_resources)
resources_block.instance_variable_get(:@resources).each do |resource|
configs << {
origins: process_origins(origins),
path: resource.instance_variable_get(:@path),
methods: process_value(resource.instance_variable_get(:@methods)),
headers: process_value(resource.instance_variable_get(:@headers)),
expose: process_value(resource.instance_variable_get(:@expose)).present? ? process_value(resource.instance_variable_get(:@expose)) : "None",
max_age: resource.instance_variable_get(:@max_age),
credentials: resource.instance_variable_get(:@credentials),
if_condition: resource.instance_variable_get(:@if_proc).present? ? "Custom Condition" : "None",
public: public_resources || resource.instance_variable_get(:@public_resource)
}
end
end
configs
rescue => e
Rails.logger.error "Error fetching CORS config: #{e.message}"
[]
end
|