From 9460d17417e1ad8d5c582c106be7c43f94586a21 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Mon, 29 Sep 2025 16:31:46 +1000 Subject: [PATCH] Publish DFC endpoints as JSON --- app/controllers/well_known_controller.rb | 13 +++++++++++++ config/routes.rb | 3 +++ public/.well-known/dfc | 4 ---- spec/requests/well_known_spec.rb | 3 ++- 4 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 app/controllers/well_known_controller.rb delete mode 100644 public/.well-known/dfc diff --git a/app/controllers/well_known_controller.rb b/app/controllers/well_known_controller.rb new file mode 100644 index 0000000000..e6999ae1e6 --- /dev/null +++ b/app/controllers/well_known_controller.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class WellKnownController < ApplicationController + layout nil + + def dfc + base = "https://github.com/datafoodconsortium/taxonomies/releases/latest/download/scopes.rdf#" + render json: { + "#{base}ReadEnterprise" => "/api/dfc/enterprises/", + "#{base}ReadProducts" => "/api/dfc/supplied_products/", + } + end +end diff --git a/config/routes.rb b/config/routes.rb index 7537dd4615..0946d21ab7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -29,6 +29,9 @@ Openfoodnetwork::Application.routes.draw do get '/orders/:id/token/:token' => 'spree/orders#show', :as => :token_order get '/payments/:id/authorize' => 'payments#redirect_to_authorize', as: "authorize_payment" + # Well known paths + get "/.well-known/dfc/", to: "well_known#dfc" + resource :cart, controller: "cart" do post :populate end diff --git a/public/.well-known/dfc b/public/.well-known/dfc deleted file mode 100644 index c02097d7ec..0000000000 --- a/public/.well-known/dfc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "https://github.com/datafoodconsortium/taxonomies/releases/latest/download/scopes.rdf#ReadEnterprise": "/api/dfc/enterprises/", - "https://github.com/datafoodconsortium/taxonomies/releases/latest/download/scopes.rdf#ReadProducts": "/api/dfc/supplied_products/", -} diff --git a/spec/requests/well_known_spec.rb b/spec/requests/well_known_spec.rb index d9fad20c50..9f6f423958 100644 --- a/spec/requests/well_known_spec.rb +++ b/spec/requests/well_known_spec.rb @@ -8,8 +8,9 @@ RSpec.describe "/.well-known/" do get "/.well-known/dfc/" expect(response).to have_http_status :ok - expect(response.content_type).to eq "text/plain" # Should be JSON! expect(response.body).to include "ReadEnterprise" + expect(response.content_type).to eq "application/json; charset=utf-8" + expect(response.parsed_body.count).to eq 2 end end end