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 = $('