Module: OasHanami

Defined in:
lib/oas_hanami.rb,
lib/oas_hanami/version.rb,
lib/oas_hanami/web/view.rb,
lib/oas_hanami/inspector.rb,
lib/oas_hanami/configuration.rb,
lib/oas_hanami/route_extractor.rb,
lib/oas_hanami/oas_route_builder.rb,
lib/oas_hanami/hanami_route_formatter.rb

Defined Under Namespace

Modules: Web Classes: Configuration, HanamiRouteFormatter, Inspector, OasRouteBuilder, RouteExtractor

Constant Summary collapse

VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.buildObject



22
23
24
25
26
27
28
29
30
# File 'lib/oas_hanami.rb', line 22

def build
  clear_cache
  OasCore.config = config

  host_routes = RouteExtractor.host_routes
  oas_source = config.source_oas_path ? read_source_oas_file : {}

  OasCore.build(host_routes, oas_source: oas_source)
end

.clear_cacheObject



40
41
42
43
44
45
# File 'lib/oas_hanami.rb', line 40

def clear_cache
  return if Hanami.env?(:production)

  MethodSource.clear_cache
  RouteExtractor.clear_cache
end

.configObject



36
37
38
# File 'lib/oas_hanami.rb', line 36

def config
  @config ||= Configuration.new
end

.configure {|config| ... } ⇒ Object

Yields:



32
33
34
# File 'lib/oas_hanami.rb', line 32

def configure
  yield config
end

.read_source_oas_fileObject



47
48
49
50
51
52
53
54
55
# File 'lib/oas_hanami.rb', line 47

def read_source_oas_file
  file_path = Hanami.app.root.join(config.source_oas_path)

  JSON.parse(File.read(file_path), symbolize_names: true)
rescue Errno::ENOENT => e
  raise "Failed to read source OAS file at #{file_path}: #{e.message}"
rescue JSON::ParserError => e
  raise "Failed to parse source OAS file at #{file_path}: #{e.message}"
end