Class: GitlabInternalEventsCli::SchemaResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab_internal_events_cli/schema_resolver.rb

Instance Method Summary collapse

Constructor Details

#initialize(base_uri) ⇒ SchemaResolver

Returns a new instance of SchemaResolver.



5
6
7
# File 'lib/gitlab_internal_events_cli/schema_resolver.rb', line 5

def initialize(base_uri)
  @base_uri = base_uri
end

Instance Method Details

#call(uri) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/gitlab_internal_events_cli/schema_resolver.rb', line 9

def call(uri)
  full_url = uri.to_s.sub('json-schemer://', 'https://')

  unless full_url.start_with?('http')
    ref_path = uri.respond_to?(:path) ? uri.path.sub(%r{^/}, '') : uri.to_s
    full_url = URI.join(@base_uri, ref_path).to_s
  end

  schema_content = HttpCache.get(full_url)
  return nil unless schema_content

  JSON.parse(schema_content)
rescue StandardError
  nil
end