class Swarker::Readers::ServiceReader

Constants

DEFAULT_PORT
DEFINITIONS_DIR
PATHS_DIR
SERVICE_EXT

Attributes

dir[R]
services[R]
subtree[R]

Public Class Methods

new(dir, subtree = nil) click to toggle source
# File lib/swarker/readers/service_reader.rb, line 14
def initialize(dir, subtree = nil)
  @dir     = dir
  @subtree = subtree

  @services = read_services
end

Private Instance Methods

definitions() click to toggle source
# File lib/swarker/readers/service_reader.rb, line 35
def definitions
  @definitions ||= DefinitionsReader.new(definitions_dir).definitions
end
definitions_dir() click to toggle source
# File lib/swarker/readers/service_reader.rb, line 39
def definitions_dir
  File.join(dir, DEFINITIONS_DIR)
end
hosts() click to toggle source
# File lib/swarker/readers/service_reader.rb, line 51
def hosts
  original_schema[:domains].values.collect do |domain|
    uri = URI(domain)
    uri.port == DEFAULT_PORT ? uri.host : "#{uri.host}:#{uri.port}"
  end
end
local_service() click to toggle source
# File lib/swarker/readers/service_reader.rb, line 31
def local_service
  Swarker::Service.new(nil, original_schema, definitions, paths)
end
original_schema() click to toggle source
# File lib/swarker/readers/service_reader.rb, line 58
def original_schema
  @original_schema ||= HashWithIndifferentAccess.new(YAML.load_file(service_file))
end
paths() click to toggle source
# File lib/swarker/readers/service_reader.rb, line 43
def paths
  @paths ||= PathsMerger.new(PathsReader.new(paths_dir).paths).paths
end
paths_dir() click to toggle source
# File lib/swarker/readers/service_reader.rb, line 47
def paths_dir
  File.join(dir, subtree || PATHS_DIR)
end
read_services() click to toggle source
# File lib/swarker/readers/service_reader.rb, line 25
def read_services
  hosts.collect do |host|
    Swarker::Service.new(host, original_schema, definitions, paths)
  end.presence || [local_service]
end
service_file() click to toggle source
# File lib/swarker/readers/service_reader.rb, line 62
def service_file
  # Assumes that it can be only one service file in service directory
  Dir["#{dir}/*#{SERVICE_EXT}"].first
end