From b9a43df7fedf4f0a4e296a9c8a39588b3648a76f Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Mon, 7 Nov 2022 16:38:24 +1100 Subject: [PATCH] Include DFC version in API URL And let the OFN app decide under which name to mount the DFC engine. It simplifies the code and will make it more flexible to introduce other versions in the future. --- config/routes/api.rb | 2 +- .../dfc_provider/catalog_item_serializer.rb | 4 ++-- .../dfc_provider/enterprise_serializer.rb | 2 +- .../serializers/dfc_provider/person_serializer.rb | 2 +- .../dfc_provider/supplied_product_serializer.rb | 2 +- engines/dfc_provider/config/routes.rb | 10 ++++------ .../dfc_provider/catalog_item_serializer_spec.rb | 14 ++++++-------- .../supplied_product_serializer_spec.rb | 7 +++---- 8 files changed, 19 insertions(+), 24 deletions(-) diff --git a/config/routes/api.rb b/config/routes/api.rb index 42899a0baf..08bfb6faa2 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -8,7 +8,7 @@ Openfoodnetwork::Application.routes.draw do constraints FeatureToggleConstraint.new(:dfc_provider) do # Mount DFC API endpoints - mount DfcProvider::Engine, at: '/' + mount DfcProvider::Engine, at: '/dfc-v1.6/' end namespace :v0 do diff --git a/engines/dfc_provider/app/serializers/dfc_provider/catalog_item_serializer.rb b/engines/dfc_provider/app/serializers/dfc_provider/catalog_item_serializer.rb index 83b8dcac8a..585c66b06d 100644 --- a/engines/dfc_provider/app/serializers/dfc_provider/catalog_item_serializer.rb +++ b/engines/dfc_provider/app/serializers/dfc_provider/catalog_item_serializer.rb @@ -14,7 +14,7 @@ module DfcProvider key: 'dfc:offeredThrough' def id - dfc_provider_routes.dfc_provider_enterprise_catalog_item_url( + dfc_provider_routes.enterprise_catalog_item_url( enterprise_id: object.product.supplier_id, id: object.id, host: host @@ -41,7 +41,7 @@ module DfcProvider private def reference_id - dfc_provider_routes.dfc_provider_enterprise_supplied_product_url( + dfc_provider_routes.enterprise_supplied_product_url( enterprise_id: object.product.supplier_id, id: object.id, host: host diff --git a/engines/dfc_provider/app/serializers/dfc_provider/enterprise_serializer.rb b/engines/dfc_provider/app/serializers/dfc_provider/enterprise_serializer.rb index 28616c077d..181b427967 100644 --- a/engines/dfc_provider/app/serializers/dfc_provider/enterprise_serializer.rb +++ b/engines/dfc_provider/app/serializers/dfc_provider/enterprise_serializer.rb @@ -16,7 +16,7 @@ module DfcProvider serializer: DfcProvider::CatalogItemSerializer def id - dfc_provider_routes.dfc_provider_enterprise_url( + dfc_provider_routes.enterprise_url( id: object.id, host: host ) diff --git a/engines/dfc_provider/app/serializers/dfc_provider/person_serializer.rb b/engines/dfc_provider/app/serializers/dfc_provider/person_serializer.rb index bddc61b1dd..fdb202a57a 100644 --- a/engines/dfc_provider/app/serializers/dfc_provider/person_serializer.rb +++ b/engines/dfc_provider/app/serializers/dfc_provider/person_serializer.rb @@ -26,7 +26,7 @@ module DfcProvider end def id - dfc_provider_routes.dfc_provider_person_url( + dfc_provider_routes.person_url( id: object.id, host: host ) diff --git a/engines/dfc_provider/app/serializers/dfc_provider/supplied_product_serializer.rb b/engines/dfc_provider/app/serializers/dfc_provider/supplied_product_serializer.rb index 6fd3597eea..638afb4769 100644 --- a/engines/dfc_provider/app/serializers/dfc_provider/supplied_product_serializer.rb +++ b/engines/dfc_provider/app/serializers/dfc_provider/supplied_product_serializer.rb @@ -17,7 +17,7 @@ module DfcProvider has_many :physical_characteristics, key: 'dfc:physicalCharacterisctics' def id - dfc_provider_routes.dfc_provider_enterprise_supplied_product_url( + dfc_provider_routes.enterprise_supplied_product_url( enterprise_id: object.product.supplier_id, id: object.id, host: host diff --git a/engines/dfc_provider/config/routes.rb b/engines/dfc_provider/config/routes.rb index f081977d2c..afa2f8e638 100644 --- a/engines/dfc_provider/config/routes.rb +++ b/engines/dfc_provider/config/routes.rb @@ -1,11 +1,9 @@ # frozen_string_literal: true DfcProvider::Engine.routes.draw do - scope :dfc_provider, as: :dfc_provider, path: '/dfc_provider' do - resources :enterprises, only: [:show] do - resources :catalog_items, only: [:index, :show] - resources :supplied_products, only: [:show] - end - resources :persons, only: [:show] + resources :enterprises, only: [:show] do + resources :catalog_items, only: [:index, :show] + resources :supplied_products, only: [:show] end + resources :persons, only: [:show] end diff --git a/engines/dfc_provider/spec/serializers/dfc_provider/catalog_item_serializer_spec.rb b/engines/dfc_provider/spec/serializers/dfc_provider/catalog_item_serializer_spec.rb index 83f392b77d..d8a0266dda 100644 --- a/engines/dfc_provider/spec/serializers/dfc_provider/catalog_item_serializer_spec.rb +++ b/engines/dfc_provider/spec/serializers/dfc_provider/catalog_item_serializer_spec.rb @@ -11,12 +11,11 @@ describe DfcProvider::CatalogItemSerializer do describe '#id' do let(:catalog_item_id) { [ - 'http://test.host/api/dfc_provider', - 'enterprises', + "http://test.host/api/dfc-v1.6/enterprises/", product.supplier_id, - 'catalog_items', + "/catalog_items/", variant.id - ].join('/') + ].join } it 'returns the expected value' do @@ -27,12 +26,11 @@ describe DfcProvider::CatalogItemSerializer do describe '#references' do let(:supplied_product_id) { [ - 'http://test.host/api/dfc_provider', - 'enterprises', + "http://test.host/api/dfc-v1.6/enterprises/", product.supplier_id, - 'supplied_products', + "/supplied_products/", variant.id - ].join('/') + ].join } it 'returns the expected value' do diff --git a/engines/dfc_provider/spec/serializers/dfc_provider/supplied_product_serializer_spec.rb b/engines/dfc_provider/spec/serializers/dfc_provider/supplied_product_serializer_spec.rb index 8f5c348d04..49b8e291ea 100644 --- a/engines/dfc_provider/spec/serializers/dfc_provider/supplied_product_serializer_spec.rb +++ b/engines/dfc_provider/spec/serializers/dfc_provider/supplied_product_serializer_spec.rb @@ -11,12 +11,11 @@ describe DfcProvider::SuppliedProductSerializer do describe '#id' do let(:supplied_product_id) { [ - 'http://test.host/api/dfc_provider', - 'enterprises', + "http://test.host/api/dfc-v1.6/enterprises/", product.supplier_id, - 'supplied_products', + "/supplied_products/", variant.id - ].join('/') + ].join } it 'returns the expected value' do