From 9243211904f7b17754bc799a3386965018037650 Mon Sep 17 00:00:00 2001 From: Imad Bourouche Date: Fri, 24 Jan 2025 16:06:10 +0100 Subject: [PATCH 1/2] add / route for SemanticartefactCatalog --- controllers/home_controller.rb | 44 +++++++++++++++---- controllers/submission_metadata_controller.rb | 3 ++ 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/controllers/home_controller.rb b/controllers/home_controller.rb index 29aa851c..4caa9a93 100644 --- a/controllers/home_controller.rb +++ b/controllers/home_controller.rb @@ -31,15 +31,27 @@ class HomeController < ApplicationController routes_hash[route_no_slash] = LinkedData.settings.rest_url_prefix + route_no_slash end - config = LinkedData::Models::PortalConfig.current_portal_config - - federated_portals = config.federated_portals - federated_portals. transform_values! { |v| v.delete(:apikey) ; v } - config.init_federated_portals_settings(federated_portals) - config.id = RDF::URI.new(LinkedData.settings.id_url_prefix) - config.class.link_to *routes_hash.map { |key, url| LinkedData::Hypermedia::Link.new(key, url, context[key]) } + catalog = LinkedData::Models::SemanticArtefactCatalog.all.first + catalog = create_catalog if catalog.nil? + catalog.bring(*LinkedData::Models::SemanticArtefactCatalog.goo_attrs_to_load(includes_param)) + catalog.federated_portals = catalog.federated_portals.map { |item| JSON.parse(item.gsub('=>', ':').gsub('\"', '"')) } + catalog.federated_portals.each { |item| item.delete('apikey') } + catalog.fundedBy = catalog.fundedBy.map { |item| JSON.parse(item.gsub('=>', ':').gsub('\"', '"')) } + catalog.class.link_to *routes_hash.map { |key, url| LinkedData::Hypermedia::Link.new(key, url, context[key]) } + + reply catalog + end - reply config + patch do + catalog = LinkedData::Models::SemanticArtefactCatalog.where.first + error 422, "There is no catalog configs in the triple store" if catalog.nil? + populate_from_params(catalog, params) + if catalog.valid? + catalog.save + else + error 422, catalog.errors + end + halt 204 end get "documentation" do @@ -239,6 +251,22 @@ def routes_list navigable_routes end + private + + def create_catalog + catalog = nil + catalogs = LinkedData::Models::SemanticArtefactCatalog.all + if catalogs.nil? || catalogs.empty? + catalog = instance_from_params(LinkedData::Models::SemanticArtefactCatalog, {"acronym" => "ontoportal"}) + if catalog.valid? + catalog.save + else + error 422, catalog.errors + end + end + catalog + end + end end diff --git a/controllers/submission_metadata_controller.rb b/controllers/submission_metadata_controller.rb index db6fbb78..7007f837 100644 --- a/controllers/submission_metadata_controller.rb +++ b/controllers/submission_metadata_controller.rb @@ -13,4 +13,7 @@ class SubmissionMetadataController < ApplicationController reply klass_metadata(LinkedData::Models::Ontology, "ontology_metadata") end + get "/catalog_metadata" do + reply klass_metadata(LinkedData::Models::SemanticArtefactCatalog, "catalog_metadata") + end end \ No newline at end of file From 38d5a95ad7ab2860ec0343eb81edb168e076c2cf Mon Sep 17 00:00:00 2001 From: Imad Bourouche Date: Tue, 28 Jan 2025 19:05:07 +0100 Subject: [PATCH 2/2] add /doc/api route --- controllers/home_controller.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/controllers/home_controller.rb b/controllers/home_controller.rb index 4caa9a93..91842779 100644 --- a/controllers/home_controller.rb +++ b/controllers/home_controller.rb @@ -54,6 +54,10 @@ class HomeController < ApplicationController halt 204 end + get "doc/api" do + redirect "/documentation", 301 + end + get "documentation" do @metadata_all = metadata_all.sort { |a, b| a[0].name <=> b[0].name } haml "documentation/documentation".to_sym, :layout => "documentation/layout".to_sym @@ -257,7 +261,7 @@ def create_catalog catalog = nil catalogs = LinkedData::Models::SemanticArtefactCatalog.all if catalogs.nil? || catalogs.empty? - catalog = instance_from_params(LinkedData::Models::SemanticArtefactCatalog, {"acronym" => "ontoportal"}) + catalog = instance_from_params(LinkedData::Models::SemanticArtefactCatalog, {"test_attr_to_persist" => "test_to_persist"}) if catalog.valid? catalog.save else