diff --git a/README.md b/README.md index 79545dc..9e0f456 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,8 @@ a string (`name`) and enum (`favoriteWord`): "service": "ExampleService", "function": "greet", "protocol": "Thrift::CompactProtocol", + "transport": "Thrift::FramedTransport", + "socket": "Thrift::Socket", "host": "localhost", "port": "9000", "args": { diff --git a/lib/scrimp.rb b/lib/scrimp.rb index 27905fe..aa3d2da 100644 --- a/lib/scrimp.rb +++ b/lib/scrimp.rb @@ -1,6 +1,8 @@ # coding: UTF-8 require 'thrift' +require 'scrimp/ssl_socket' +require 'scrimp/ssl_server_socket' require 'scrimp/version' require 'scrimp/json_thrift' require 'scrimp/thrift_util' diff --git a/lib/scrimp/app.rb b/lib/scrimp/app.rb index 8305cb9..259c17e 100644 --- a/lib/scrimp/app.rb +++ b/lib/scrimp/app.rb @@ -6,7 +6,7 @@ module Scrimp class App < Sinatra::Base set :static, true - set :public, File.expand_path('../public', __FILE__) + set :public_folder, File.expand_path('../public', __FILE__) set :views, File.expand_path('../views', __FILE__) set :haml, :format => :html5 @@ -55,6 +55,20 @@ class App < Sinatra::Base protocols.to_json end + get '/transports' do + transports = {'Thrift::FramedTransport'=>'Thrift::FramedTransport', + 'Thrift::BufferedTransport'=>'Thrift::BufferedTransport'} + content_type :json + transports.to_json + end + + get '/sockets' do + sockets = {'Thrift::Socket'=>'Thrift::Socket', + 'Thrift::SSLSocket'=>'Thrift::SSLSocket'} + content_type :json + sockets.to_json + end + get '/structs' do structs = {} ThriftUtil.all_structs.each do |struct| @@ -88,8 +102,9 @@ class App < Sinatra::Base end.compact begin - transport = Thrift::FramedTransport.new Thrift::Socket.new(invocation['host'], invocation['port']) - protocol_class = ThriftUtil.qualified_const invocation['protocol'] + socket = Object::const_get(invocation['socket']||'Thrift::Socket').new(invocation['host'], invocation['port']) + transport = Object::const_get(invocation['transport']||'Thrift::FramedTransport').new(socket) + protocol_class = ThriftUtil.qualified_const invocation['protocol']||'Thrift::CompactProtocol' protocol = protocol_class.new transport client = service_class.const_get('Client').new protocol transport.open diff --git a/lib/scrimp/public/main.coffee b/lib/scrimp/public/main.coffee index 8fa7cd4..fc73e73 100644 --- a/lib/scrimp/public/main.coffee +++ b/lib/scrimp/public/main.coffee @@ -4,6 +4,8 @@ default_request = -> request = service: (service for service of Scrimp.services)[0] protocol: (protocol for protocol of Scrimp.protocols)[0] + transport: (transport for transport of Scrimp.transports)[0] + socket: (socket for socket of Scrimp.sockets)[0] host: "localhost" port: 9000 args: {} @@ -22,8 +24,20 @@ load_structs = (data) -> load_protocols = (data) -> Scrimp.protocols = data for protocol of Scrimp.protocols - option = $('