lib/apicraft/web/router.rb
# frozen_string_literal: true module Apicraft module Web # Managing routes and view paths module Router WEB_ROOT = File.expand_path( "#{File.dirname(__FILE__)}/../../../web" ) IMAGES_DIR = "#{WEB_ROOT}/assets/images" def self.routes @routes ||= { "/": { action: :render_erb, view_path: "#{WEB_ROOT}/views/index.erb" }, "/swaggerdoc": { action: :render_erb, view_path: "#{WEB_ROOT}/views/swaggerdoc.erb" }, "/redoc": { action: :render_erb, view_path: "#{WEB_ROOT}/views/redoc.erb" }, "/rapidoc": { action: :render_erb, view_path: "#{WEB_ROOT}/views/rapidoc.erb" }, "/assets/images/thumb.png": { action: :images, view_path: "#{IMAGES_DIR}/apicraft_thumb.png" }, "/assets/images/logo.png": { action: :images, view_path: "#{IMAGES_DIR}/apicraft.png" } }.with_indifferent_access end def self.add(path, view_path) routes[path] = { action: :contract, view_path: view_path } end def self.load_response!(_method, path) Actions.send( routes[path][:action], routes[path][:view_path] ) end def self.namespace=(namespace) @namespace = namespace end def self.namespace @namespace end def self.contract_urls contract_keys = routes.select do |_k, v| v[:action] == :contract end.keys contract_keys.map do |k| "#{Router.namespace}#{k}" end end end end end