roadforest 0.1 → 0.5

Sign up to get free protection for your applications and to get access to all the features.
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'