linked_rails 0.0.4.pre.ge09501794 → 0.0.4.pre.gfabf7e9f5
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/app/controllers/linked_rails/bulk_controller.rb +8 -2
- data/app/models/linked_rails/actions/item.rb +1 -1
- data/app/models/linked_rails/collection/view.rb +4 -3
- data/app/models/linked_rails/form/field_factory.rb +1 -7
- data/app/models/linked_rails/manifest.rb +8 -8
- data/app/models/linked_rails/menus/item.rb +1 -1
- data/app/serializers/linked_rails/collection/view_serializer.rb +1 -0
- data/lib/linked_rails/helpers/resource_helper.rb +4 -1
- data/lib/linked_rails/iri_mapper.rb +1 -1
- data/lib/linked_rails/model/cacheable.rb +2 -4
- data/lib/linked_rails/model/iri.rb +1 -0
- data/lib/linked_rails/storage.rb +2 -1
- data/lib/linked_rails/url.rb +11 -0
- data/lib/linked_rails.rb +5 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d12d8552b0abb2f55672ba9a5b2ae4e2c82b8b0ecd9a58b034cd71065991918f
|
4
|
+
data.tar.gz: be43a26a2c5fcae83ac4811b0e79fb9903bdba722e45e9e385a90a1e4c6534de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4db097ca23b358535b5d6db20c947046633e347a7e9cd68402bb1bf6ed4ad4d8b05290a59d1ff53523c77d7c0b1c42ad93b9cfbf468c86d60adbd2aa52be9870
|
7
|
+
data.tar.gz: 3e5c0add9dd97d2ab2764043231a0999af174e92ea197c59c68cbbc35c916edbe7169dc32d4e45d90f17e9dd77513f52c99352825c2193a1db50ba74767c2490
|
@@ -98,6 +98,8 @@ module LinkedRails
|
|
98
98
|
params = param.permit(:include, :iri)
|
99
99
|
params[:iri] = URI(params[:iri])
|
100
100
|
params
|
101
|
+
rescue URI::InvalidURIError
|
102
|
+
params.except(:iri)
|
101
103
|
end
|
102
104
|
|
103
105
|
def resource_response_body(iri, rack_body, status)
|
@@ -161,13 +163,17 @@ module LinkedRails
|
|
161
163
|
|
162
164
|
resource_response(
|
163
165
|
iri,
|
164
|
-
body: include
|
166
|
+
body: response_from_resource_body(include, iri, resource, status),
|
165
167
|
cache: resource_cache_control(resource.try(:cacheable?), status, resource_policy),
|
166
168
|
language: I18n.locale,
|
167
169
|
status: status
|
168
170
|
)
|
169
171
|
end
|
170
172
|
|
173
|
+
def response_from_resource_body(include, _iri, resource, status)
|
174
|
+
include && status == 200 ? resource_body(resource) : nil
|
175
|
+
end
|
176
|
+
|
171
177
|
def term_from_vocab(iri)
|
172
178
|
vocab = Vocab.for(iri)
|
173
179
|
tag = iri.to_s.split(vocab.to_s).last
|
@@ -245,7 +251,7 @@ module LinkedRails
|
|
245
251
|
|
246
252
|
def sanitized_relative_path(iri) # rubocop:disable Metrics/AbcSize
|
247
253
|
iri.path = "#{iri.path}/" unless iri.path&.ends_with?('/')
|
248
|
-
uri = URI(LinkedRails.iri.path.present? ? iri.to_s.split("#{LinkedRails.iri.path}/").last : iri)
|
254
|
+
uri = URI(LinkedRails.iri.path.chomp('/').present? ? iri.to_s.split("#{LinkedRails.iri.path}/").last : iri)
|
249
255
|
|
250
256
|
[uri.path, uri.query].compact.join('?')
|
251
257
|
end
|
@@ -187,7 +187,7 @@ module LinkedRails
|
|
187
187
|
|
188
188
|
def target_url_fallback # rubocop:disable Metrics/AbcSize
|
189
189
|
base = (resource.try(:singular_resource?) ? resource.singular_iri : resource.iri).dup
|
190
|
-
base.path = "#{base.path}/#{target_path}" if target_path.present?
|
190
|
+
base.path = "#{base.path.chomp('/')}/#{target_path}" if target_path.present?
|
191
191
|
base.query = Rack::Utils.parse_nested_query(base.query).merge(target_query).to_param if target_query.present?
|
192
192
|
base
|
193
193
|
end
|
@@ -8,8 +8,9 @@ module LinkedRails
|
|
8
8
|
include LinkedRails::Model
|
9
9
|
|
10
10
|
attr_accessor :collection, :filter
|
11
|
-
delegate :apply_scope, :association_base, :association_class, :
|
12
|
-
:parent, :policy, :total_page_count, :unfiltered_collection, :user_context,
|
11
|
+
delegate :apply_scope, :association_base, :association_class, :child_resource, :default_page_size, :display,
|
12
|
+
:include_members,:parent, :policy, :total_page_count, :unfiltered_collection, :user_context,
|
13
|
+
to: :collection
|
13
14
|
delegate :count, to: :members
|
14
15
|
|
15
16
|
alias id iri
|
@@ -42,7 +43,7 @@ module LinkedRails
|
|
42
43
|
end
|
43
44
|
|
44
45
|
def preview_includes
|
45
|
-
include_members ? {member_sequence: :members} : %i[member_sequence]
|
46
|
+
include_members ? {members: {}, member_sequence: :members} : %i[member_sequence]
|
46
47
|
end
|
47
48
|
|
48
49
|
def title
|
@@ -52,13 +52,7 @@ module LinkedRails
|
|
52
52
|
private
|
53
53
|
|
54
54
|
def attr_column(name)
|
55
|
-
|
56
|
-
if model_class.is_delegated_attribute?(name)
|
57
|
-
model_class.class_for_delegated_attribute(name)
|
58
|
-
else
|
59
|
-
model_class
|
60
|
-
end
|
61
|
-
column_model.column_for_attribute(name)
|
55
|
+
model_class.column_for_attribute(name)
|
62
56
|
end
|
63
57
|
|
64
58
|
def attr_to_datatype # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
|
@@ -9,7 +9,7 @@ module LinkedRails
|
|
9
9
|
Storage.hset(
|
10
10
|
:persistent,
|
11
11
|
:manifest,
|
12
|
-
LinkedRails.iri
|
12
|
+
URL.as_href(LinkedRails.iri) => web_manifest.to_json
|
13
13
|
)
|
14
14
|
end
|
15
15
|
|
@@ -41,7 +41,7 @@ module LinkedRails
|
|
41
41
|
def blob_preview_iri
|
42
42
|
return unless ActiveStorage::Blob.service.present?
|
43
43
|
|
44
|
-
LinkedRails.iri(path: 'rails/active_storage/blobs/redirect/{signed_id}/preview
|
44
|
+
"#{LinkedRails.iri(path: 'rails/active_storage/blobs/redirect')}/{signed_id}/preview"
|
45
45
|
end
|
46
46
|
|
47
47
|
def blob_upload_iri
|
@@ -138,7 +138,7 @@ module LinkedRails
|
|
138
138
|
|
139
139
|
def web_manifest_sw_section
|
140
140
|
{
|
141
|
-
src: "#{scope}/sw.js",
|
141
|
+
src: "#{scope.chomp('/')}/sw.js",
|
142
142
|
scope: scope
|
143
143
|
}
|
144
144
|
end
|
@@ -161,19 +161,19 @@ module LinkedRails
|
|
161
161
|
|
162
162
|
class << self
|
163
163
|
def destroy(iri)
|
164
|
-
Storage.hdel(:persistent, :manifest, iri)
|
164
|
+
Storage.hdel(:persistent, :manifest, URL.as_href(iri))
|
165
165
|
end
|
166
166
|
|
167
167
|
def move(from, to)
|
168
168
|
Storage.hset(
|
169
169
|
:persistent,
|
170
|
-
:
|
171
|
-
|
170
|
+
:redirect_prefix,
|
171
|
+
URL.as_href(from) => URL.as_href(to)
|
172
172
|
)
|
173
173
|
|
174
|
-
data = Storage.hget(:persistent, :manifest, from)
|
174
|
+
data = Storage.hget(:persistent, :manifest, URL.as_href(from))
|
175
175
|
|
176
|
-
Storage.hset(:persistent, :manifest, to, data) if data
|
176
|
+
Storage.hset(:persistent, :manifest, URL.as_href(to), data) if data
|
177
177
|
|
178
178
|
destroy(from)
|
179
179
|
end
|
@@ -58,7 +58,10 @@ module LinkedRails
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def new_resource_from_parent
|
61
|
-
|
61
|
+
if requested_resource.is_a?(LinkedRails.collection_class) ||
|
62
|
+
requested_resource.is_a?(LinkedRails.collection_view_class)
|
63
|
+
return requested_resource.child_resource
|
64
|
+
end
|
62
65
|
|
63
66
|
parent_resource.build_child(
|
64
67
|
controller_class,
|
@@ -38,7 +38,7 @@ module LinkedRails
|
|
38
38
|
params = Rails.application.routes.recognize_path(iri.to_s, method: method)
|
39
39
|
|
40
40
|
route_params_to_opts(params.merge(query), iri.to_s)
|
41
|
-
rescue ActionController::RoutingError
|
41
|
+
rescue ActionController::RoutingError, SystemStackError
|
42
42
|
EMPTY_IRI_OPTS.dup
|
43
43
|
end
|
44
44
|
|
@@ -17,8 +17,6 @@ module LinkedRails
|
|
17
17
|
true
|
18
18
|
end
|
19
19
|
|
20
|
-
private
|
21
|
-
|
22
20
|
def publish_create
|
23
21
|
publish_message('io.ontola.transactions.Created')
|
24
22
|
end
|
@@ -31,14 +29,14 @@ module LinkedRails
|
|
31
29
|
publish_message('io.ontola.transactions.Deleted')
|
32
30
|
end
|
33
31
|
|
32
|
+
private
|
33
|
+
|
34
34
|
def publish_message(type)
|
35
35
|
LinkedRails::InvalidationStreamWorker.perform_now(type, iri.to_s, self.class.iri.to_s)
|
36
36
|
rescue StandardError
|
37
37
|
LinkedRails::InvalidationStreamWorker.perform_later(type, iri.to_s, self.class.iri.to_s)
|
38
38
|
end
|
39
39
|
|
40
|
-
private
|
41
|
-
|
42
40
|
def should_publish_changes
|
43
41
|
cacheable? && !Rails.env.test?
|
44
42
|
end
|
data/lib/linked_rails/storage.rb
CHANGED
data/lib/linked_rails.rb
CHANGED
@@ -54,8 +54,10 @@ module LinkedRails
|
|
54
54
|
@@scheme ||= Rails.application.routes.default_url_options[:protocol] || :http # rubocop:disable Style/ClassVars
|
55
55
|
end
|
56
56
|
|
57
|
-
def iri(**
|
58
|
-
|
57
|
+
def iri(**args)
|
58
|
+
opts = {scheme: LinkedRails.scheme, host: LinkedRails.host}.merge(args)
|
59
|
+
opts[:path] = opts[:path].presence || '/'
|
60
|
+
RDF::URI.new(**opts)
|
59
61
|
end
|
60
62
|
end
|
61
63
|
|
@@ -106,4 +108,5 @@ require 'linked_rails/routes'
|
|
106
108
|
require 'linked_rails/serializer'
|
107
109
|
require 'linked_rails/translate'
|
108
110
|
require 'linked_rails/railtie'
|
111
|
+
require 'linked_rails/url'
|
109
112
|
require 'linked_rails/storage'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linked_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.4.pre.
|
4
|
+
version: 0.0.4.pre.gfabf7e9f5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arthur Dingemans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_response
|
@@ -429,6 +429,7 @@ files:
|
|
429
429
|
- lib/linked_rails/translate.rb
|
430
430
|
- lib/linked_rails/types/iri_type.rb
|
431
431
|
- lib/linked_rails/uri_template.rb
|
432
|
+
- lib/linked_rails/url.rb
|
432
433
|
- lib/linked_rails/version.rb
|
433
434
|
- lib/linked_rails/vocab.rb
|
434
435
|
- lib/nill_class_renderer.rb
|