gwt_rpc 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/gwt_rpc.gemspec +3 -3
- data/lib/gwt_rpc/base_extensions/date.rb +0 -1
- data/lib/gwt_rpc/base_extensions/float.rb +1 -3
- data/lib/gwt_rpc/client.rb +8 -1
- data/lib/gwt_rpc/request.rb +5 -1
- data/lib/gwt_rpc/response.rb +1 -1
- data/lib/gwt_rpc/response/reader.rb +16 -1
- metadata +48 -97
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/gwt_rpc.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{gwt_rpc}
|
8
|
-
s.version = "0.0
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Andrew Carpenter"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-06-15}
|
13
13
|
s.description = %q{Spider Google Web Toolkit sites using ruby}
|
14
14
|
s.email = %q{andrew.main@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -65,7 +65,7 @@ Gem::Specification.new do |s|
|
|
65
65
|
s.homepage = %q{http://github.com/andrewcarpenter/gwt_rpc}
|
66
66
|
s.licenses = ["MIT"]
|
67
67
|
s.require_paths = ["lib"]
|
68
|
-
s.rubygems_version = %q{1.
|
68
|
+
s.rubygems_version = %q{1.6.2}
|
69
69
|
s.summary = %q{Ruby Google Web Toolkit client}
|
70
70
|
s.test_files = [
|
71
71
|
"spec/gwt_rpc/base_extensions/array_spec.rb",
|
data/lib/gwt_rpc/client.rb
CHANGED
@@ -13,7 +13,14 @@ class GwtRpc::Client
|
|
13
13
|
@js_url
|
14
14
|
end
|
15
15
|
|
16
|
-
|
16
|
+
def self.gwt_permutation(permutation = nil)
|
17
|
+
if permutation
|
18
|
+
@gwt_permutation = permutation
|
19
|
+
end
|
20
|
+
@gwt_permutation
|
21
|
+
end
|
22
|
+
|
23
|
+
delegate :domain, :js_url, :gwt_permutation, :to => "self.class"
|
17
24
|
|
18
25
|
def self.map_classes(mapping)
|
19
26
|
@class_map ||= {}
|
data/lib/gwt_rpc/request.rb
CHANGED
@@ -11,7 +11,11 @@ class GwtRpc::Request
|
|
11
11
|
begin
|
12
12
|
response = Typhoeus::Request.post(url,
|
13
13
|
:body => body,
|
14
|
-
:headers => {
|
14
|
+
:headers => {
|
15
|
+
'Content-Type' => "text/x-gwt-rpc; charset=utf-8",
|
16
|
+
'X-GWT-Module-Base' => @client.js_url,
|
17
|
+
'X-GWT-Permutation' => @client.gwt_permutation,
|
18
|
+
},
|
15
19
|
:timeout => 1000,
|
16
20
|
:cache_timeout => 60)
|
17
21
|
return GwtRpc::Response.new(@client, response).content
|
data/lib/gwt_rpc/response.rb
CHANGED
@@ -8,7 +8,7 @@ class GwtRpc::Response
|
|
8
8
|
@raw_response = raw_response
|
9
9
|
|
10
10
|
raise GwtRpc::Error::NoResponse.new("Error: no response to request") if @raw_response.code == 0
|
11
|
-
raise GwtRpc::Error::ServerError.new("Error: status code #{@raw_response.code} not 200") if @raw_response.code != 200
|
11
|
+
raise GwtRpc::Error::ServerError.new("Error: status code #{@raw_response.code} not 200; body is #{@raw_response.body}") if @raw_response.code != 200
|
12
12
|
raise GwtRpc::Error::ServerError.new("Error: #{@raw_response.body}") if @raw_response.body !~ /^\/\/OK/
|
13
13
|
end
|
14
14
|
|
@@ -4,7 +4,8 @@ class GwtRpc::Response::Reader
|
|
4
4
|
attr_reader :version, :string_table, :data, :objects
|
5
5
|
def initialize(client, json_body)
|
6
6
|
@client = client
|
7
|
-
|
7
|
+
true_json = demangle_json_body(json_body)
|
8
|
+
(@version, placeholder, @string_table, *@data) = JSON.parse(true_json).reverse
|
8
9
|
@max_prior_string_location = 0
|
9
10
|
@objects = []
|
10
11
|
end
|
@@ -34,6 +35,7 @@ class GwtRpc::Response::Reader
|
|
34
35
|
int = read_int
|
35
36
|
|
36
37
|
if int < 0
|
38
|
+
puts "reading obj reference (#{int})" if DEBUG
|
37
39
|
obj = @objects[-1 - int]
|
38
40
|
# if int == -11
|
39
41
|
# puts obj.inspect
|
@@ -58,6 +60,7 @@ class GwtRpc::Response::Reader
|
|
58
60
|
raise "unknown java class '#{java_class}'"
|
59
61
|
end
|
60
62
|
elsif int == 0
|
63
|
+
puts "reading obj nil (0)" if DEBUG
|
61
64
|
obj = nil
|
62
65
|
end
|
63
66
|
obj
|
@@ -72,4 +75,16 @@ class GwtRpc::Response::Reader
|
|
72
75
|
|
73
76
|
html
|
74
77
|
end
|
78
|
+
|
79
|
+
def demangle_json_body(faux_json)
|
80
|
+
if faux_json.match(/^\[(.+),\[(.+)\],0,7\]$/)
|
81
|
+
data = $1
|
82
|
+
string_table = $2
|
83
|
+
data.gsub!(/'/,'"')
|
84
|
+
|
85
|
+
"[#{data},[#{string_table}],0,7]"
|
86
|
+
else
|
87
|
+
raise "can't demangle"
|
88
|
+
end
|
89
|
+
end
|
75
90
|
end
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gwt_rpc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 29
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 1
|
10
|
-
version: 0.0.1
|
5
|
+
version: 0.1.0
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Andrew Carpenter
|
@@ -15,171 +10,130 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-
|
13
|
+
date: 2011-06-15 00:00:00 -07:00
|
19
14
|
default_executable:
|
20
15
|
dependencies:
|
21
16
|
- !ruby/object:Gem::Dependency
|
22
|
-
prerelease: false
|
23
17
|
name: typhoeus
|
24
|
-
|
25
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
19
|
none: false
|
27
20
|
requirements:
|
28
21
|
- - ">="
|
29
22
|
- !ruby/object:Gem::Version
|
30
|
-
hash: 3
|
31
|
-
segments:
|
32
|
-
- 0
|
33
23
|
version: "0"
|
34
|
-
|
35
|
-
- !ruby/object:Gem::Dependency
|
24
|
+
type: :runtime
|
36
25
|
prerelease: false
|
26
|
+
version_requirements: *id001
|
27
|
+
- !ruby/object:Gem::Dependency
|
37
28
|
name: activesupport
|
38
|
-
|
39
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
30
|
none: false
|
41
31
|
requirements:
|
42
32
|
- - ">="
|
43
33
|
- !ruby/object:Gem::Version
|
44
|
-
hash: 3
|
45
|
-
segments:
|
46
|
-
- 0
|
47
34
|
version: "0"
|
48
|
-
|
49
|
-
- !ruby/object:Gem::Dependency
|
35
|
+
type: :runtime
|
50
36
|
prerelease: false
|
37
|
+
version_requirements: *id002
|
38
|
+
- !ruby/object:Gem::Dependency
|
51
39
|
name: json
|
52
|
-
|
53
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
41
|
none: false
|
55
42
|
requirements:
|
56
43
|
- - ">="
|
57
44
|
- !ruby/object:Gem::Version
|
58
|
-
hash: 3
|
59
|
-
segments:
|
60
|
-
- 0
|
61
45
|
version: "0"
|
62
|
-
|
63
|
-
- !ruby/object:Gem::Dependency
|
46
|
+
type: :runtime
|
64
47
|
prerelease: false
|
48
|
+
version_requirements: *id003
|
49
|
+
- !ruby/object:Gem::Dependency
|
65
50
|
name: rspec
|
66
|
-
|
67
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
68
52
|
none: false
|
69
53
|
requirements:
|
70
54
|
- - ">"
|
71
55
|
- !ruby/object:Gem::Version
|
72
|
-
hash: 15
|
73
|
-
segments:
|
74
|
-
- 2
|
75
|
-
- 0
|
76
|
-
- 0
|
77
56
|
version: 2.0.0
|
78
|
-
|
79
|
-
- !ruby/object:Gem::Dependency
|
57
|
+
type: :development
|
80
58
|
prerelease: false
|
59
|
+
version_requirements: *id004
|
60
|
+
- !ruby/object:Gem::Dependency
|
81
61
|
name: bundler
|
82
|
-
|
83
|
-
version_requirements: &id005 !ruby/object:Gem::Requirement
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
84
63
|
none: false
|
85
64
|
requirements:
|
86
65
|
- - ~>
|
87
66
|
- !ruby/object:Gem::Version
|
88
|
-
hash: 23
|
89
|
-
segments:
|
90
|
-
- 1
|
91
|
-
- 0
|
92
|
-
- 0
|
93
67
|
version: 1.0.0
|
94
|
-
|
95
|
-
- !ruby/object:Gem::Dependency
|
68
|
+
type: :development
|
96
69
|
prerelease: false
|
70
|
+
version_requirements: *id005
|
71
|
+
- !ruby/object:Gem::Dependency
|
97
72
|
name: jeweler
|
98
|
-
|
99
|
-
version_requirements: &id006 !ruby/object:Gem::Requirement
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
100
74
|
none: false
|
101
75
|
requirements:
|
102
76
|
- - ~>
|
103
77
|
- !ruby/object:Gem::Version
|
104
|
-
hash: 1
|
105
|
-
segments:
|
106
|
-
- 1
|
107
|
-
- 5
|
108
|
-
- 1
|
109
78
|
version: 1.5.1
|
110
|
-
|
111
|
-
- !ruby/object:Gem::Dependency
|
79
|
+
type: :development
|
112
80
|
prerelease: false
|
81
|
+
version_requirements: *id006
|
82
|
+
- !ruby/object:Gem::Dependency
|
113
83
|
name: rcov
|
114
|
-
|
115
|
-
version_requirements: &id007 !ruby/object:Gem::Requirement
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
116
85
|
none: false
|
117
86
|
requirements:
|
118
87
|
- - ">="
|
119
88
|
- !ruby/object:Gem::Version
|
120
|
-
hash: 3
|
121
|
-
segments:
|
122
|
-
- 0
|
123
89
|
version: "0"
|
124
|
-
|
125
|
-
- !ruby/object:Gem::Dependency
|
90
|
+
type: :development
|
126
91
|
prerelease: false
|
92
|
+
version_requirements: *id007
|
93
|
+
- !ruby/object:Gem::Dependency
|
127
94
|
name: typhoeus
|
128
|
-
|
129
|
-
version_requirements: &id008 !ruby/object:Gem::Requirement
|
95
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
130
96
|
none: false
|
131
97
|
requirements:
|
132
98
|
- - ">="
|
133
99
|
- !ruby/object:Gem::Version
|
134
|
-
hash: 3
|
135
|
-
segments:
|
136
|
-
- 0
|
137
100
|
version: "0"
|
138
|
-
|
139
|
-
- !ruby/object:Gem::Dependency
|
101
|
+
type: :runtime
|
140
102
|
prerelease: false
|
103
|
+
version_requirements: *id008
|
104
|
+
- !ruby/object:Gem::Dependency
|
141
105
|
name: activesupport
|
142
|
-
|
143
|
-
version_requirements: &id009 !ruby/object:Gem::Requirement
|
106
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
144
107
|
none: false
|
145
108
|
requirements:
|
146
109
|
- - ">="
|
147
110
|
- !ruby/object:Gem::Version
|
148
|
-
hash: 3
|
149
|
-
segments:
|
150
|
-
- 0
|
151
111
|
version: "0"
|
152
|
-
|
153
|
-
- !ruby/object:Gem::Dependency
|
112
|
+
type: :runtime
|
154
113
|
prerelease: false
|
114
|
+
version_requirements: *id009
|
115
|
+
- !ruby/object:Gem::Dependency
|
155
116
|
name: json
|
156
|
-
|
157
|
-
version_requirements: &id010 !ruby/object:Gem::Requirement
|
117
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
158
118
|
none: false
|
159
119
|
requirements:
|
160
120
|
- - ">="
|
161
121
|
- !ruby/object:Gem::Version
|
162
|
-
hash: 3
|
163
|
-
segments:
|
164
|
-
- 0
|
165
122
|
version: "0"
|
166
|
-
|
167
|
-
- !ruby/object:Gem::Dependency
|
123
|
+
type: :runtime
|
168
124
|
prerelease: false
|
125
|
+
version_requirements: *id010
|
126
|
+
- !ruby/object:Gem::Dependency
|
169
127
|
name: rspec
|
170
|
-
|
171
|
-
version_requirements: &id011 !ruby/object:Gem::Requirement
|
128
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
172
129
|
none: false
|
173
130
|
requirements:
|
174
131
|
- - ">"
|
175
132
|
- !ruby/object:Gem::Version
|
176
|
-
hash: 25
|
177
|
-
segments:
|
178
|
-
- 1
|
179
|
-
- 2
|
180
|
-
- 3
|
181
133
|
version: 1.2.3
|
182
|
-
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: *id011
|
183
137
|
description: Spider Google Web Toolkit sites using ruby
|
184
138
|
email: andrew.main@gmail.com
|
185
139
|
executables: []
|
@@ -248,7 +202,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
248
202
|
requirements:
|
249
203
|
- - ">="
|
250
204
|
- !ruby/object:Gem::Version
|
251
|
-
hash:
|
205
|
+
hash: -1042891651709601889
|
252
206
|
segments:
|
253
207
|
- 0
|
254
208
|
version: "0"
|
@@ -257,14 +211,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
257
211
|
requirements:
|
258
212
|
- - ">="
|
259
213
|
- !ruby/object:Gem::Version
|
260
|
-
hash: 3
|
261
|
-
segments:
|
262
|
-
- 0
|
263
214
|
version: "0"
|
264
215
|
requirements: []
|
265
216
|
|
266
217
|
rubyforge_project:
|
267
|
-
rubygems_version: 1.
|
218
|
+
rubygems_version: 1.6.2
|
268
219
|
signing_key:
|
269
220
|
specification_version: 3
|
270
221
|
summary: Ruby Google Web Toolkit client
|