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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3e0d45d6c71fab7dd38c7692e0f123e1c066c959
4
- data.tar.gz: be210489af74948276d3e21ceb689fc51e054f89
3
+ metadata.gz: 012105cd4ab1a238ba2cc8d06605e30d672ba0ee
4
+ data.tar.gz: e3edf3a8c64227344f35030966f645cf6cfb99a4
5
5
  SHA512:
6
- metadata.gz: 038e4ec9c74142f331a0d6f4d155d206f0570ef36ff2b9a5d3a14bc22843b1de682549c27cfa8d76e8f48fdf306ca6b7a5832e1e15af99e59c747819d5709276
7
- data.tar.gz: 10b75dc31d35bda8494d5fdfa09eaae0b82f0841684beaf23f2bedc3e628ff0aa9999699e0b42fa9538255ee6409cdffd1620c5dd9970ff7b99d464d3e4b34a2
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
@@ -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
- url: "http://my_rest_endpoint",
10
+ path: "/user/register",
8
11
  params: {
9
12
  my_param_0: "test",
10
13
  }
11
14
  }
12
- ```
13
15
 
14
- When you receive a request back, you will receive
15
- ```js
16
- {
17
- success: true,
18
- info:
19
- }
16
+ Request("<service name>", "get", info);
20
17
  ```
21
- Where if success is true, then info is a hash. If success is false, then info is a failure message.
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.
@@ -1,3 +1,3 @@
1
1
  module Flok
2
- VERSION = "0.0.43"
2
+ VERSION = "0.0.44"
3
3
  end
@@ -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,4 @@
1
+ #Simple service config that uses built-in spec service to create a instance called 'spec'
2
+ service_instance :rest, :rest, {
3
+ :base_url => "http://localhost:8080/"
4
+ }
@@ -0,0 +1,8 @@
1
+ controller :my_controller do
2
+ services :rest
3
+
4
+ action :my_action do
5
+ on_entry %{
6
+ }
7
+ end
8
+ end
@@ -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
@@ -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
- Process.kill(:KILL, @pid)
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.43
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/net_spec.rb
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/net_spec.rb
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
@@ -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