Sha256: 0fecb609d1172717069c6da529c071c3303d96641bbdb2c1573b1760bca5bda0
Contents?: true
Size: 1.2 KB
Versions: 4
Compression:
Stored size: 1.2 KB
Contents
require "rack" 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 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::WEBrick.run(LinterServer.new, :Port => port) end end
Version data entries
4 entries across 4 versions & 1 rubygems