Sha256: 75a4da067864c5e310c19f311b4109ce463bfbb447d51c1738e5c19dbfd62a48
Contents?: true
Size: 1.49 KB
Versions: 2
Compression:
Stored size: 1.49 KB
Contents
require 'ritm' require 'json' require 'cert' module Doraemon class ProxyServer def initialize(port=8000, root) @port = port @root = root end def start(api_list) Cert.generate_cert session = Ritm::Session.new port = @port session.configure do ssl_reverse_proxy.ca[:pem] = Cert.cert_path ssl_reverse_proxy.ca[:key] = Cert.key_path proxy[:bind_address] = '0.0.0.0' proxy[:bind_port] = port end session.on_response do |_req, _resp| if api_list.include?(_req.path) _params = nil begin _params = JSON.parse(_req.body) rescue _params = _req.body end _result = JSON.parse(_resp.body) begin _result = eval(File.read(File.join(@root, api_list[_req.path]))) rescue _result = { "code": -1, "msg": "#{_req.path} 处理错误" } end _resp.status = 200 _resp.body = _result.to_json _resp.header['content-length'] = _resp.body.bytesize _resp.header['content-type'] = 'application/json;charset=UTF-8' puts "- - - > #{_req.path}" puts "#{JSON.pretty_generate(_result)}\n\n" end end session.start # trap 'INT' do # session.shutdown # return # end # loop { gets } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
doraemon-1.0.1 | lib/doraemon/proxy_server.rb |
doraemon-1.0.0 | lib/doraemon/proxy_server.rb |