Skip to content

Commit b602a62

Browse files
committed
Redirect old CSV preview URLs
After the new /csv-preview URL is in place, we need to redirect asset URLs with /media/…/prefix to the new URL.
1 parent 943c42a commit b602a62

File tree

6 files changed

+29
-11
lines changed

6 files changed

+29
-11
lines changed

app/controllers/csv_preview_controller.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ def show
88
@asset = GdsApi.asset_manager.asset(params[:id]).to_hash
99

1010
return error_410 if @asset["deleted"] || @asset["redirect_url"].present?
11-
if draft_asset? && served_from_asset_host?
12-
redirect_to(Plek.find("draft-assets") + request.path, allow_other_host: true) and return
11+
if draft_asset? && served_from_origin_host?
12+
redirect_to(Plek.find("draft-origin", external: true) + request.path, allow_other_host: true) and return
1313
end
1414

1515
parent_document_uri = @asset["parent_document_url"]
@@ -52,7 +52,7 @@ def draft_asset?
5252
@asset["draft"] == true
5353
end
5454

55-
def served_from_asset_host?
56-
request.hostname == URI.parse(Plek.find("assets")).hostname
55+
def served_from_origin_host?
56+
request.hostname == URI.parse(Plek.find("www", external: true)).hostname
5757
end
5858
end
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class CsvPreviewRedirectController < ApplicationController
2+
before_action { expires_in(1.day, public: true) }
3+
4+
def redirect
5+
csv_preview_path = "/csv-preview/#{params[:id]}/#{params[:filename]}"
6+
host = served_from_draft_asset_host? ? Plek.find("draft-origin", external: true) : Plek.find("www", external: true)
7+
8+
redirect_to(host + csv_preview_path,
9+
status: :moved_permanently,
10+
allow_other_host: true)
11+
end
12+
13+
private
14+
15+
def served_from_draft_asset_host?
16+
request.hostname == URI.parse(Plek.find("draft-assets")).hostname
17+
end
18+
end

config/routes.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
get "/find-licences/:slug/:authority_slug/:interaction", to: "licence_transaction#authority_interaction", as: "licence_transaction_authority_interaction"
7979

8080
# Old style media previews (compatible with preview_url)
81-
get "/media/:id/:filename/preview", to: "csv_preview#show", filename: /[^\/]+/
81+
get "/media/:id/:filename/preview", to: "csv_preview_redirect#redirect", filename: /[^\/]+/
8282
# New style CSV previews (using a different path to avoid the special routing for preview_url)
8383
get "/csv-preview/:id/:filename", to: "csv_preview#show", filename: /[^\/]+/, defaults: { format: "html" }
8484

spec/requests/csv_preview_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
end
1717

1818
it "redirects to parent" do
19-
get "/#{path_from_filename(asset_manager_filename)}/preview"
19+
get "/csv-preview/#{asset_manager_id}/#{asset_manager_filename}.csv"
2020

2121
expect(response).to redirect_to(parent_document_url)
2222
end
@@ -29,7 +29,7 @@
2929
end
3030

3131
it "redirects to parent" do
32-
get "/#{path_from_filename(asset_manager_filename)}/preview"
32+
get "/csv-preview/#{asset_manager_id}/#{asset_manager_filename}.csv"
3333

3434
expect(response).to have_http_status(:not_found)
3535
end

spec/routing/csv_previews_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
RSpec.describe "CSV previews" do
22
it "routes old style paths to the CsvPreviewController" do
33
expect(get("/media/000000000000000000000000/some-file.csv/preview")).to route_to(
4-
controller: "csv_preview",
5-
action: "show",
4+
controller: "csv_preview_redirect",
5+
action: "redirect",
66
id: "000000000000000000000000",
77
filename: "some-file.csv",
88
)

spec/system/csv_preview_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,11 @@
135135
before do
136136
asset_manager_response = { id: "https://asset-manager.dev.gov.uk/assets/foo", parent_document_url:, draft: true }
137137
stub_asset_manager_has_an_asset(asset_manager_id, asset_manager_response, "/#{filename}.csv")
138-
visit "http://assets.dev.gov.uk//#{asset_media_url_path}/preview"
138+
visit "http://assets.dev.gov.uk/#{asset_media_url_path}/preview"
139139
end
140140

141141
it "redirects to the draft assets host" do
142-
expect(current_url).to eq("http://draft-assets.dev.gov.uk/#{asset_media_url_path}/preview")
142+
expect(current_url).to eq("http://draft-origin.dev.gov.uk/csv-preview/#{asset_manager_id}/#{filename}.csv")
143143
end
144144
end
145145

0 commit comments

Comments
 (0)