Module: URIResolver
- Includes:
- JSONModel
- Included in:
- ArchivesSpaceService
- Defined in:
- backend/app/lib/uri_resolver.rb
Defined Under Namespace
Classes: URIResolver
Class Method Summary
(collapse)
Instance Method Summary
(collapse)
Methods included from JSONModel
JSONModel, #JSONModel, add_error_handler, all, allow_unmapped_enum_value, backend_url, client_mode?, custom_validations, destroy_model, enum_default_value, enum_values, handle_error, init, load_schema, #models, models, parse_jsonmodel_ref, parse_reference, repository, repository_for, schema_src, set_repository, strict_mode, strict_mode?, with_repository
Class Method Details
+ (Object) ensure_reference_is_valid(reference, active_repository = nil)
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
|
# File 'backend/app/lib/uri_resolver.rb', line 225
def self.ensure_reference_is_valid(reference, active_repository = nil)
if active_repository && \
reference.start_with?("/repositories/") && \
reference !~ /^\/repositories\/#{active_repository}($|\/)/
raise ReferenceError.new("Inter-repository links are not allowed in this operation! (Bad link: '#{reference}'; Active repo: '#/repositories/#{active_repository}')")
end
if !self.record_exists?(reference)
raise ReferenceError.new("Reference does not exist! (Reference: '#{reference}')")
end
end
|
+ (Object) forward_rack_request(method, uri, env)
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
|
# File 'backend/app/lib/uri_resolver.rb', line 190
def self.forward_rack_request(method, uri, env)
if env
env = env.merge('ASPACE_REENTRANT' => true, 'PATH_INFO' => uri,
'REQUEST_METHOD' => method)
else
env = {
'REQUEST_METHOD' => method,
'SCRIPT_NAME' => "",
'PATH_INFO' => uri,
'QUERY_STRING' => "",
'SERVER_NAME' => "archivesspace.org",
'SERVER_PORT' => 80,
'rack.input' => StringIO.new,
'ASPACE_REENTRANT' => true
}
end
ArchivesSpaceService.call(env)
end
|
+ (Boolean) record_exists?(uri)
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
|
# File 'backend/app/lib/uri_resolver.rb', line 242
def self.record_exists?(uri)
parsed = JSONModel.parse_reference(uri)
if parsed
begin
model = Kernel.const_get(parsed[:type].camelize)
return !model[parsed[:id]].nil?
rescue NameError
return true
end
end
false
end
|
+ (Object) resolve_references(value, properties_to_resolve, env)
211
212
213
214
215
216
217
218
|
# File 'backend/app/lib/uri_resolver.rb', line 211
def self.resolve_references(value, properties_to_resolve, env)
return value if (properties_to_resolve.nil? || env['ASPACE_REENTRANT'])
properties = Array(properties_to_resolve).map {|p| p.split(/::/)}
URIResolver.new(properties, env).resolve_references(value)
end
|
Instance Method Details
- (Object) resolve_references(*args)
220
221
222
|
# File 'backend/app/lib/uri_resolver.rb', line 220
def resolve_references(*args)
::URIResolver.resolve_references(*args, env)
end
|