jsonrpc-server 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/json_server.rb +33 -12
  2. metadata +3 -3
@@ -1,5 +1,14 @@
1
1
  module JSONServer
2
2
 
3
+ class Error < RuntimeError
4
+ attr_reader :code, :message, :data
5
+ def initialize obj = {}
6
+ @code = obj[:code] || -30000
7
+ @message = obj[:message] || "Runtime Error"
8
+ @data = obj[:data]
9
+ end
10
+ end
11
+
3
12
  def index
4
13
  begin
5
14
  data = ActiveSupport::JSON.decode request.body
@@ -31,19 +40,31 @@ module JSONServer
31
40
  return invalidRequest
32
41
  end
33
42
  result = { :jsonrpc => "2.0", :id => data["id"] }
34
- self.class.public_instance_methods.each { |method|
35
- if method.to_s == data["method"]
36
- if data["params"].class == Array
37
- arr = data["params"]
38
- elsif
39
- arr = self.method(data["method"]).parameters.collect { |pd|
40
- data["params"][pd[1].to_s]
41
- }
43
+ begin
44
+ self.class.public_instance_methods.each { |method|
45
+ if method.to_s == data["method"]
46
+ if data["params"].class == Array
47
+ arr = data["params"]
48
+ elsif
49
+ arr = self.method(data["method"]).parameters.collect { |pd|
50
+ data["params"][pd[1].to_s]
51
+ }
52
+ end
53
+ result["result"] = self.send(data["method"], *arr)
54
+ return result
42
55
  end
43
- result["result"] = self.send(data["method"], *arr)
44
- return result
45
- end
46
- }
56
+ }
57
+ rescue Error
58
+ result["code"] = $!.code
59
+ result["message"] = $!.message
60
+ result["data"] = $!.data
61
+ return result
62
+ rescue RuntimeError
63
+ result["code"] = -32000
64
+ result["message"] = $!.message
65
+ result["data"] = $!
66
+ return result
67
+ end
47
68
  return methodNotFound data["id"]
48
69
  end
49
70
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Dima Levchenko
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-05-27 00:00:00 +03:00
17
+ date: 2011-05-30 00:00:00 +03:00
18
18
  default_executable:
19
19
  dependencies: []
20
20