flok 0.0.43 → 0.0.44
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/kern/services/rest.rb +46 -0
- data/docs/services/rest.md +15 -9
- data/lib/flok/version.rb +1 -1
- data/spec/env/kern.rb +8 -0
- data/spec/kern/assets/rest_service/config0.rb +4 -0
- data/spec/kern/assets/rest_service/controller0.rb +8 -0
- data/spec/kern/assets/rest_service/controller1.rb +17 -0
- data/spec/kern/rest_service_spec.rb +71 -0
- data/spec/lib/helpers.rb +9 -2
- metadata +10 -3
- data/spec/kern/net_spec.rb +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 012105cd4ab1a238ba2cc8d06605e30d672ba0ee
|
4
|
+
data.tar.gz: e3edf3a8c64227344f35030966f645cf6cfb99a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51522633e57cb371e0bf2d0dd400b15b771fec2dbe6e3aa63699c1fba99a1e31029f8c25c02fa89cffd1721da5449adf6e3b1b9d14b8f1456852e53303692d70
|
7
|
+
data.tar.gz: a15aff14e629db8f1759a3edd5281df6d3be6cfb8d090926178a2f001062923bb27f206c70b13bd0557da47b572b6e1b2236efdb7dbbe406fac8993427e5257b
|
@@ -0,0 +1,46 @@
|
|
1
|
+
service :rest do
|
2
|
+
global %{
|
3
|
+
rest_in_flight = {}
|
4
|
+
|
5
|
+
function rest_cb(tp, success, info) {
|
6
|
+
var e = rest_in_flight[tp];
|
7
|
+
var bp = e[0];
|
8
|
+
var path = e[1];
|
9
|
+
|
10
|
+
int_event(bp, "rest_res", {
|
11
|
+
path: path,
|
12
|
+
res: info
|
13
|
+
});
|
14
|
+
|
15
|
+
tel_del(tp);
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
on_wakeup %{
|
20
|
+
}
|
21
|
+
|
22
|
+
on_sleep %{
|
23
|
+
}
|
24
|
+
|
25
|
+
on_connect %{
|
26
|
+
}
|
27
|
+
|
28
|
+
on "get", %{
|
29
|
+
<% if @debug %>
|
30
|
+
if (params.path === undefined) {
|
31
|
+
throw "rest_service, no path given in get request";
|
32
|
+
}
|
33
|
+
|
34
|
+
if (params.params === undefined) {
|
35
|
+
throw "rest_service, no params given in get request";
|
36
|
+
}
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
var tp = tel_reg(rest_cb);
|
40
|
+
rest_in_flight[tp] = [bp, params.path];
|
41
|
+
SEND("net", "if_net_req", "GET", "<%= @options[:base_url] %>"+params.path, params.params, tp);
|
42
|
+
}
|
43
|
+
|
44
|
+
on_disconnect %{
|
45
|
+
}
|
46
|
+
end
|
data/docs/services/rest.md
CHANGED
@@ -1,21 +1,27 @@
|
|
1
1
|
#Rest Service
|
2
2
|
This is the RESTful network request service. Designed for small payloads of RESTful network requests.
|
3
3
|
|
4
|
+
#Options
|
5
|
+
* `base_url` - The url like `"http://services.my_host.com/"` for the path to be based on. Must include ending slash.
|
6
|
+
|
4
7
|
###Info to start a request
|
5
8
|
```js
|
6
9
|
var info = {
|
7
|
-
|
10
|
+
path: "/user/register",
|
8
11
|
params: {
|
9
12
|
my_param_0: "test",
|
10
13
|
}
|
11
14
|
}
|
12
|
-
```
|
13
15
|
|
14
|
-
|
15
|
-
```js
|
16
|
-
{
|
17
|
-
success: true,
|
18
|
-
info:
|
19
|
-
}
|
16
|
+
Request("<service name>", "get", info);
|
20
17
|
```
|
21
|
-
|
18
|
+
|
19
|
+
You will then receive the event `rest_res`.
|
20
|
+
|
21
|
+
For sucessful requests, `rest_res` will be sent as an event. This event
|
22
|
+
will contain `path` and `res` where `path` is the `path` given in th
|
23
|
+
request and `res` is the results of the request.
|
24
|
+
|
25
|
+
###Globals
|
26
|
+
* `rest_in_flight` - A hash that maps `rest_in_flight[tp_base] => bp` where `[bp, path]` is the requesting entity for the original request and
|
27
|
+
`path` is the original path.
|
data/lib/flok/version.rb
CHANGED
data/spec/env/kern.rb
CHANGED
@@ -131,9 +131,17 @@ shared_context "kern" do
|
|
131
131
|
name = @cq.shift
|
132
132
|
args = @cq.shift(arg_len)
|
133
133
|
|
134
|
+
msg_args.each_with_index do |e, i|
|
135
|
+
if e == Integer
|
136
|
+
msg_args[i] = args[i];
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
134
140
|
expect(name).to eq(msg_name)
|
135
141
|
expect(args).to eq(msg_args)
|
136
142
|
expect(priority).to eq(@cp)
|
143
|
+
|
144
|
+
return args
|
137
145
|
end
|
138
146
|
|
139
147
|
#Ignore all messages until this one is received, then keep that one in the queue
|
@@ -0,0 +1,17 @@
|
|
1
|
+
controller :my_controller do
|
2
|
+
services :rest
|
3
|
+
|
4
|
+
action :my_action do
|
5
|
+
on_entry %{
|
6
|
+
var info = {
|
7
|
+
path: "test",
|
8
|
+
params: {"hello": "world"}
|
9
|
+
}
|
10
|
+
Request("rest", "get", info);
|
11
|
+
}
|
12
|
+
|
13
|
+
on "rest_res", %{
|
14
|
+
rest_res_params = params;
|
15
|
+
}
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#The rest service
|
2
|
+
|
3
|
+
Dir.chdir File.join File.dirname(__FILE__), '../../'
|
4
|
+
require './spec/env/kern.rb'
|
5
|
+
require './spec/lib/helpers.rb'
|
6
|
+
require './spec/lib/io_extensions.rb'
|
7
|
+
require './spec/lib/rspec_extensions.rb'
|
8
|
+
require 'zlib'
|
9
|
+
|
10
|
+
RSpec.describe "kern:rest_service" do
|
11
|
+
include Zlib
|
12
|
+
include_context "kern"
|
13
|
+
|
14
|
+
it "Can use rest service" do
|
15
|
+
ctx = flok_new_user File.read('./spec/kern/assets/rest_service/controller0.rb'), File.read("./spec/kern/assets/rest_service/config0.rb")
|
16
|
+
dump = ctx.evald %{
|
17
|
+
base = _embed("my_controller", 0, {}, null);
|
18
|
+
|
19
|
+
//Drain queue
|
20
|
+
int_dispatch([]);
|
21
|
+
|
22
|
+
dump["rest_base_url"] = rest_base_url;
|
23
|
+
}
|
24
|
+
|
25
|
+
expect(dump["rest_base_url"]).to eq("http://localhost:8080/")
|
26
|
+
end
|
27
|
+
|
28
|
+
it "Can make a request on the rest service" do
|
29
|
+
ctx = flok_new_user File.read('./spec/kern/assets/rest_service/controller1.rb'), File.read("./spec/kern/assets/rest_service/config0.rb")
|
30
|
+
dump = ctx.evald %{
|
31
|
+
dump.base = _embed("my_controller", 0, {}, null);
|
32
|
+
|
33
|
+
//Drain queue
|
34
|
+
int_dispatch([]);
|
35
|
+
}
|
36
|
+
|
37
|
+
@driver.ignore_up_to("if_net_req")
|
38
|
+
@driver.mexpect("if_net_req", ["GET", "http://localhost:8080/test", {"hello" => "world"}, Integer], 1) #network priority
|
39
|
+
end
|
40
|
+
|
41
|
+
it "Does send the controller the rest_res when a response is returned" do
|
42
|
+
ctx = flok_new_user File.read('./spec/kern/assets/rest_service/controller1.rb'), File.read("./spec/kern/assets/rest_service/config0.rb")
|
43
|
+
dump = ctx.evald %{
|
44
|
+
dump.base = _embed("my_controller", 0, {}, null);
|
45
|
+
|
46
|
+
//Drain queue
|
47
|
+
int_dispatch([]);
|
48
|
+
}
|
49
|
+
|
50
|
+
@driver.ignore_up_to("if_net_req")
|
51
|
+
msg = @driver.mexpect("if_net_req", ["GET", "http://localhost:8080/test", {"hello" => "world"}, Integer], 1) #network priority
|
52
|
+
|
53
|
+
#Last argument is teh tp_base for if_net_req
|
54
|
+
tp_base = msg.last
|
55
|
+
|
56
|
+
@driver.int "int_net_cb", [
|
57
|
+
tp_base, true, {"foo" => "bar"}
|
58
|
+
]
|
59
|
+
|
60
|
+
dump = ctx.evald %{
|
61
|
+
dump.rest_res_params = rest_res_params;
|
62
|
+
}
|
63
|
+
|
64
|
+
expect(dump["rest_res_params"]).to eq({
|
65
|
+
"path" => "test",
|
66
|
+
"res" => {
|
67
|
+
"foo" => "bar"
|
68
|
+
}
|
69
|
+
})
|
70
|
+
end
|
71
|
+
end
|
data/spec/lib/helpers.rb
CHANGED
@@ -23,7 +23,12 @@ class DuplexPipe
|
|
23
23
|
@w = @w1
|
24
24
|
end
|
25
25
|
|
26
|
-
|
26
|
+
def close
|
27
|
+
@r0.close
|
28
|
+
@w0.close
|
29
|
+
@r1.close
|
30
|
+
@w1.close
|
31
|
+
end
|
27
32
|
|
28
33
|
def claim_high
|
29
34
|
@r = @r1
|
@@ -56,7 +61,9 @@ module Webbing
|
|
56
61
|
attr_accessor :port
|
57
62
|
|
58
63
|
def kill
|
59
|
-
|
64
|
+
$stderr.puts "KILL"
|
65
|
+
@pipe.close
|
66
|
+
Process.kill(:TERM, @pid)
|
60
67
|
end
|
61
68
|
|
62
69
|
def initialize verb, path, port=nil, &block
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flok
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.44
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- seo
|
@@ -316,6 +316,7 @@ files:
|
|
316
316
|
- app/kern/pagers/spec0.js
|
317
317
|
- app/kern/pagers/spec1.js
|
318
318
|
- app/kern/pagers/spec2.js
|
319
|
+
- app/kern/services/rest.rb
|
319
320
|
- app/kern/services/test.rb
|
320
321
|
- app/kern/services/vm.rb
|
321
322
|
- app/kern/spec_helper.js
|
@@ -1167,6 +1168,9 @@ files:
|
|
1167
1168
|
- spec/kern/assets/interval3.rb
|
1168
1169
|
- spec/kern/assets/lower_event.rb
|
1169
1170
|
- spec/kern/assets/raise_event.rb
|
1171
|
+
- spec/kern/assets/rest_service/config0.rb
|
1172
|
+
- spec/kern/assets/rest_service/controller0.rb
|
1173
|
+
- spec/kern/assets/rest_service/controller1.rb
|
1170
1174
|
- spec/kern/assets/send_event.rb
|
1171
1175
|
- spec/kern/assets/service0.rb
|
1172
1176
|
- spec/kern/assets/service1.rb
|
@@ -1257,7 +1261,7 @@ files:
|
|
1257
1261
|
- spec/kern/dispatch_spec.rb
|
1258
1262
|
- spec/kern/event_spec.rb
|
1259
1263
|
- spec/kern/functions_spec.rb
|
1260
|
-
- spec/kern/
|
1264
|
+
- spec/kern/rest_service_spec.rb
|
1261
1265
|
- spec/kern/service_controller_spec.rb
|
1262
1266
|
- spec/kern/vm_service_functional_spec.rb
|
1263
1267
|
- spec/kern/vm_service_mem_pagers_spec.rb
|
@@ -2074,6 +2078,9 @@ test_files:
|
|
2074
2078
|
- spec/kern/assets/interval3.rb
|
2075
2079
|
- spec/kern/assets/lower_event.rb
|
2076
2080
|
- spec/kern/assets/raise_event.rb
|
2081
|
+
- spec/kern/assets/rest_service/config0.rb
|
2082
|
+
- spec/kern/assets/rest_service/controller0.rb
|
2083
|
+
- spec/kern/assets/rest_service/controller1.rb
|
2077
2084
|
- spec/kern/assets/send_event.rb
|
2078
2085
|
- spec/kern/assets/service0.rb
|
2079
2086
|
- spec/kern/assets/service1.rb
|
@@ -2164,7 +2171,7 @@ test_files:
|
|
2164
2171
|
- spec/kern/dispatch_spec.rb
|
2165
2172
|
- spec/kern/event_spec.rb
|
2166
2173
|
- spec/kern/functions_spec.rb
|
2167
|
-
- spec/kern/
|
2174
|
+
- spec/kern/rest_service_spec.rb
|
2168
2175
|
- spec/kern/service_controller_spec.rb
|
2169
2176
|
- spec/kern/vm_service_functional_spec.rb
|
2170
2177
|
- spec/kern/vm_service_mem_pagers_spec.rb
|
data/spec/kern/net_spec.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#Anything and everything to do with networking above the driver level
|
2
|
-
|
3
|
-
Dir.chdir File.join File.dirname(__FILE__), '../../'
|
4
|
-
require './spec/env/kern.rb'
|
5
|
-
require './spec/lib/helpers.rb'
|
6
|
-
require './spec/lib/io_extensions.rb'
|
7
|
-
require './spec/lib/rspec_extensions.rb'
|
8
|
-
|
9
|
-
RSpec.describe "kern:net_spec" do
|
10
|
-
include_context "kern"
|
11
|
-
|
12
|
-
it "can call get_req() and returns to the correct callback" do
|
13
|
-
end
|
14
|
-
end
|