roadforest 0.1 → 0.5
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/examples/file-management.rb +12 -13
- data/lib/roadforest-client.rb +3 -0
- data/lib/roadforest-common.rb +2 -0
- data/lib/roadforest-server.rb +7 -0
- data/lib/roadforest-testing.rb +1 -0
- data/lib/roadforest/application.rb +9 -7
- data/lib/roadforest/application/dispatcher.rb +39 -63
- data/lib/roadforest/application/parameters.rb +1 -1
- data/lib/roadforest/application/path-provider.rb +2 -2
- data/lib/roadforest/application/route-adapter.rb +130 -18
- data/lib/roadforest/application/services-host.rb +0 -4
- data/lib/roadforest/augment/affordance.rb +78 -0
- data/lib/roadforest/augment/augmentation.rb +97 -0
- data/lib/roadforest/augment/augmenter.rb +54 -0
- data/lib/roadforest/augmentations.rb +1 -0
- data/lib/roadforest/content-handling.rb +1 -0
- data/lib/roadforest/content-handling/common-engines.rb +67 -0
- data/lib/roadforest/content-handling/engine.rb +2 -14
- data/lib/roadforest/content-handling/handler-wrap.rb +29 -31
- data/lib/roadforest/content-handling/media-type.rb +6 -0
- data/lib/roadforest/{rdf.rb → graph.rb} +1 -1
- data/lib/roadforest/{rdf → graph}/access-manager.rb +12 -74
- data/lib/roadforest/{rdf → graph}/document.rb +1 -1
- data/lib/roadforest/{rdf → graph}/etagging.rb +2 -2
- data/lib/roadforest/{rdf → graph}/focus-list.rb +1 -9
- data/lib/roadforest/{rdf → graph}/graph-copier.rb +2 -2
- data/lib/roadforest/{rdf → graph}/graph-focus.rb +5 -7
- data/lib/roadforest/{rdf → graph}/normalization.rb +1 -1
- data/lib/roadforest/{rdf → graph}/post-focus.rb +2 -3
- data/lib/roadforest/graph/vocabulary.rb +96 -0
- data/lib/roadforest/http/graph-transfer.rb +2 -2
- data/lib/roadforest/interface/application.rb +145 -0
- data/lib/roadforest/interface/blob.rb +38 -0
- data/lib/roadforest/interface/rdf.rb +77 -0
- data/lib/roadforest/interfaces.rb +2 -0
- data/lib/roadforest/remote-host.rb +17 -17
- data/lib/roadforest/resource.rb +4 -0
- data/lib/roadforest/resource/{rdf/leaf-item.rb → leaf-item.rb} +1 -1
- data/lib/roadforest/resource/{rdf/list.rb → list.rb} +1 -1
- data/lib/roadforest/resource/{rdf/parent-item.rb → parent-item.rb} +1 -1
- data/lib/roadforest/resource/{rdf/read-only.rb → read-only.rb} +18 -18
- data/lib/roadforest/resource/role/has-children.rb +1 -1
- data/lib/roadforest/resource/role/writable.rb +2 -2
- data/lib/roadforest/server.rb +1 -1
- data/lib/roadforest/source-rigor.rb +9 -0
- data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence-annealer.rb +2 -2
- data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence.rb +5 -5
- data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence/any.rb +1 -1
- data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence/none-if-role-absent.rb +1 -1
- data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence/role-if-available.rb +1 -1
- data/lib/roadforest/source-rigor/engine.rb +45 -0
- data/lib/roadforest/{rdf → source-rigor}/graph-store.rb +9 -9
- data/lib/roadforest/{rdf/source-rigor → source-rigor}/http-investigator.rb +2 -2
- data/lib/roadforest/{rdf → source-rigor}/investigation.rb +2 -2
- data/lib/roadforest/{rdf/source-rigor → source-rigor}/investigator.rb +3 -3
- data/lib/roadforest/{rdf/source-rigor → source-rigor}/null-investigator.rb +3 -2
- data/lib/roadforest/{rdf → source-rigor}/parcel.rb +5 -5
- data/lib/roadforest/{rdf → source-rigor}/resource-pattern.rb +6 -6
- data/lib/roadforest/{rdf → source-rigor}/resource-query.rb +2 -2
- data/lib/roadforest/source-rigor/rigorous-access.rb +101 -0
- data/lib/roadforest/templates/affordance-doc.haml +23 -0
- data/lib/roadforest/templates/affordance-property-values.haml +13 -0
- data/lib/roadforest/templates/affordance-subject.haml +9 -0
- data/lib/roadforest/templates/affordance-uri-object.haml +2 -0
- data/lib/roadforest/templates/base/{property_value.haml → property-value.haml} +0 -0
- data/lib/roadforest/templates/base/{property_values.haml → property-values.haml} +0 -0
- data/lib/roadforest/templates/distiller/{property_value.haml → property-value.haml} +0 -0
- data/lib/roadforest/templates/distiller/{property_values.haml → property-values.haml} +0 -0
- data/lib/roadforest/templates/min/{property_values.haml → property-values.haml} +0 -0
- data/lib/roadforest/templates/rdfpost-curie.haml +6 -0
- data/lib/roadforest/test-support/dispatcher-facade.rb +2 -0
- data/lib/roadforest/test-support/matchers.rb +169 -5
- data/lib/roadforest/test-support/remote-host.rb +2 -2
- data/lib/roadforest/type-handlers/handler.rb +74 -0
- data/lib/roadforest/type-handlers/jsonld.rb +34 -0
- data/lib/roadforest/type-handlers/rdf-handler.rb +36 -0
- data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer.rb +2 -2
- data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/document-environment.rb +9 -8
- data/lib/roadforest/type-handlers/rdfa-writer/environment-decorator.rb +312 -0
- data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/object-environment.rb +3 -3
- data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/property-environment.rb +5 -11
- data/lib/roadforest/type-handlers/rdfa-writer/render-engine.rb +427 -0
- data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/render-environment.rb +33 -26
- data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/subject-environment.rb +7 -23
- data/lib/roadforest/type-handlers/rdfa.rb +73 -0
- data/lib/roadforest/type-handlers/rdfpost.rb +301 -0
- data/lib/roadforest/utility/class-registry.rb +23 -5
- data/spec/.ctrlp-root +0 -0
- data/spec/affordance-augmenter.rb +75 -0
- data/spec/affordances-flow.rb +438 -0
- data/spec/authorization.rb +34 -0
- data/spec/client.rb +13 -12
- data/spec/credence-annealer.rb +5 -5
- data/spec/focus-list.rb +8 -8
- data/spec/full-integration.rb +3 -3
- data/spec/graph-copier.rb +4 -4
- data/spec/graph-store.rb +19 -31
- data/spec/keychain.rb +82 -0
- data/spec/rdf-normalization.rb +2 -2
- data/spec/rdf-parcel.rb +3 -3
- data/spec/rdfa-handler.rb +514 -0
- data/spec/rdfpost.rb +96 -0
- data/spec/source-rigor.rb +57 -0
- data/spec/update-focus.rb +11 -10
- metadata +91 -66
- data/lib/roadforest/blob-model.rb +0 -53
- data/lib/roadforest/content-handling/type-handler.rb +0 -76
- data/lib/roadforest/content-handling/type-handlers/jsonld.rb +0 -36
- data/lib/roadforest/content-handling/type-handlers/rdf-handler.rb +0 -38
- data/lib/roadforest/content-handling/type-handlers/rdfa-writer/render-engine.rb +0 -574
- data/lib/roadforest/content-handling/type-handlers/rdfa.rb +0 -175
- data/lib/roadforest/content-handling/type-handlers/rdfpost.rb +0 -297
- data/lib/roadforest/model.rb +0 -209
- data/lib/roadforest/models.rb +0 -2
- data/lib/roadforest/rdf/source-rigor.rb +0 -44
- data/lib/roadforest/rdf/vocabulary.rb +0 -11
- data/lib/roadforest/resource/http/form-parsing.rb +0 -81
- data/lib/roadforest/resource/rdf.rb +0 -4
- data/spec/form-parsing.rb +0 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'roadforest/interface/application'
|
|
2
|
+
|
|
3
|
+
module RoadForest
|
|
4
|
+
module Interface
|
|
5
|
+
class Blob < Application
|
|
6
|
+
def destination_dir
|
|
7
|
+
Pathname.new(services.destination_dir)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def sub_path
|
|
11
|
+
params.remainder
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def path
|
|
15
|
+
destination_dir.join(sub_path)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def retrieve
|
|
19
|
+
File::open(path)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def incomplete_path
|
|
23
|
+
[path,"incomplete"].join(".")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def update(incoming)
|
|
27
|
+
File::open(incomplete_path, "w") do |file|
|
|
28
|
+
incoming.each do |chunk|
|
|
29
|
+
file.write(chunk)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
Pathname.new(incomplete_path).rename(path)
|
|
33
|
+
|
|
34
|
+
return nil
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
require 'roadforest/interface/application'
|
|
2
|
+
|
|
3
|
+
module RoadForest
|
|
4
|
+
module Interface
|
|
5
|
+
class RDF < Application
|
|
6
|
+
include RoadForest::Graph::Etagging
|
|
7
|
+
|
|
8
|
+
def update(graph)
|
|
9
|
+
graph_update(start_focus(graph))
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def graph_update(focus)
|
|
13
|
+
fill_graph(focus)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def add_graph_child(graph)
|
|
17
|
+
add_child(start_focus(graph))
|
|
18
|
+
new_graph
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def add_child(focus)
|
|
22
|
+
new_graph
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def retrieve
|
|
26
|
+
new_graph
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def fill_graph(graph)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def start_focus(graph, resource_url=nil)
|
|
33
|
+
access = RoadForest::Graph::WriteManager.new
|
|
34
|
+
access.source_graph = graph
|
|
35
|
+
focus = RoadForest::Graph::GraphFocus.new(access, resource_url || my_url)
|
|
36
|
+
|
|
37
|
+
yield focus if block_given?
|
|
38
|
+
return focus
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def copy_interface(node, route_name, params=nil)
|
|
42
|
+
params ||= {}
|
|
43
|
+
|
|
44
|
+
url = url_for(route_name, params)
|
|
45
|
+
source_interface = interface_for(route_name, params)
|
|
46
|
+
|
|
47
|
+
access = RoadForest::Graph::CopyManager.new
|
|
48
|
+
access.source_graph = source_interface.current_graph
|
|
49
|
+
access.target_graph = node.access_manager.destination_graph
|
|
50
|
+
copier = RoadForest::Graph::GraphFocus.new(access, url)
|
|
51
|
+
|
|
52
|
+
yield copier if block_given?
|
|
53
|
+
copier
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def etag
|
|
57
|
+
@etag ||= etag_from(etag_graph)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def etag_graph
|
|
61
|
+
current_graph
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def current_graph
|
|
65
|
+
return response_data if response_values.has_key?(:data)
|
|
66
|
+
new_graph
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def new_graph
|
|
70
|
+
graph = ::RDF::Graph.new
|
|
71
|
+
focus = start_focus(graph, my_url)
|
|
72
|
+
fill_graph(focus)
|
|
73
|
+
self.response_data = graph
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
require 'roadforest/
|
|
2
|
-
require 'roadforest/
|
|
3
|
-
require 'roadforest/
|
|
1
|
+
require 'roadforest/source-rigor'
|
|
2
|
+
require 'roadforest/source-rigor/credence-annealer'
|
|
3
|
+
require 'roadforest/source-rigor/rigorous-access'
|
|
4
|
+
require 'roadforest/source-rigor/graph-store' #XXX
|
|
5
|
+
require 'roadforest/graph/graph-focus'
|
|
4
6
|
require 'roadforest/http/user-agent'
|
|
5
7
|
require 'roadforest/http/graph-transfer'
|
|
6
8
|
require 'roadforest/http/adapters/excon'
|
|
7
|
-
require 'roadforest/rdf/access-manager'
|
|
8
|
-
require 'roadforest/rdf/graph-focus'
|
|
9
9
|
|
|
10
10
|
module RoadForest
|
|
11
11
|
class RemoteHost
|
|
12
|
-
include
|
|
12
|
+
include Graph::Normalization
|
|
13
13
|
|
|
14
14
|
def initialize(well_known_url)
|
|
15
15
|
self.url = well_known_url
|
|
@@ -21,7 +21,7 @@ module RoadForest
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def build_graph_store
|
|
24
|
-
|
|
24
|
+
SourceRigor::GraphStore.new
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
attr_writer :http_client
|
|
@@ -48,7 +48,7 @@ module RoadForest
|
|
|
48
48
|
def source_rigor
|
|
49
49
|
@source_rigor ||=
|
|
50
50
|
begin
|
|
51
|
-
rigor =
|
|
51
|
+
rigor = SourceRigor.http
|
|
52
52
|
rigor.graph_transfer = graph_transfer
|
|
53
53
|
rigor
|
|
54
54
|
end
|
|
@@ -60,7 +60,7 @@ module RoadForest
|
|
|
60
60
|
|
|
61
61
|
def anneal(focus)
|
|
62
62
|
graph = build_graph_store
|
|
63
|
-
annealer =
|
|
63
|
+
annealer = SourceRigor::CredenceAnnealer.new(graph)
|
|
64
64
|
annealer.resolve do
|
|
65
65
|
yield focus
|
|
66
66
|
end
|
|
@@ -69,12 +69,12 @@ module RoadForest
|
|
|
69
69
|
def putting(&block)
|
|
70
70
|
|
|
71
71
|
graph = build_graph_store
|
|
72
|
-
access =
|
|
72
|
+
access = SourceRigor::UpdateManager.new
|
|
73
73
|
access.rigor = source_rigor
|
|
74
74
|
access.source_graph = graph
|
|
75
|
-
updater =
|
|
75
|
+
updater = Graph::GraphFocus.new(access, url)
|
|
76
76
|
|
|
77
|
-
annealer =
|
|
77
|
+
annealer = SourceRigor::CredenceAnnealer.new(graph)
|
|
78
78
|
|
|
79
79
|
annealer.resolve do
|
|
80
80
|
access.target_graph = ::RDF::Repository.new
|
|
@@ -89,13 +89,13 @@ module RoadForest
|
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
def posting(&block)
|
|
92
|
-
require 'roadforest/
|
|
92
|
+
require 'roadforest/graph/post-focus'
|
|
93
93
|
|
|
94
94
|
graph = build_graph_store
|
|
95
|
-
access =
|
|
95
|
+
access = SourceRigor::PostManager.new
|
|
96
96
|
access.rigor = source_rigor
|
|
97
97
|
access.source_graph = graph
|
|
98
|
-
poster =
|
|
98
|
+
poster = Graph::PostFocus.new(access, url)
|
|
99
99
|
|
|
100
100
|
graphs = {}
|
|
101
101
|
poster.graphs = graphs
|
|
@@ -110,10 +110,10 @@ module RoadForest
|
|
|
110
110
|
def getting(&block)
|
|
111
111
|
|
|
112
112
|
graph = build_graph_store
|
|
113
|
-
access =
|
|
113
|
+
access = SourceRigor::RetrieveManager.new
|
|
114
114
|
access.rigor = source_rigor
|
|
115
115
|
access.source_graph = graph
|
|
116
|
-
reader =
|
|
116
|
+
reader = Graph::GraphFocus.new(access, url)
|
|
117
117
|
|
|
118
118
|
anneal(reader, &block)
|
|
119
119
|
end
|
|
@@ -15,7 +15,7 @@ module RoadForest
|
|
|
15
15
|
|
|
16
16
|
register :read_only
|
|
17
17
|
|
|
18
|
-
attr_accessor :
|
|
18
|
+
attr_accessor :interface, :trace, :content_engine
|
|
19
19
|
|
|
20
20
|
### RoadForest interface
|
|
21
21
|
|
|
@@ -43,17 +43,17 @@ module RoadForest
|
|
|
43
43
|
response.body = body
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
def
|
|
47
|
-
absolutize(@
|
|
46
|
+
def retrieve_interface
|
|
47
|
+
absolutize(@interface.canonical_host, @interface.retrieve)
|
|
48
48
|
end
|
|
49
|
-
alias
|
|
49
|
+
alias retreive_interface retrieve_interface
|
|
50
50
|
|
|
51
51
|
# def known_methods
|
|
52
52
|
# super + ["PATCH"]
|
|
53
53
|
# end
|
|
54
54
|
|
|
55
|
-
def
|
|
56
|
-
@
|
|
55
|
+
def interface_supports(action)
|
|
56
|
+
@interface.respond_to?(action)
|
|
57
57
|
end
|
|
58
58
|
### Webmachine interface
|
|
59
59
|
|
|
@@ -63,8 +63,8 @@ module RoadForest
|
|
|
63
63
|
|
|
64
64
|
#Overridden rather than metaprogram content type methods
|
|
65
65
|
def send(*args)
|
|
66
|
-
if args.length == 1 and not
|
|
67
|
-
|
|
66
|
+
if args.length == 1 and not interface.nil?
|
|
67
|
+
content_engine.fetch(args.first).call(self)
|
|
68
68
|
else
|
|
69
69
|
super
|
|
70
70
|
end
|
|
@@ -73,47 +73,47 @@ module RoadForest
|
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
def method(name)
|
|
76
|
-
if
|
|
76
|
+
if interface.nil?
|
|
77
77
|
super
|
|
78
78
|
else
|
|
79
|
-
|
|
79
|
+
content_engine.fetch(name).method(:call)
|
|
80
80
|
end
|
|
81
81
|
rescue KeyError
|
|
82
82
|
super
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
def content_types_provided
|
|
86
|
-
|
|
86
|
+
content_engine.renderers.type_map
|
|
87
87
|
rescue => ex
|
|
88
88
|
super
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
def is_authorized?(header)
|
|
92
|
-
@authorization = @
|
|
92
|
+
@authorization = @interface.authorization(request.method, header)
|
|
93
93
|
if(@authorization == :public || @authorization == :granted)
|
|
94
94
|
return true
|
|
95
95
|
end
|
|
96
|
-
@
|
|
96
|
+
@interface.authentication_challenge
|
|
97
97
|
end
|
|
98
98
|
|
|
99
|
-
#Add cache-control headers here
|
|
99
|
+
#XXX Add cache-control headers here
|
|
100
100
|
def finish_request
|
|
101
101
|
end
|
|
102
102
|
|
|
103
103
|
def resource_exists?
|
|
104
|
-
@
|
|
104
|
+
@interface.exists?
|
|
105
105
|
end
|
|
106
106
|
|
|
107
107
|
def generate_etag
|
|
108
|
-
@
|
|
108
|
+
@interface.etag
|
|
109
109
|
end
|
|
110
110
|
|
|
111
111
|
def last_modified
|
|
112
|
-
@
|
|
112
|
+
@interface.last_modified
|
|
113
113
|
end
|
|
114
114
|
|
|
115
115
|
def expires
|
|
116
|
-
@
|
|
116
|
+
@interface.expires
|
|
117
117
|
end
|
|
118
118
|
end
|
|
119
119
|
end
|
|
@@ -11,7 +11,7 @@ module RoadForest
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def process_post
|
|
14
|
-
parser =
|
|
14
|
+
parser = content_engine.choose_parser(request.content_type || 'application/octet-stream')
|
|
15
15
|
|
|
16
16
|
parser.add_child(self)
|
|
17
17
|
return true
|
|
@@ -22,7 +22,7 @@ module RoadForest
|
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
def content_types_accepted
|
|
25
|
-
|
|
25
|
+
content_engine.parsers.type_map
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def request_body
|
|
@@ -35,7 +35,7 @@ module RoadForest
|
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def delete_resource
|
|
38
|
-
@
|
|
38
|
+
@interface.delete(params)
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
end
|
data/lib/roadforest/server.rb
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
module RoadForest::SourceRigor
|
|
2
2
|
module Credence
|
|
3
|
-
require 'roadforest/rdf/source-rigor/credence/role-if-available'
|
|
4
|
-
require 'roadforest/rdf/source-rigor/credence/any'
|
|
5
|
-
require 'roadforest/rdf/source-rigor/credence/none-if-role-absent'
|
|
6
|
-
|
|
7
3
|
def self.policies
|
|
8
4
|
@policies ||= {
|
|
9
5
|
:any => Any.new,
|
|
@@ -27,3 +23,7 @@ class RoadForest::RDF::SourceRigor
|
|
|
27
23
|
end
|
|
28
24
|
end
|
|
29
25
|
end
|
|
26
|
+
|
|
27
|
+
require 'roadforest/source-rigor/credence/role-if-available'
|
|
28
|
+
require 'roadforest/source-rigor/credence/any'
|
|
29
|
+
require 'roadforest/source-rigor/credence/none-if-role-absent'
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'roadforest/source-rigor'
|
|
2
|
+
require 'roadforest/source-rigor/investigator'
|
|
3
|
+
require 'roadforest/source-rigor/credence'
|
|
4
|
+
|
|
5
|
+
module RoadForest
|
|
6
|
+
module SourceRigor
|
|
7
|
+
class << self
|
|
8
|
+
def simple
|
|
9
|
+
rigor = Engine.new
|
|
10
|
+
rigor.policy_list(:must_local, :may_local)
|
|
11
|
+
rigor.investigator_list(:null)
|
|
12
|
+
rigor
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def http
|
|
16
|
+
rigor = Engine.new
|
|
17
|
+
rigor.policy_list(:may_subject, :any) #XXX
|
|
18
|
+
rigor.investigator_list(:http, :null)
|
|
19
|
+
rigor
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
class Engine
|
|
24
|
+
def initialize
|
|
25
|
+
@investigators = []
|
|
26
|
+
@investigation_limit = 3
|
|
27
|
+
@credence_policies = []
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
attr_accessor :graph_transfer, :investigators, :investigation_limit, :credence_policies
|
|
31
|
+
|
|
32
|
+
def policy_list(*names)
|
|
33
|
+
self.credence_policies = names.map do |name|
|
|
34
|
+
Credence.policy(name)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def investigator_list(*names)
|
|
39
|
+
self.investigators = names.map do |name|
|
|
40
|
+
Investigator[name].new
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|