Class: DaVinciCRDTestKit::CDSServicesDiscoveryHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/davinci_crd_test_kit/client/endpoints/cds_services_discovery_handler.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.callObject



3
4
5
# File 'lib/davinci_crd_test_kit/client/endpoints/cds_services_discovery_handler.rb', line 3

def self.call(...)
  new.call(...)
end

.cds_services(version = 'v2.0.1', prefetch_subset: false) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/davinci_crd_test_kit/client/endpoints/cds_services_discovery_handler.rb', line 7

def self.cds_services(version = 'v2.0.1', prefetch_subset: false)
  key = "#{version}_#{prefetch_subset}"
  cds_services_array[key] ||= begin
    filename = if prefetch_subset
                 "cds-services-prefetch-subset-#{version.gsub('.', '')}.json"
               else
                 "cds-services-#{version.gsub('.', '')}.json"
               end
    File.read(File.join(__dir__, '..', version, filename))
  end
end

.cds_services_arrayObject



19
20
21
# File 'lib/davinci_crd_test_kit/client/endpoints/cds_services_discovery_handler.rb', line 19

def self.cds_services_array
  @cds_services_array ||= {}
end

Instance Method Details

#call(env) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/davinci_crd_test_kit/client/endpoints/cds_services_discovery_handler.rb', line 23

def call(env)
  path_parts = env['PATH_INFO'].split('/')
  # /custom/<suite>/[prefetch-subset/]cds-services
  prefetch_subset = path_parts.include?('prefetch-subset')
  suite = path_parts.find { |p| p.start_with?('crd_client_') } || path_parts[-2]
  version_no_dots = suite.split('_')[2].presence || 'v201' # crd_client_<version>
  version = version_no_dots.sub(/\A(v\d)(\d)(\d)\z/, '\1.\2.\3')
  [200, { 'Content-Type' => 'application/json', 'Access-Control-Allow-Origin' => '*' },
   [self.class.cds_services(version, prefetch_subset:)]]
end