Sha256: b826e9c1d3e0f3a9d3ace33e3939dbc63907ad8409da64f77f83405c9b6dec55
Contents?: true
Size: 1.29 KB
Versions: 7
Compression:
Stored size: 1.29 KB
Contents
require "rack" require "thin" require 'json' require 'uri' require_relative '../rule_engine' require_relative '../visitors/configuration_visitor' require_relative '../facades/configuration_page_facade' require_relative '../facades/configuration_file_facade' class LinterServer ConfigurationVisitor.GenerateIDs ConfigurationFileFacade.LoadConfigurations def call(env) req = Rack::Request.new(env) case req.path when "/configuration" if req.post? process_form(req) elsif req.get? configurations_page end end end def configurations_page configuration_page = ConfigurationPageFacade.AssemblePage return [200, { 'Content-Type' => 'text/html' }, [configuration_page]] end def process_form(req) new_conf = URI.decode_www_form(req.body.read) new_conf_hash = Hash[new_conf.map {|key, value| [key, value]}] begin ConfigurationPageFacade.ApplyConfigurations(new_conf_hash) ConfigurationFileFacade.SaveConfigurations rescue StandardError => error return [400, { 'Content-Type' => 'text/plain' }, ["Error: #{error.message}"]] end return [200, { 'Content-Type' => 'text/plain' }, ["Changes saved successfully"]] end def self.start(port) Rack::Handler::Thin.run(LinterServer.new, :Port => port) end end
Version data entries
7 entries across 7 versions & 1 rubygems