Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: URI drerfrencement content negotiation #72

Merged
merged 25 commits into from
Mar 18, 2024

Conversation

imadbourouche
Copy link
Member

@imadbourouche imadbourouche commented Mar 11, 2024

Prerequisites

Context

Content negotiation is a critical aspect of modern web applications, allowing them to dynamically determine the most appropriate representation of resources based on the client's preferences, as expressed through the Accept header in HTTP requests.

See #66 for more details on the context

Feature Added: Content Negotiation Middleware

  • The recent addition to the project introduces a middleware component designed to facilitate content negotiation within the application particularly focusing on the serialization of ontology resources into various formats.
  • it scrutinizes the Accept header provided by the client and selectively determines the most suitable content type to respond with.
  • This determination is based on a predefined set of rules, which encompass various common media types and their respective subtypes.

Accepted headers

  • Default = application/n-triples
Accept Header Content Type
/ Default
text/* Default
application/n-triples application/n-triples
text/turtle text/turtle
application/* application/ld+json
application/json application/ld+json
application/ld+json application/ld+json
application/xml application/rdf+xml
application/rdf+xml application/rdf+xml
text/xml application/rdf+xml
text/rdf+xml application/rdf+xml
Responses
http code content-type response Vary
200 accepted header Resource serialized in requested format Accept, Origin
406 text/plain Not Acceptable /

Copy link

codecov bot commented Mar 12, 2024

Codecov Report

Attention: Patch coverage is 71.66667% with 17 lines in your changes are missing coverage. Please review.

Project coverage is 70.93%. Comparing base (e4eef92) to head (fd3f9ea).

Files Patch % Lines
lib/rack/content_negotiation.rb 69.81% 16 Missing ⚠️
controllers/dereference_resource_controller.rb 85.71% 1 Missing ⚠️
Additional details and impacted files
@@               Coverage Diff               @@
##           development      #72      +/-   ##
===============================================
- Coverage        70.94%   70.93%   -0.01%     
===============================================
  Files               66       67       +1     
  Lines             3455     3503      +48     
===============================================
+ Hits              2451     2485      +34     
- Misses            1004     1018      +14     
Flag Coverage Δ
unittests 70.93% <71.66%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@syphax-bouazzouni syphax-bouazzouni changed the title Feature/content negotiation Feature: URI drerfrencement content negotiation Mar 12, 2024
@syphax-bouazzouni syphax-bouazzouni merged commit ccf4f77 into development Mar 18, 2024
26 checks passed
syphax-bouazzouni added a commit that referenced this pull request May 22, 2024
…RI content negotiation and Ontology metadata and data indexation (#73)

* Feature: Migrate to virtuoso (#67)

* set up multiple triple store test environment

* optimize api tests

* Fix: update ncbo_annotator gem version (#71)

* update ncbo_annotator gem version

* update alegrograph to version 8.1.0

* Feature: use the new  SOLR Schema API instead of SOLR config files  (#68)

* update docker compose to use standard SOLR not the ontoportal configured

* update term search to use the new Schema API and remove config files

* update properties search to use the new Schema API & remove config files

* update class and properties schema to use the existent dynamic names

* Feature: resolving resources within specific ontologies, supporting various output formats(#69)

* remove useless line preventing sending the reset password email (#65)

* [ontoportal-bot] Gemfile.lock update

* Feature: api endpoint returns json-ld  for the element with that URI

* implement GET, POST requests, and GET /parse to submit INRATHES ontology

* Enhance tests using real data submission

* Enhance bin/ontoportal to make it able to run localy with UI

* Small fixes

- change controller name and test controller name
- remove /parse endpoint
- rackup to shotgun in bin/ontoportal

* Fix test dereference resource controller

- in json test, before we test the result we sort the hashes with the function (sort_nested_hash)
- in xml, ntriples and turtle, we split the result and the expected result, sort them and compare them

* update gemfile: add json-ld (3.0.2)

* change derefrencement namespacing and clean code

* Fix dereference resource tests expected resultsto handle parse triples

* fix xml serialization test for AG and Gb by cleaning the xml string

---------

Co-authored-by: OntoPortal Bot <ontoportal.bot.lirmm@gmail.com>
Co-authored-by: imadbourouche <ji_bourouche@esi.dz>

* Feature: URI drerfrencement content negotiation (#72)

* remove useless line preventing sending the reset password email (#65)

* [ontoportal-bot] Gemfile.lock update

* Feature: api endpoint returns json-ld  for the element with that URI

* implement GET, POST requests, and GET /parse to submit INRATHES ontology

* Enhance tests using real data submission

* Enhance bin/ontoportal to make it able to run localy with UI

* Small fixes

- change controller name and test controller name
- remove /parse endpoint
- rackup to shotgun in bin/ontoportal

* Fix test dereference resource controller

- in json test, before we test the result we sort the hashes with the function (sort_nested_hash)
- in xml, ntriples and turtle, we split the result and the expected result, sort them and compare them

* update gemfile: add json-ld (3.0.2)

* change derefrencement namespacing and clean code

* Fix dereference resource tests expected resultsto handle parse triples

* Feature: add content negotiation middleware

* Add headers to tests instead of output_format

* Apply middleware to only /ontologies/:acronym/resolve/:uri

* Add test cases for AllegroGraph and fix xml test

* move the content_negotiation middleware into rack folder and  module

* re-implement again the usage of  the output_format param if no format is given in the request header

* clean the tests for no more necessary checks

* clean and simplify the content negotiation middleware

* add the accepted format in the error response of resolvability endpoint

* refactor the content negotiation middleware code to be more clear

---------

Co-authored-by: Syphax bouazzouni <gs_bouazzouni@esi.dz>
Co-authored-by: OntoPortal Bot <ontoportal.bot.lirmm@gmail.com>

* Fix: user creation security  (#60)

* extract slice tests helper to the parent class for reusability

* add a test for the creation of an admin user

* enforce the security of admin user creation

* update slices controller to enforce admin security

* Fix: the content negotiation by removing a no needed require

* Feature: Indexation administration & Ontologies and Agents search  (#70)

* index submission and agents metadata

* add search administration endpoints to init schema and index batch

* add ontology and agent search endpoints

* add agent and ontology search tests

* add admin search in collections

* make the search admin use directly the solr connector

* implement search ontologies content search endpoint

* enforce solr models indexing one by one to prevent batch fails

* add detType tov search ontologies  content search endpoint

* fix content ontology search pagination

* add ontology search content types filter

* Feature: Add accessibility security to ontology metadata & content search results  (#74)

* add ontology accessibility restriction  to ontology metadata search

* add ontology accessibility restriction  to ontology content search

* add search results accessibility security test

* fix: enable user creation notification (#76)

* Fix: Invalidating cache on insert & fix Redis warning (#77)

* Merge pull request https://github.com/ncbo/ontologies_api/pull/120from ncbo/remove_redis-activesupport

Remove redis activesupport

* use the branch development of sparql client

* Feature: mappings statistics slices support (#78)

* restrict mapping statistics ontologies to the ontologies of the current slice

* add a test for the mappings slices support

* add test for mappings statistics slices support

---------

Co-authored-by: OntoPortal Bot <ontoportal.bot.lirmm@gmail.com>
Co-authored-by: imadbourouche <ji_bourouche@esi.dz>
Co-authored-by: Bilel Kihal <61744974+Bilelkihal@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants