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
data/lib/roadforest/model.rb
DELETED
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
require 'roadforest/rdf/graph-store'
|
|
2
|
-
require 'roadforest/rdf/etagging'
|
|
3
|
-
require 'roadforest/rdf/access-manager'
|
|
4
|
-
require 'roadforest/rdf/graph-focus'
|
|
5
|
-
|
|
6
|
-
module RoadForest
|
|
7
|
-
class ProcessingSequenceError < StandardError
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
class Model
|
|
11
|
-
def initialize(route_name, params, services)
|
|
12
|
-
@route_name = route_name
|
|
13
|
-
@params = params
|
|
14
|
-
@services = services
|
|
15
|
-
@data = nil
|
|
16
|
-
@response_values = {}
|
|
17
|
-
end
|
|
18
|
-
attr_reader :route_name, :params, :services, :data
|
|
19
|
-
attr_reader :response_values
|
|
20
|
-
|
|
21
|
-
def path_for(route_name = nil, params = nil)
|
|
22
|
-
services.router.path_for(route_name, params || self.params)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def url_for(route_name, params = nil)
|
|
26
|
-
Addressable::URI.parse(canonical_host.to_s).join(path_for(route_name, params))
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def model_for(route_name = nil, params = nil)
|
|
30
|
-
services.router.model_for(route_name, params || self.params)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def required_grants(method)
|
|
34
|
-
services.authz.build_grants do |grants|
|
|
35
|
-
grants.add(:admin)
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def authorization(method, header)
|
|
40
|
-
required = required_grants(method)
|
|
41
|
-
if required.empty?
|
|
42
|
-
:public
|
|
43
|
-
else
|
|
44
|
-
services.authz.authorization(header, required_grants(method))
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def authentication_challenge
|
|
49
|
-
services.authz.challenge(:realm => "Roadforest")
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def canonical_host
|
|
53
|
-
services.canonical_host
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def canonical_uri
|
|
57
|
-
url_for(route_name, params)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def type_handling
|
|
61
|
-
services.type_handling
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def my_path
|
|
65
|
-
path_for(route_name, params)
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def my_url
|
|
69
|
-
canonical_uri.to_s
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def reset
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def exists?
|
|
76
|
-
!data.nil?
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def etag
|
|
80
|
-
nil
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
def last_modified
|
|
84
|
-
nil
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def response_location
|
|
88
|
-
@response_values.fetch(:location) do
|
|
89
|
-
raise ProcessingSequenceError, "Location not available until request processed"
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def response_location=(location)
|
|
94
|
-
@response_values[:location] = location
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def response_data
|
|
98
|
-
@response_values.fetch(:data) do
|
|
99
|
-
raise ProcessingSequenceError, "Location not available until request processed"
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
def response_data=(data)
|
|
104
|
-
@response_values[:data] = data
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def processed
|
|
108
|
-
[:location, :data].each do |key|
|
|
109
|
-
unless @response_values.has_key?(key)
|
|
110
|
-
@response_values[key] = nil
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
def expires
|
|
116
|
-
nil
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
def update(data)
|
|
120
|
-
raise NotImplementedError
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
def add_child(results)
|
|
124
|
-
raise NotImplementedError
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
def retrieve
|
|
128
|
-
raise NotImplementedError
|
|
129
|
-
end
|
|
130
|
-
alias retreive retrieve
|
|
131
|
-
|
|
132
|
-
def delete
|
|
133
|
-
false
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
class RDFModel < Model
|
|
139
|
-
include RDF::Etagging
|
|
140
|
-
|
|
141
|
-
def update(graph)
|
|
142
|
-
graph_update(start_focus(graph))
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
def graph_update(focus)
|
|
146
|
-
fill_graph(focus)
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
def add_graph_child(graph)
|
|
150
|
-
add_child(start_focus(graph))
|
|
151
|
-
new_graph
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
def add_child(focus)
|
|
155
|
-
new_graph
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
def retrieve
|
|
159
|
-
new_graph
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
def fill_graph(graph)
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
def start_focus(graph, resource_url=nil)
|
|
166
|
-
access = RDF::WriteManager.new
|
|
167
|
-
access.source_graph = graph
|
|
168
|
-
focus = RDF::GraphFocus.new(access, resource_url || my_url)
|
|
169
|
-
|
|
170
|
-
yield focus if block_given?
|
|
171
|
-
return focus
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
def copy_model(node, route_name, params=nil)
|
|
175
|
-
params ||= {}
|
|
176
|
-
|
|
177
|
-
url = url_for(route_name, params)
|
|
178
|
-
source_model = model_for(route_name, params)
|
|
179
|
-
|
|
180
|
-
access = RDF::CopyManager.new
|
|
181
|
-
access.source_graph = source_model.current_graph
|
|
182
|
-
access.target_graph = node.access_manager.destination_graph
|
|
183
|
-
copier = RDF::GraphFocus.new(access, url)
|
|
184
|
-
|
|
185
|
-
yield copier if block_given?
|
|
186
|
-
copier
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
def etag
|
|
190
|
-
@etag ||= etag_from(etag_graph)
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
def etag_graph
|
|
194
|
-
current_graph
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
def current_graph
|
|
198
|
-
return response_data if response_values.has_key?(:data)
|
|
199
|
-
new_graph
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
def new_graph
|
|
203
|
-
graph = ::RDF::Graph.new
|
|
204
|
-
focus = start_focus(graph, my_url)
|
|
205
|
-
fill_graph(focus)
|
|
206
|
-
self.response_data = graph
|
|
207
|
-
end
|
|
208
|
-
end
|
|
209
|
-
end
|
data/lib/roadforest/models.rb
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
require 'roadforest'
|
|
2
|
-
|
|
3
|
-
module RoadForest::RDF
|
|
4
|
-
class SourceRigor
|
|
5
|
-
require 'roadforest/rdf/source-rigor/investigator'
|
|
6
|
-
require 'roadforest/rdf/source-rigor/credence'
|
|
7
|
-
|
|
8
|
-
class << self
|
|
9
|
-
def simple
|
|
10
|
-
rigor = self.new
|
|
11
|
-
rigor.policy_list(:must_local, :may_local)
|
|
12
|
-
rigor.investigator_list(:null)
|
|
13
|
-
rigor
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def http
|
|
17
|
-
rigor = self.new
|
|
18
|
-
rigor.policy_list(:may_subject, :any) #XXX
|
|
19
|
-
rigor.investigator_list(:http, :null)
|
|
20
|
-
rigor
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
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
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
=begin
|
|
2
|
-
I think this code might be useful soon
|
|
3
|
-
module RoadForest
|
|
4
|
-
module ResourceMixin
|
|
5
|
-
module FormParsing
|
|
6
|
-
def self.content_types_accepted
|
|
7
|
-
[
|
|
8
|
-
["application/x-www-form-urlencoded", :handle_url_encoded_form],
|
|
9
|
-
["multipart/form-data", :handle_multipart_form]
|
|
10
|
-
]
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def process_post
|
|
14
|
-
content_type = Webmachine::MediaType.parse(request.content_type)
|
|
15
|
-
if content_type.match?("application/x-www-form-urlencoded")
|
|
16
|
-
handle_url_encoded_form
|
|
17
|
-
elsif content_type.match?("multipart/form-data")
|
|
18
|
-
handle_multipart_form
|
|
19
|
-
else
|
|
20
|
-
false
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def parse_url_encoded_form
|
|
25
|
-
Hash[URI::decode_www_form(request.body)]
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def parse_multipart_form
|
|
29
|
-
form_data = {}
|
|
30
|
-
reader = multipart_reader(request.content_type, form_data)
|
|
31
|
-
|
|
32
|
-
request.body.each do |chunk|
|
|
33
|
-
reader.write(chunk)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
return form_data
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def multipart_reader(content_type, form_data)
|
|
40
|
-
content_type = Webmachine::MediaType.parse(content_type)
|
|
41
|
-
reader = MultipartParser::Reader.new(content_type.params["boundary"])
|
|
42
|
-
reader.on_error do |message|
|
|
43
|
-
raise message
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
reader.on_part do |part|
|
|
47
|
-
case part.mime
|
|
48
|
-
when nil
|
|
49
|
-
form_data[part.name] = ""
|
|
50
|
-
part.on_data do |data|
|
|
51
|
-
form_data[part.name] << data
|
|
52
|
-
end
|
|
53
|
-
else
|
|
54
|
-
temp_file = Tempfile.new(part.filename)
|
|
55
|
-
|
|
56
|
-
form_data[part.name] = [part, temp_file]
|
|
57
|
-
|
|
58
|
-
part.on_data do |data|
|
|
59
|
-
temp_file.write(data)
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
part.on_end do
|
|
63
|
-
temp_file.close
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
return reader
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def handle_url_encoded_form
|
|
72
|
-
handle_form(parse_url_encoded_form)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def handle_multipart_form
|
|
76
|
-
handle_form(parse_multipart_form)
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
=end
|
data/spec/form-parsing.rb
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require 'roadforest/resource/http/form-parsing'
|