Skip to content

Commit c2d328e

Browse files
committed
Allow for prefix before course ID (#799)
1 parent 3bb9682 commit c2d328e

17 files changed

+40
-33
lines changed

config/cadet.exs.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ config :cadet,
100100
],
101101
uploader: [
102102
assets_bucket: "<unique-identifier>-assets",
103+
assets_prefix: "courses/",
103104
sourcecasts_bucket: "<unique-identifier>-cadet-sourcecasts"
104105
],
105106
# Configuration for Sling integration (executing on remote devices)

config/dev.secrets.exs.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ config :cadet,
7878
],
7979
uploader: [
8080
assets_bucket: "source-academy-assets",
81+
assets_prefix: "courses-dev/",
8182
sourcecasts_bucket: "env-cadet-sourcecasts"
8283
],
8384
# Configuration for Sling integration (executing on remote devices)

config/test.exs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ config :cadet,
7676
],
7777
uploader: [
7878
assets_bucket: "test-sa-assets",
79+
assets_prefix: "courses-test/",
7980
sourcecasts_bucket: "test-cadet-sourcecasts"
8081
],
8182
remote_execution: [

lib/cadet/assets/assets.ex

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ defmodule Cadet.Assets.Assets do
2020
else
2121
file = upload_params.path
2222

23-
s3_path = "#{course_id}/#{folder_name}/#{file_name}"
23+
s3_path = "#{prefix()}#{course_id}/#{folder_name}/#{file_name}"
2424

2525
file
2626
|> Upload.stream_file()
@@ -36,7 +36,7 @@ defmodule Cadet.Assets.Assets do
3636
case validate_folder_name(folder_name) do
3737
:ok ->
3838
bucket()
39-
|> S3.list_objects(prefix: "#{course_id}/" <> folder_name <> "/")
39+
|> S3.list_objects(prefix: "#{prefix()}#{course_id}/" <> folder_name <> "/")
4040
|> ExAws.stream!()
4141
|> Enum.map(fn file -> file.key end)
4242

@@ -50,7 +50,7 @@ defmodule Cadet.Assets.Assets do
5050
:ok <- validate_folder_name(folder_name) do
5151
if object_exists?(course_id, folder_name, file_name) do
5252
bucket()
53-
|> S3.delete_object("#{course_id}/#{folder_name}/#{file_name}")
53+
|> S3.delete_object("#{prefix()}#{course_id}/#{folder_name}/#{file_name}")
5454
|> ExAws.request!()
5555

5656
:ok
@@ -63,7 +63,9 @@ defmodule Cadet.Assets.Assets do
6363
@spec object_exists?(integer(), binary, binary) :: boolean()
6464
def object_exists?(course_id, folder_name, file_name) do
6565
response =
66-
bucket() |> S3.head_object("#{course_id}/#{folder_name}/#{file_name}") |> ExAws.request()
66+
bucket()
67+
|> S3.head_object("#{prefix()}#{course_id}/#{folder_name}/#{file_name}")
68+
|> ExAws.request()
6769

6870
case response do
6971
{:error, _error} -> false
@@ -96,4 +98,6 @@ defmodule Cadet.Assets.Assets do
9698
end
9799

98100
defp bucket, do: :cadet |> Application.fetch_env!(:uploader) |> Keyword.get(:assets_bucket)
101+
102+
defp prefix, do: :cadet |> Application.fetch_env!(:uploader) |> Keyword.get(:assets_prefix, "")
99103
end

test/cadet/assets/assets_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ defmodule Cadet.Assets.AssetsTest do
5454
"testFolder",
5555
"test1.png"
5656
) ===
57-
"https://#{bucket()}.s3.amazonaws.com/1/testFolder/test1.png"
57+
"https://#{bucket()}.s3.amazonaws.com/courses-test/1/testFolder/test1.png"
5858
end
5959
end
6060
end

test/cadet_web/admin_controllers/admin_assets_controller_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ defmodule CadetWeb.AdminAssetsControllerTest do
128128
})
129129

130130
assert json_response(conn, 200) ===
131-
"https://#{bucket()}.s3.amazonaws.com/#{course_id}/testFolder/test.png"
131+
"https://#{bucket()}.s3.amazonaws.com/courses-test/#{course_id}/testFolder/test.png"
132132
end
133133
end
134134
end
@@ -191,7 +191,7 @@ defmodule CadetWeb.AdminAssetsControllerTest do
191191
})
192192

193193
assert json_response(conn, 200) ===
194-
"https://#{bucket()}.s3.amazonaws.com/#{course_id}/testFolder/nestedFolder/test.png"
194+
"https://#{bucket()}.s3.amazonaws.com/courses-test/#{course_id}/testFolder/nestedFolder/test.png"
195195
end
196196
end
197197
end

test/fixtures/vcr_cassettes/aws/controller_delete_asset#1.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"recv_timeout": 660000
1616
},
1717
"request_body": "",
18-
"url": "https://s3.ap-southeast-1.amazonaws.com/test-sa-assets/117/testFolder/test2.png"
18+
"url": "https://s3.ap-southeast-1.amazonaws.com/test-sa-assets/courses-test/117/testFolder/test2.png"
1919
},
2020
"response": {
2121
"binary": false,
@@ -49,7 +49,7 @@
4949
"recv_timeout": 660000
5050
},
5151
"request_body": "",
52-
"url": "https://s3.ap-southeast-1.amazonaws.com/test-sa-assets/117/testFolder/test2.png"
52+
"url": "https://s3.ap-southeast-1.amazonaws.com/test-sa-assets/courses-test/117/testFolder/test2.png"
5353
},
5454
"response": {
5555
"binary": false,

test/fixtures/vcr_cassettes/aws/controller_delete_asset#2.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"recv_timeout": 660000
1616
},
1717
"request_body": "",
18-
"url": "https://s3.ap-southeast-1.amazonaws.com/test-sa-assets/117/testFolder/nestedFolder/test2.png"
18+
"url": "https://s3.ap-southeast-1.amazonaws.com/test-sa-assets/courses-test/117/testFolder/nestedFolder/test2.png"
1919
},
2020
"response": {
2121
"binary": false,
@@ -49,7 +49,7 @@
4949
"recv_timeout": 660000
5050
},
5151
"request_body": "",
52-
"url": "https://s3.ap-southeast-1.amazonaws.com/test-sa-assets/117/testFolder/nestedFolder/test2.png"
52+
"url": "https://s3.ap-southeast-1.amazonaws.com/test-sa-assets/courses-test/117/testFolder/nestedFolder/test2.png"
5353
},
5454
"response": {
5555
"binary": false,

test/fixtures/vcr_cassettes/aws/controller_list_assets#1.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
},
1919
"response": {
2020
"binary": false,
21-
"body": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ListBucketResult xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\"><Name>test-sa-assets</Name><Prefix>117/testFolder/</Prefix><Marker></Marker><MaxKeys>1000</MaxKeys><IsTruncated>false</IsTruncated><Contents><Key>testFolder/</Key><LastModified>2020-07-04T18:53:11.000Z</LastModified><ETag>&quot;d41d8cd98f00b204e9800998ecf8427e&quot;</ETag><Size>0</Size><Owner><ID>98bd2bd2de0c976fb511f741fea454cb1026b9e1f9ac9160fd9f51d07e765f19</ID><DisplayName>unixsp+cs1101s</DisplayName></Owner><StorageClass>STANDARD</StorageClass></Contents><Contents><Key>testFolder/test.png</Key><LastModified>2020-07-04T19:04:50.000Z</LastModified><ETag>&quot;3104001edec38fadeb925b9dbddab198&quot;</ETag><Size>8035</Size><Owner><ID>98bd2bd2de0c976fb511f741fea454cb1026b9e1f9ac9160fd9f51d07e765f19</ID><DisplayName>unixsp+cs1101s</DisplayName></Owner><StorageClass>STANDARD</StorageClass></Contents><Contents><Key>testFolder/test2.png</Key><LastModified>2020-07-04T19:04:50.000Z</LastModified><ETag>&quot;3104001edec38fadeb925b9dbddab198&quot;</ETag><Size>8035</Size><Owner><ID>98bd2bd2de0c976fb511f741fea454cb1026b9e1f9ac9160fd9f51d07e765f19</ID><DisplayName>unixsp+cs1101s</DisplayName></Owner><StorageClass>STANDARD</StorageClass></Contents></ListBucketResult>",
21+
"body": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ListBucketResult xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\"><Name>test-sa-assets</Name><Prefix>courses-test/117/testFolder/</Prefix><Marker></Marker><MaxKeys>1000</MaxKeys><IsTruncated>false</IsTruncated><Contents><Key>testFolder/</Key><LastModified>2020-07-04T18:53:11.000Z</LastModified><ETag>&quot;d41d8cd98f00b204e9800998ecf8427e&quot;</ETag><Size>0</Size><Owner><ID>98bd2bd2de0c976fb511f741fea454cb1026b9e1f9ac9160fd9f51d07e765f19</ID><DisplayName>unixsp+cs1101s</DisplayName></Owner><StorageClass>STANDARD</StorageClass></Contents><Contents><Key>testFolder/test.png</Key><LastModified>2020-07-04T19:04:50.000Z</LastModified><ETag>&quot;3104001edec38fadeb925b9dbddab198&quot;</ETag><Size>8035</Size><Owner><ID>98bd2bd2de0c976fb511f741fea454cb1026b9e1f9ac9160fd9f51d07e765f19</ID><DisplayName>unixsp+cs1101s</DisplayName></Owner><StorageClass>STANDARD</StorageClass></Contents><Contents><Key>testFolder/test2.png</Key><LastModified>2020-07-04T19:04:50.000Z</LastModified><ETag>&quot;3104001edec38fadeb925b9dbddab198&quot;</ETag><Size>8035</Size><Owner><ID>98bd2bd2de0c976fb511f741fea454cb1026b9e1f9ac9160fd9f51d07e765f19</ID><DisplayName>unixsp+cs1101s</DisplayName></Owner><StorageClass>STANDARD</StorageClass></Contents></ListBucketResult>",
2222
"headers": {
2323
"Date": "Sat, 04 Jul 2020 19:04:57 GMT",
2424
"x-amz-bucket-region": "ap-southeast-1",

test/fixtures/vcr_cassettes/aws/controller_upload_asset#1.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"recv_timeout": 660000
1616
},
1717
"request_body": "",
18-
"url": "https://s3.ap-southeast-1.amazonaws.com/test-sa-assets/117/testFolder/test.png"
18+
"url": "https://s3.ap-southeast-1.amazonaws.com/test-sa-assets/courses-test/117/testFolder/test.png"
1919
},
2020
"response": {
2121
"binary": false,
@@ -45,7 +45,7 @@
4545
"recv_timeout": 660000
4646
},
4747
"request_body": "",
48-
"url": "https://s3.ap-southeast-1.amazonaws.com/test-sa-assets/117/testFolder/test.png"
48+
"url": "https://s3.ap-southeast-1.amazonaws.com/test-sa-assets/courses-test/117/testFolder/test.png"
4949
},
5050
"response": {
5151
"binary": false,
@@ -75,7 +75,7 @@
7575
"recv_timeout": 660000
7676
},
7777
"request_body": "",
78-
"url": "https://s3.ap-southeast-1.amazonaws.com/test-sa-assets/117/testFolder/test.png"
78+
"url": "https://s3.ap-southeast-1.amazonaws.com/test-sa-assets/courses-test/117/testFolder/test.png"
7979
},
8080
"response": {
8181
"binary": false,

0 commit comments

Comments
 (0)