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.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/examples/file-management.rb +12 -13
  3. data/lib/roadforest-client.rb +3 -0
  4. data/lib/roadforest-common.rb +2 -0
  5. data/lib/roadforest-server.rb +7 -0
  6. data/lib/roadforest-testing.rb +1 -0
  7. data/lib/roadforest/application.rb +9 -7
  8. data/lib/roadforest/application/dispatcher.rb +39 -63
  9. data/lib/roadforest/application/parameters.rb +1 -1
  10. data/lib/roadforest/application/path-provider.rb +2 -2
  11. data/lib/roadforest/application/route-adapter.rb +130 -18
  12. data/lib/roadforest/application/services-host.rb +0 -4
  13. data/lib/roadforest/augment/affordance.rb +78 -0
  14. data/lib/roadforest/augment/augmentation.rb +97 -0
  15. data/lib/roadforest/augment/augmenter.rb +54 -0
  16. data/lib/roadforest/augmentations.rb +1 -0
  17. data/lib/roadforest/content-handling.rb +1 -0
  18. data/lib/roadforest/content-handling/common-engines.rb +67 -0
  19. data/lib/roadforest/content-handling/engine.rb +2 -14
  20. data/lib/roadforest/content-handling/handler-wrap.rb +29 -31
  21. data/lib/roadforest/content-handling/media-type.rb +6 -0
  22. data/lib/roadforest/{rdf.rb → graph.rb} +1 -1
  23. data/lib/roadforest/{rdf → graph}/access-manager.rb +12 -74
  24. data/lib/roadforest/{rdf → graph}/document.rb +1 -1
  25. data/lib/roadforest/{rdf → graph}/etagging.rb +2 -2
  26. data/lib/roadforest/{rdf → graph}/focus-list.rb +1 -9
  27. data/lib/roadforest/{rdf → graph}/graph-copier.rb +2 -2
  28. data/lib/roadforest/{rdf → graph}/graph-focus.rb +5 -7
  29. data/lib/roadforest/{rdf → graph}/normalization.rb +1 -1
  30. data/lib/roadforest/{rdf → graph}/post-focus.rb +2 -3
  31. data/lib/roadforest/graph/vocabulary.rb +96 -0
  32. data/lib/roadforest/http/graph-transfer.rb +2 -2
  33. data/lib/roadforest/interface/application.rb +145 -0
  34. data/lib/roadforest/interface/blob.rb +38 -0
  35. data/lib/roadforest/interface/rdf.rb +77 -0
  36. data/lib/roadforest/interfaces.rb +2 -0
  37. data/lib/roadforest/remote-host.rb +17 -17
  38. data/lib/roadforest/resource.rb +4 -0
  39. data/lib/roadforest/resource/{rdf/leaf-item.rb → leaf-item.rb} +1 -1
  40. data/lib/roadforest/resource/{rdf/list.rb → list.rb} +1 -1
  41. data/lib/roadforest/resource/{rdf/parent-item.rb → parent-item.rb} +1 -1
  42. data/lib/roadforest/resource/{rdf/read-only.rb → read-only.rb} +18 -18
  43. data/lib/roadforest/resource/role/has-children.rb +1 -1
  44. data/lib/roadforest/resource/role/writable.rb +2 -2
  45. data/lib/roadforest/server.rb +1 -1
  46. data/lib/roadforest/source-rigor.rb +9 -0
  47. data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence-annealer.rb +2 -2
  48. data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence.rb +5 -5
  49. data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence/any.rb +1 -1
  50. data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence/none-if-role-absent.rb +1 -1
  51. data/lib/roadforest/{rdf/source-rigor → source-rigor}/credence/role-if-available.rb +1 -1
  52. data/lib/roadforest/source-rigor/engine.rb +45 -0
  53. data/lib/roadforest/{rdf → source-rigor}/graph-store.rb +9 -9
  54. data/lib/roadforest/{rdf/source-rigor → source-rigor}/http-investigator.rb +2 -2
  55. data/lib/roadforest/{rdf → source-rigor}/investigation.rb +2 -2
  56. data/lib/roadforest/{rdf/source-rigor → source-rigor}/investigator.rb +3 -3
  57. data/lib/roadforest/{rdf/source-rigor → source-rigor}/null-investigator.rb +3 -2
  58. data/lib/roadforest/{rdf → source-rigor}/parcel.rb +5 -5
  59. data/lib/roadforest/{rdf → source-rigor}/resource-pattern.rb +6 -6
  60. data/lib/roadforest/{rdf → source-rigor}/resource-query.rb +2 -2
  61. data/lib/roadforest/source-rigor/rigorous-access.rb +101 -0
  62. data/lib/roadforest/templates/affordance-doc.haml +23 -0
  63. data/lib/roadforest/templates/affordance-property-values.haml +13 -0
  64. data/lib/roadforest/templates/affordance-subject.haml +9 -0
  65. data/lib/roadforest/templates/affordance-uri-object.haml +2 -0
  66. data/lib/roadforest/templates/base/{property_value.haml → property-value.haml} +0 -0
  67. data/lib/roadforest/templates/base/{property_values.haml → property-values.haml} +0 -0
  68. data/lib/roadforest/templates/distiller/{property_value.haml → property-value.haml} +0 -0
  69. data/lib/roadforest/templates/distiller/{property_values.haml → property-values.haml} +0 -0
  70. data/lib/roadforest/templates/min/{property_values.haml → property-values.haml} +0 -0
  71. data/lib/roadforest/templates/rdfpost-curie.haml +6 -0
  72. data/lib/roadforest/test-support/dispatcher-facade.rb +2 -0
  73. data/lib/roadforest/test-support/matchers.rb +169 -5
  74. data/lib/roadforest/test-support/remote-host.rb +2 -2
  75. data/lib/roadforest/type-handlers/handler.rb +74 -0
  76. data/lib/roadforest/type-handlers/jsonld.rb +34 -0
  77. data/lib/roadforest/type-handlers/rdf-handler.rb +36 -0
  78. data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer.rb +2 -2
  79. data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/document-environment.rb +9 -8
  80. data/lib/roadforest/type-handlers/rdfa-writer/environment-decorator.rb +312 -0
  81. data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/object-environment.rb +3 -3
  82. data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/property-environment.rb +5 -11
  83. data/lib/roadforest/type-handlers/rdfa-writer/render-engine.rb +427 -0
  84. data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/render-environment.rb +33 -26
  85. data/lib/roadforest/{content-handling/type-handlers → type-handlers}/rdfa-writer/subject-environment.rb +7 -23
  86. data/lib/roadforest/type-handlers/rdfa.rb +73 -0
  87. data/lib/roadforest/type-handlers/rdfpost.rb +301 -0
  88. data/lib/roadforest/utility/class-registry.rb +23 -5
  89. data/spec/.ctrlp-root +0 -0
  90. data/spec/affordance-augmenter.rb +75 -0
  91. data/spec/affordances-flow.rb +438 -0
  92. data/spec/authorization.rb +34 -0
  93. data/spec/client.rb +13 -12
  94. data/spec/credence-annealer.rb +5 -5
  95. data/spec/focus-list.rb +8 -8
  96. data/spec/full-integration.rb +3 -3
  97. data/spec/graph-copier.rb +4 -4
  98. data/spec/graph-store.rb +19 -31
  99. data/spec/keychain.rb +82 -0
  100. data/spec/rdf-normalization.rb +2 -2
  101. data/spec/rdf-parcel.rb +3 -3
  102. data/spec/rdfa-handler.rb +514 -0
  103. data/spec/rdfpost.rb +96 -0
  104. data/spec/source-rigor.rb +57 -0
  105. data/spec/update-focus.rb +11 -10
  106. metadata +91 -66
  107. data/lib/roadforest/blob-model.rb +0 -53
  108. data/lib/roadforest/content-handling/type-handler.rb +0 -76
  109. data/lib/roadforest/content-handling/type-handlers/jsonld.rb +0 -36
  110. data/lib/roadforest/content-handling/type-handlers/rdf-handler.rb +0 -38
  111. data/lib/roadforest/content-handling/type-handlers/rdfa-writer/render-engine.rb +0 -574
  112. data/lib/roadforest/content-handling/type-handlers/rdfa.rb +0 -175
  113. data/lib/roadforest/content-handling/type-handlers/rdfpost.rb +0 -297
  114. data/lib/roadforest/model.rb +0 -209
  115. data/lib/roadforest/models.rb +0 -2
  116. data/lib/roadforest/rdf/source-rigor.rb +0 -44
  117. data/lib/roadforest/rdf/vocabulary.rb +0 -11
  118. data/lib/roadforest/resource/http/form-parsing.rb +0 -81
  119. data/lib/roadforest/resource/rdf.rb +0 -4
  120. data/spec/form-parsing.rb +0 -1
@@ -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
@@ -1,2 +0,0 @@
1
- require 'roadforest/model'
2
- require 'roadforest/blob-model'
@@ -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,11 +0,0 @@
1
- require 'roadforest/rdf'
2
-
3
- module RoadForest::RDF
4
- module Vocabulary
5
- class RF < ::RDF::Vocabulary("http://lrdesign.com/rdf/roadforest#")
6
- property :Impulse
7
- property :impulse
8
- property :begunAt
9
- end
10
- end
11
- 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
@@ -1,4 +0,0 @@
1
- require 'roadforest/resource/rdf/leaf-item'
2
- require 'roadforest/resource/rdf/parent-item'
3
- require 'roadforest/resource/rdf/list'
4
- require 'roadforest/resource/rdf/read-only'
data/spec/form-parsing.rb DELETED
@@ -1 +0,0 @@
1
- require 'roadforest/resource/http/form-parsing'