flok 0.0.43 → 0.0.44
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.
- 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
|