From 84d100ff63a3391edaadb0ced9ecfde92396d98b Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Mon, 23 May 2022 18:24:17 +0200 Subject: [PATCH 1/5] add the slice get endpoint --- controllers/slices_controller.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/controllers/slices_controller.rb b/controllers/slices_controller.rb index bc55eab1..bee8b669 100644 --- a/controllers/slices_controller.rb +++ b/controllers/slices_controller.rb @@ -6,5 +6,13 @@ class SlicesController < ApplicationController includes = LinkedData::Models::Slice.goo_attrs_to_load(includes_param) reply LinkedData::Models::Slice.where.include(includes).all end + + get '/:slice_id' do + slice = LinkedData::Models::Slice.where(acronym: params["slice_id"]).first + error 404, "Slice #{params['slice_id']} not found" if slice.nil? + check_last_modified(slice) + slice.bring(*LinkedData::Models::Slice.goo_attrs_to_load(includes_param)) + reply slice + end end end \ No newline at end of file From d822e9551bdd89b8b77790fd8f73f4140733d8bf Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Mon, 23 May 2022 18:30:43 +0200 Subject: [PATCH 2/5] add the slices create endpoint --- controllers/slices_controller.rb | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/controllers/slices_controller.rb b/controllers/slices_controller.rb index bee8b669..11f9803f 100644 --- a/controllers/slices_controller.rb +++ b/controllers/slices_controller.rb @@ -14,5 +14,35 @@ class SlicesController < ApplicationController slice.bring(*LinkedData::Models::Slice.goo_attrs_to_load(includes_param)) reply slice end + ## + # Create a new slice + post do + create_slice + end + private + + def create_slice + params ||= @params + ontologies = [] + + params["ontologies"].each do |ont| + ontologies.push(LinkedData::Models::Ontology.find(ont).first) + end + + slice = LinkedData::Models::Slice.new({ + acronym: params["acronym"], + name: params["name"], + description: params["description"], + ontologies: ontologies + }) + + if slice.valid? + slice.save + else + error 400, slice.errors + end + reply 201, slice + end + end end \ No newline at end of file From 6b598b5b076a7ebff9510ed59761fdcbec33fa79 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Mon, 23 May 2022 18:31:29 +0200 Subject: [PATCH 3/5] add the slices delete endpoint --- controllers/slices_controller.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/controllers/slices_controller.rb b/controllers/slices_controller.rb index 11f9803f..a4796baf 100644 --- a/controllers/slices_controller.rb +++ b/controllers/slices_controller.rb @@ -19,6 +19,13 @@ class SlicesController < ApplicationController post do create_slice end + + # Delete a slice + delete '/:slice' do + LinkedData::Models::Slice.find(params[:slice]).first.delete + halt 204 + end + private def create_slice From a1d37f0209ec4ed3f92985e2fae6c053947dbda9 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Mon, 23 May 2022 18:32:30 +0200 Subject: [PATCH 4/5] add the slices update endpoint --- controllers/slices_controller.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/controllers/slices_controller.rb b/controllers/slices_controller.rb index a4796baf..1cba47cb 100644 --- a/controllers/slices_controller.rb +++ b/controllers/slices_controller.rb @@ -26,6 +26,18 @@ class SlicesController < ApplicationController halt 204 end + # Update an existing slice + patch '/:slice' do + slice = LinkedData::Models::Slice.find(params[:slice]).include(LinkedData::Models::Slice.attributes(:all)).first + populate_from_params(slice, params) + if slice.valid? + slice.save + else + error 422, slice.errors + end + halt 204 + end + private def create_slice From b4bac7e368c1d2547bbfe5b6cd687554f34010cc Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Thu, 7 Sep 2023 23:32:37 +0200 Subject: [PATCH 5/5] update slice write operation to check if user is admin --- controllers/slices_controller.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/controllers/slices_controller.rb b/controllers/slices_controller.rb index 1cba47cb..04e0d53e 100644 --- a/controllers/slices_controller.rb +++ b/controllers/slices_controller.rb @@ -17,17 +17,20 @@ class SlicesController < ApplicationController ## # Create a new slice post do + error 403, "Access denied" unless current_user && current_user.admin? create_slice end # Delete a slice delete '/:slice' do + error 403, "Access denied" unless current_user && current_user.admin? LinkedData::Models::Slice.find(params[:slice]).first.delete halt 204 end # Update an existing slice patch '/:slice' do + error 403, "Access denied" unless current_user && current_user.admin? slice = LinkedData::Models::Slice.find(params[:slice]).include(LinkedData::Models::Slice.attributes(:all)).first populate_from_params(slice, params) if slice.valid?