diff options
author | Thibaut Girka <thib@sitedethib.com> | 2018-05-14 20:51:50 +0200 |
---|---|---|
committer | Thibaut Girka <thib@sitedethib.com> | 2018-05-14 20:51:50 +0200 |
commit | ba7ee67498905cbc96d531d45a80e284880e09ee (patch) | |
tree | 755476fb27484fb36bd01578f8f22d4dd8d64562 /app/helpers/jsonld_helper.rb | |
parent | 46659655439e7d76726aa38ed5d599a795b3790f (diff) | |
parent | 03b69ebc450efc07246bd64204276941b7ede3fc (diff) |
Merge branch 'master' into glitch-soc/merge
Diffstat (limited to 'app/helpers/jsonld_helper.rb')
-rw-r--r-- | app/helpers/jsonld_helper.rb | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/app/helpers/jsonld_helper.rb b/app/helpers/jsonld_helper.rb index e9056166c..9d2b6cf00 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 |