Skip to content

Commit 7257dc6

Browse files
committed
Handle file extensions
1 parent c6c7f7b commit 7257dc6

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

Source/Shared/Storage/DiskStorage.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,15 @@ extension DiskStorage {
162162
- Returns: A md5 string
163163
*/
164164
func makeFileName(for key: String) -> String {
165-
return MD5(key)
165+
let fileExtension = URL(fileURLWithPath: key).pathExtension
166+
let fileName = MD5(key)
167+
168+
switch fileExtension.isEmpty {
169+
case true:
170+
return fileName
171+
case false:
172+
return "\(fileName).\(fileExtension)"
173+
}
166174
}
167175

168176
/**

Tests/iOS/Tests/Storage/DiskStorageTests.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,15 @@ final class DiskStorageTests: XCTestCase {
9292
XCTAssertEqual(entry?.expiry.date, expiry.date)
9393
}
9494

95+
func testCacheEntryPath() throws {
96+
let key = "test.mp4"
97+
try storage.setObject(testObject, forKey: key)
98+
let entry = try storage.entry(forKey: key)
99+
let filePath = storage.makeFilePath(for: key)
100+
101+
XCTAssertEqual(entry.filePath, filePath)
102+
}
103+
95104
/// Test that it resolves cached object
96105
func testSetObject() throws {
97106
try storage.setObject(testObject, forKey: key)
@@ -198,6 +207,7 @@ final class DiskStorageTests: XCTestCase {
198207
/// Test that it returns a correct file name
199208
func testMakeFileName() {
200209
XCTAssertEqual(storage.makeFileName(for: key), MD5(key))
210+
XCTAssertEqual(storage.makeFileName(for: "test.mp4"), "\(MD5("test.mp4")).mp4")
201211
}
202212

203213
/// Test that it returns a correct file path

0 commit comments

Comments
 (0)