Sha256: a10e2e13d615f946f57ee19688cf714777ac9896874148f607022935431cc5c2
Contents?: true
Size: 1.5 KB
Versions: 3
Compression:
Stored size: 1.5 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) puts "- - - > #{_req.path}" _params = begin JSON.parse(_req.body) rescue _req.body end _result = begin JSON.parse(_resp.body) rescue {} end begin _api_path = File.join(@root, api_list[_req.path]) _result = eval(File.read(_api_path)) if File.exist?(_api_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 "#{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
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
doraemon-1.0.6 | lib/doraemon/proxy_server.rb |
doraemon-1.0.5 | lib/doraemon/proxy_server.rb |
doraemon-1.0.4 | lib/doraemon/proxy_server.rb |