Skip to content

Commit 8b02837

Browse files
committed
Merge pull request #34 from hyperoslo/bugfix/cannot-save-file-with-long-URL-key
Bugfix/cannot save file with long URL key
2 parents 23f28bc + c8d0d0a commit 8b02837

File tree

6 files changed

+65
-8
lines changed

6 files changed

+65
-8
lines changed

Cache.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ Pod::Spec.new do |s|
1818
s.tvos.source_files = 'Source/{iOS,Shared}/**/*'
1919

2020
s.frameworks = 'Foundation'
21+
s.dependency 'CryptoSwift'
2122
end

Cache.xcodeproj/project.pbxproj

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
9ABAE0371CCF8FF7009477CF /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9ABAE0361CCF8FF7009477CF /* CryptoSwift.framework */; };
11+
9AFE68041CCF982800B7C6AC /* Quick.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AFE68031CCF982800B7C6AC /* Quick.framework */; };
12+
9AFE68071CCF994A00B7C6AC /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AFE68051CCF986C00B7C6AC /* CryptoSwift.framework */; };
1013
D5291C291C28220B00B702C9 /* UIImage+Cache.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5291C0D1C28220B00B702C9 /* UIImage+Cache.swift */; };
1114
D5291C2D1C28220B00B702C9 /* Config.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5291C151C28220B00B702C9 /* Config.swift */; };
1215
D5291C2E1C28220B00B702C9 /* Cachable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5291C171C28220B00B702C9 /* Cachable.swift */; };
@@ -68,7 +71,6 @@
6871
D5291D961C283CFB00B702C9 /* StorageFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5291C271C28220B00B702C9 /* StorageFactory.swift */; };
6972
D5291D9A1C283DB300B702C9 /* UIImage+CacheSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5291D991C283DB300B702C9 /* UIImage+CacheSpec.swift */; };
7073
D5291D9C1C283DD900B702C9 /* NSImage+CacheSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5291D9B1C283DD900B702C9 /* NSImage+CacheSpec.swift */; };
71-
D5291D9D1C283EC000B702C9 /* Quick.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5291CD91C2835D000B702C9 /* Quick.framework */; };
7274
D5291D9E1C283EC000B702C9 /* Nimble.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5291CDA1C2835D000B702C9 /* Nimble.framework */; };
7375
D5291DA11C28405900B702C9 /* UIImage+CacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5291DA01C28405900B702C9 /* UIImage+CacheTests.swift */; };
7476
D5291DA31C2841D200B702C9 /* NSImage+CacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5291DA21C2841D200B702C9 /* NSImage+CacheTests.swift */; };
@@ -92,6 +94,9 @@
9294
/* End PBXContainerItemProxy section */
9395

9496
/* Begin PBXFileReference section */
97+
9ABAE0361CCF8FF7009477CF /* CryptoSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CryptoSwift.framework; path = Carthage/Build/iOS/CryptoSwift.framework; sourceTree = "<group>"; };
98+
9AFE68031CCF982800B7C6AC /* Quick.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quick.framework; path = Carthage/Build/Mac/Quick.framework; sourceTree = "<group>"; };
99+
9AFE68051CCF986C00B7C6AC /* CryptoSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CryptoSwift.framework; path = Carthage/Build/Mac/CryptoSwift.framework; sourceTree = "<group>"; };
95100
D5291C0D1C28220B00B702C9 /* UIImage+Cache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+Cache.swift"; sourceTree = "<group>"; };
96101
D5291C151C28220B00B702C9 /* Config.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Config.swift; sourceTree = "<group>"; };
97102
D5291C171C28220B00B702C9 /* Cachable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Cachable.swift; sourceTree = "<group>"; };
@@ -111,7 +116,6 @@
111116
D5291C6A1C2827FB00B702C9 /* BasicHybridCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasicHybridCache.swift; sourceTree = "<group>"; };
112117
D5291C6B1C2827FB00B702C9 /* Cache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Cache.swift; sourceTree = "<group>"; };
113118
D5291C721C28296B00B702C9 /* HybridCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HybridCache.swift; sourceTree = "<group>"; };
114-
D5291CD91C2835D000B702C9 /* Quick.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quick.framework; path = Carthage/Build/Mac/Quick.framework; sourceTree = "<group>"; };
115119
D5291CDA1C2835D000B702C9 /* Nimble.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Nimble.framework; path = Carthage/Build/Mac/Nimble.framework; sourceTree = "<group>"; };
116120
D5291CDF1C28374800B702C9 /* SpecHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpecHelper.swift; sourceTree = "<group>"; };
117121
D5291CE01C28374800B702C9 /* User.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = "<group>"; };
@@ -164,14 +168,14 @@
164168
isa = PBXFrameworksBuildPhase;
165169
buildActionMask = 2147483647;
166170
files = (
171+
9AFE68071CCF994A00B7C6AC /* CryptoSwift.framework in Frameworks */,
167172
);
168173
runOnlyForDeploymentPostprocessing = 0;
169174
};
170175
D5291D661C283B5400B702C9 /* Frameworks */ = {
171176
isa = PBXFrameworksBuildPhase;
172177
buildActionMask = 2147483647;
173178
files = (
174-
D5291D9D1C283EC000B702C9 /* Quick.framework in Frameworks */,
175179
D5291D9E1C283EC000B702C9 /* Nimble.framework in Frameworks */,
176180
D5291D6A1C283B5400B702C9 /* Cache.framework in Frameworks */,
177181
);
@@ -181,6 +185,8 @@
181185
isa = PBXFrameworksBuildPhase;
182186
buildActionMask = 2147483647;
183187
files = (
188+
9ABAE0371CCF8FF7009477CF /* CryptoSwift.framework in Frameworks */,
189+
9AFE68041CCF982800B7C6AC /* Quick.framework in Frameworks */,
184190
);
185191
runOnlyForDeploymentPostprocessing = 0;
186192
};
@@ -408,7 +414,8 @@
408414
D5291DA51C28454000B702C9 /* Mac */ = {
409415
isa = PBXGroup;
410416
children = (
411-
D5291CD91C2835D000B702C9 /* Quick.framework */,
417+
9AFE68051CCF986C00B7C6AC /* CryptoSwift.framework */,
418+
9AFE68031CCF982800B7C6AC /* Quick.framework */,
412419
D5291CDA1C2835D000B702C9 /* Nimble.framework */,
413420
);
414421
name = Mac;
@@ -417,6 +424,7 @@
417424
D5291DA61C28454800B702C9 /* iOS */ = {
418425
isa = PBXGroup;
419426
children = (
427+
9ABAE0361CCF8FF7009477CF /* CryptoSwift.framework */,
420428
D5DC5A6C1C205C2A003BD79B /* Quick.framework */,
421429
D5DC5A6D1C205C2A003BD79B /* Nimble.framework */,
422430
);
@@ -650,6 +658,7 @@
650658
inputPaths = (
651659
"$(SRCROOT)/Carthage/Build/iOS/Quick.framework",
652660
"$(SRCROOT)/Carthage/Build/iOS/Nimble.framework",
661+
"$(SRCROOT)/Carthage/Build/iOS/CryptoSwift.framework",
653662
);
654663
outputPaths = (
655664
);
@@ -665,6 +674,7 @@
665674
inputPaths = (
666675
"$(SRCROOT)/Carthage/Build/Mac/Quick.framework",
667676
"$(SRCROOT)/Carthage/Build/Mac/Nimble.framework",
677+
"$(SRCROOT)/Carthage/Build/Mac/CryptoSwift.framework",
668678
);
669679
outputPaths = (
670680
);
@@ -815,6 +825,10 @@
815825
DYLIB_COMPATIBILITY_VERSION = 1;
816826
DYLIB_CURRENT_VERSION = 1;
817827
DYLIB_INSTALL_NAME_BASE = "@rpath";
828+
FRAMEWORK_SEARCH_PATHS = (
829+
"$(inherited)",
830+
"$(PROJECT_DIR)/Carthage/Build/Mac",
831+
);
818832
FRAMEWORK_VERSION = A;
819833
INFOPLIST_FILE = "$(SRCROOT)/SupportFiles/Mac/Info.plist";
820834
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -836,6 +850,10 @@
836850
DYLIB_COMPATIBILITY_VERSION = 1;
837851
DYLIB_CURRENT_VERSION = 1;
838852
DYLIB_INSTALL_NAME_BASE = "@rpath";
853+
FRAMEWORK_SEARCH_PATHS = (
854+
"$(inherited)",
855+
"$(PROJECT_DIR)/Carthage/Build/Mac",
856+
);
839857
FRAMEWORK_VERSION = A;
840858
INFOPLIST_FILE = "$(SRCROOT)/SupportFiles/Mac/Info.plist";
841859
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -980,6 +998,11 @@
980998
DYLIB_COMPATIBILITY_VERSION = 1;
981999
DYLIB_CURRENT_VERSION = 1;
9821000
DYLIB_INSTALL_NAME_BASE = "@rpath";
1001+
FRAMEWORK_SEARCH_PATHS = (
1002+
"$(inherited)",
1003+
"$(PROJECT_DIR)/Carthage/Build/iOS",
1004+
"$(PROJECT_DIR)/Carthage/Build/Mac",
1005+
);
9831006
INFOPLIST_FILE = "$(SRCROOT)/SupportFiles/iOS/Info.plist";
9841007
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
9851008
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
@@ -997,6 +1020,11 @@
9971020
DYLIB_COMPATIBILITY_VERSION = 1;
9981021
DYLIB_CURRENT_VERSION = 1;
9991022
DYLIB_INSTALL_NAME_BASE = "@rpath";
1023+
FRAMEWORK_SEARCH_PATHS = (
1024+
"$(inherited)",
1025+
"$(PROJECT_DIR)/Carthage/Build/iOS",
1026+
"$(PROJECT_DIR)/Carthage/Build/Mac",
1027+
);
10001028
INFOPLIST_FILE = "$(SRCROOT)/SupportFiles/iOS/Info.plist";
10011029
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
10021030
IPHONEOS_DEPLOYMENT_TARGET = 8.0;

Cartfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
github "krzyzanowskim/CryptoSwift" "master"

Cartfile.resolved

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1-
github "Quick/Nimble" "v3.2.0"
2-
github "Quick/Quick" "v0.9.1"
1+
github "krzyzanowskim/CryptoSwift" "3f9ca1c1980fdc8e5c719d48ab81ae421b0497ee"
2+
github "Quick/Nimble" "v4.0.1"
3+
github "Quick/Quick" "v0.9.2"

Source/Shared/Storage/DiskStorage.swift

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Foundation
2+
import CryptoSwift
23

34
public class DiskStorage: StorageAware {
45

@@ -204,7 +205,19 @@ public class DiskStorage: StorageAware {
204205
// MARK: - Helpers
205206

206207
func fileName(key: String) -> String {
207-
return key.base64()
208+
if let digest = key.dataUsingEncoding(NSUTF8StringEncoding)?.md5() {
209+
var string = ""
210+
var byte: UInt8 = 0
211+
212+
for i in 0 ..< digest.length {
213+
digest.getBytes(&byte, range: NSMakeRange(i, 1))
214+
string += String(format: "%02x", byte)
215+
}
216+
217+
return string
218+
} else {
219+
return key.base64()
220+
}
208221
}
209222

210223
func filePath(key: String) -> String {

Tests/iOS/Specs/Storage/DiskStorageSpec.swift

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Quick
22
import Nimble
3+
import CryptoSwift
34
@testable import Cache
45

56
class DiskStorageSpec: QuickSpec {
@@ -178,7 +179,19 @@ class DiskStorageSpec: QuickSpec {
178179

179180
describe("#fileName") {
180181
it("returns a correct file name") {
181-
expect(storage.fileName(key)).to(equal(key.base64()))
182+
if let digest = key.dataUsingEncoding(NSUTF8StringEncoding)?.md5() {
183+
var string = ""
184+
var byte: UInt8 = 0
185+
186+
for i in 0 ..< digest.length {
187+
digest.getBytes(&byte, range: NSMakeRange(i, 1))
188+
string += String(format: "%02x", byte)
189+
}
190+
191+
expect(storage.fileName(key)).to(equal(string))
192+
} else {
193+
expect(storage.fileName(key)).to(equal(key.base64()))
194+
}
182195
}
183196
}
184197

0 commit comments

Comments
 (0)