summaryrefslogtreecommitdiffstats
path: root/app/helpers/jsonld_helper.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/helpers/jsonld_helper.rb')
-rw-r--r--app/helpers/jsonld_helper.rb15
1 files changed, 10 insertions, 5 deletions
diff --git a/app/helpers/jsonld_helper.rb b/app/helpers/jsonld_helper.rb
index e9056166c10..9d2b6cf00d2 100644
--- a/app/helpers/jsonld_helper.rb
+++ b/app/helpers/jsonld_helper.rb
@@ -52,18 +52,22 @@ module JsonLdHelper
graph.dump(:normalize)
end
- def fetch_resource(uri, id)
+ def fetch_resource(uri, id, on_behalf_of = nil)
unless id
- json = fetch_resource_without_id_validation(uri)
+ json = fetch_resource_without_id_validation(uri, on_behalf_of)
return unless json
uri = json['id']
end
- json = fetch_resource_without_id_validation(uri)
+ json = fetch_resource_without_id_validation(uri, on_behalf_of)
json.present? && json['id'] == uri ? json : nil
end
- def fetch_resource_without_id_validation(uri)
+ def fetch_resource_without_id_validation(uri, on_behalf_of = nil)
+ build_request(uri, on_behalf_of).perform do |response|
+ return body_to_json(response.body_with_limit) if response.code == 200
+ end
+ # If request failed, retry without doing it on behalf of a user
build_request(uri).perform do |response|
response.code == 200 ? body_to_json(response.body_with_limit) : nil
end
@@ -85,8 +89,9 @@ module JsonLdHelper
private
- def build_request(uri)
+ def build_request(uri, on_behalf_of = nil)
request = Request.new(:get, uri)
+ request.on_behalf_of(on_behalf_of) if on_behalf_of
request.add_headers('Accept' => 'application/activity+json, application/ld+json')
request
end