Skip to content

Commit 48668a4

Browse files
committed
Initial implementation of FTP protocol
1 parent ee8221b commit 48668a4

File tree

13 files changed

+1194
-760
lines changed

13 files changed

+1194
-760
lines changed

Foundation.xcodeproj/project.pbxproj

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
/* Begin PBXBuildFile section */
1010
0383A1751D2E558A0052E5D1 /* TestNSStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0383A1741D2E558A0052E5D1 /* TestNSStream.swift */; };
11-
03B6F5841F15F339004F25AF /* TestNSURLProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03B6F5831F15F339004F25AF /* TestNSURLProtocol.swift */; };
11+
03B6F5841F15F339004F25AF /* TestNSURLProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03B6F5831F15F339004F25AF /* TestNSURLProtocol.swift */; };
1212
1520469B1D8AEABE00D02E36 /* HTTPServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1520469A1D8AEABE00D02E36 /* HTTPServer.swift */; };
1313
159884921DCC877700E3314C /* TestNSHTTPCookieStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 159884911DCC877700E3314C /* TestNSHTTPCookieStorage.swift */; };
1414
231503DB1D8AEE5D0061694D /* TestNSDecimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 231503DA1D8AEE5D0061694D /* TestNSDecimal.swift */; };
@@ -301,11 +301,13 @@
301301
5BF7AEC01BCD51F9008F214A /* NSUUID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BDC3F4B1BCC5DCB00ED97BB /* NSUUID.swift */; };
302302
5BF7AEC11BCD51F9008F214A /* NSValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BDC3F4C1BCC5DCB00ED97BB /* NSValue.swift */; };
303303
5FE52C951D147D1C00F7D270 /* TestNSTextCheckingResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FE52C941D147D1C00F7D270 /* TestNSTextCheckingResult.swift */; };
304+
617F57F31F1F5CD30004F3F0 /* FTPURLProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 617F57F21F1F5CD30004F3F0 /* FTPURLProtocol.swift */; };
304305
61E0117D1C1B5590000037DD /* NSRunLoop.swift in Sources */ = {isa = PBXBuildFile; fileRef = EADE0B761BD15DFF00C49C64 /* NSRunLoop.swift */; };
305306
61E0117E1C1B55B9000037DD /* NSTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BDC3F481BCC5DCB00ED97BB /* NSTimer.swift */; };
306307
61E0117F1C1B5990000037DD /* CFRunLoop.c in Sources */ = {isa = PBXBuildFile; fileRef = 5B5D88D81BBC9AD800234F36 /* CFRunLoop.c */; };
307308
61E011811C1B5998000037DD /* CFMessagePort.c in Sources */ = {isa = PBXBuildFile; fileRef = 5B5D88DC1BBC9AEC00234F36 /* CFMessagePort.c */; };
308309
61E011821C1B599A000037DD /* CFMachPort.c in Sources */ = {isa = PBXBuildFile; fileRef = 5B5D88D01BBC9AAC00234F36 /* CFMachPort.c */; };
310+
61EE04551F208805002051A2 /* NativeProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61EE04541F208805002051A2 /* NativeProtocol.swift */; };
309311
63DCE9D21EAA430100E9CB02 /* ISO8601DateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63DCE9D11EAA430100E9CB02 /* ISO8601DateFormatter.swift */; };
310312
63DCE9D41EAA432400E9CB02 /* TestISO8601DateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63DCE9D31EAA432400E9CB02 /* TestISO8601DateFormatter.swift */; };
311313
6EB768281D18C12C00D4B719 /* UUID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB768271D18C12C00D4B719 /* UUID.swift */; };
@@ -321,7 +323,6 @@
321323
B90C57BC1EEEEA5A005208AE /* TestThread.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E5835F31C20C9B500C81317 /* TestThread.swift */; };
322324
B910957A1EEF237800A71930 /* NSString-UTF16-LE-data.txt in Resources */ = {isa = PBXBuildFile; fileRef = B91095781EEF237800A71930 /* NSString-UTF16-LE-data.txt */; };
323325
B910957B1EEF237800A71930 /* NSString-UTF16-BE-data.txt in Resources */ = {isa = PBXBuildFile; fileRef = B91095791EEF237800A71930 /* NSString-UTF16-BE-data.txt */; };
324-
B9974B961EDF4A22007F15B8 /* TransferState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9974B8F1EDF4A22007F15B8 /* TransferState.swift */; };
325326
B9974B971EDF4A22007F15B8 /* MultiHandle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9974B901EDF4A22007F15B8 /* MultiHandle.swift */; };
326327
B9974B981EDF4A22007F15B8 /* libcurlHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9974B911EDF4A22007F15B8 /* libcurlHelpers.swift */; };
327328
B9974B991EDF4A22007F15B8 /* HTTPURLProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9974B921EDF4A22007F15B8 /* HTTPURLProtocol.swift */; };
@@ -481,7 +482,7 @@
481482

482483
/* Begin PBXFileReference section */
483484
0383A1741D2E558A0052E5D1 /* TestNSStream.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSStream.swift; sourceTree = "<group>"; };
484-
03B6F5831F15F339004F25AF /* TestNSURLProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestNSURLProtocol.swift; sourceTree = "<group>"; };
485+
03B6F5831F15F339004F25AF /* TestNSURLProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestNSURLProtocol.swift; sourceTree = "<group>"; };
485486
1520469A1D8AEABE00D02E36 /* HTTPServer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPServer.swift; sourceTree = "<group>"; };
486487
159884911DCC877700E3314C /* TestNSHTTPCookieStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestNSHTTPCookieStorage.swift; sourceTree = "<group>"; };
487488
22B9C1E01C165D7A00DECFF9 /* TestNSDate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSDate.swift; sourceTree = "<group>"; };
@@ -757,9 +758,11 @@
757758
5EB6A15C1C188FC40037DCB8 /* TestNSJSONSerialization.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSJSONSerialization.swift; sourceTree = "<group>"; };
758759
5EF673AB1C28B527006212A3 /* TestNSNotificationQueue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSNotificationQueue.swift; sourceTree = "<group>"; };
759760
5FE52C941D147D1C00F7D270 /* TestNSTextCheckingResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSTextCheckingResult.swift; sourceTree = "<group>"; };
761+
617F57F21F1F5CD30004F3F0 /* FTPURLProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FTPURLProtocol.swift; sourceTree = "<group>"; };
760762
61A395F91C2484490029B337 /* TestNSLocale.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSLocale.swift; sourceTree = "<group>"; };
761763
61D6C9EE1C1DFE9500DEF583 /* TestNSTimer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSTimer.swift; sourceTree = "<group>"; };
762764
61E0117B1C1B554D000037DD /* TestNSRunLoop.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSRunLoop.swift; sourceTree = "<group>"; };
765+
61EE04541F208805002051A2 /* NativeProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NativeProtocol.swift; sourceTree = "<group>"; };
763766
61F8AE7C1C180FC600FB62F0 /* TestNSNotificationCenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSNotificationCenter.swift; sourceTree = "<group>"; };
764767
63DCE9D11EAA430100E9CB02 /* ISO8601DateFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ISO8601DateFormatter.swift; sourceTree = "<group>"; };
765768
63DCE9D31EAA432400E9CB02 /* TestISO8601DateFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestISO8601DateFormatter.swift; sourceTree = "<group>"; };
@@ -785,13 +788,12 @@
785788
B167A6641ED7303F0040B09A /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
786789
B91095781EEF237800A71930 /* NSString-UTF16-LE-data.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "NSString-UTF16-LE-data.txt"; sourceTree = "<group>"; };
787790
B91095791EEF237800A71930 /* NSString-UTF16-BE-data.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "NSString-UTF16-BE-data.txt"; sourceTree = "<group>"; };
788-
B9974B8F1EDF4A22007F15B8 /* TransferState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TransferState.swift; path = http/TransferState.swift; sourceTree = "<group>"; };
789-
B9974B901EDF4A22007F15B8 /* MultiHandle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MultiHandle.swift; path = http/MultiHandle.swift; sourceTree = "<group>"; };
790-
B9974B911EDF4A22007F15B8 /* libcurlHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = libcurlHelpers.swift; path = http/libcurlHelpers.swift; sourceTree = "<group>"; };
791+
B9974B901EDF4A22007F15B8 /* MultiHandle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MultiHandle.swift; sourceTree = "<group>"; };
792+
B9974B911EDF4A22007F15B8 /* libcurlHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = libcurlHelpers.swift; sourceTree = "<group>"; };
791793
B9974B921EDF4A22007F15B8 /* HTTPURLProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = HTTPURLProtocol.swift; path = http/HTTPURLProtocol.swift; sourceTree = "<group>"; };
792794
B9974B931EDF4A22007F15B8 /* HTTPMessage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = HTTPMessage.swift; path = http/HTTPMessage.swift; sourceTree = "<group>"; };
793795
B9974B941EDF4A22007F15B8 /* HTTPBodySource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = HTTPBodySource.swift; path = http/HTTPBodySource.swift; sourceTree = "<group>"; };
794-
B9974B951EDF4A22007F15B8 /* EasyHandle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = EasyHandle.swift; path = http/EasyHandle.swift; sourceTree = "<group>"; };
796+
B9974B951EDF4A22007F15B8 /* EasyHandle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EasyHandle.swift; sourceTree = "<group>"; };
795797
BD8042151E09857800487EB8 /* TestLengthFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestLengthFormatter.swift; sourceTree = "<group>"; };
796798
BDBB658F1E256BFA001A7286 /* TestEnergyFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestEnergyFormatter.swift; sourceTree = "<group>"; };
797799
BDFDF0A61DFF5B3E00C04CC5 /* TestNSPersonNameComponents.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSPersonNameComponents.swift; sourceTree = "<group>"; };
@@ -981,13 +983,16 @@
981983
5B1FD9C71D6D162D0080E83C /* Session */ = {
982984
isa = PBXGroup;
983985
children = (
986+
617F57F11F1F5C5F0004F3F0 /* ftp */,
987+
617F57F01F1F5C4B0004F3F0 /* libcurlhelpers */,
984988
E4F889331E9CF04D008A70EB /* http */,
985989
5B1FD9C81D6D16580080E83C /* Configuration.swift */,
986990
5B1FD9CE1D6D16580080E83C /* NSURLSession.swift */,
987991
5B1FD9CF1D6D16580080E83C /* NSURLSessionConfiguration.swift */,
988992
5B1FD9D01D6D16580080E83C /* NSURLSessionDelegate.swift */,
989993
5B1FD9D11D6D16580080E83C /* NSURLSessionTask.swift */,
990994
5B1FD9D21D6D16580080E83C /* TaskRegistry.swift */,
995+
61EE04541F208805002051A2 /* NativeProtocol.swift */,
991996
);
992997
name = Session;
993998
path = NSURLSession;
@@ -1339,6 +1344,24 @@
13391344
path = Foundation;
13401345
sourceTree = "<group>";
13411346
};
1347+
617F57F01F1F5C4B0004F3F0 /* libcurlhelpers */ = {
1348+
isa = PBXGroup;
1349+
children = (
1350+
B9974B911EDF4A22007F15B8 /* libcurlHelpers.swift */,
1351+
B9974B951EDF4A22007F15B8 /* EasyHandle.swift */,
1352+
B9974B901EDF4A22007F15B8 /* MultiHandle.swift */,
1353+
);
1354+
path = libcurlhelpers;
1355+
sourceTree = "<group>";
1356+
};
1357+
617F57F11F1F5C5F0004F3F0 /* ftp */ = {
1358+
isa = PBXGroup;
1359+
children = (
1360+
617F57F21F1F5CD30004F3F0 /* FTPURLProtocol.swift */,
1361+
);
1362+
path = ftp;
1363+
sourceTree = "<group>";
1364+
};
13421365
9F4ADBCF1ECD4F56001F0B3D /* xdgTestHelper */ = {
13431366
isa = PBXGroup;
13441367
children = (
@@ -1353,12 +1376,8 @@
13531376
isa = PBXGroup;
13541377
children = (
13551378
B9974B921EDF4A22007F15B8 /* HTTPURLProtocol.swift */,
1356-
B9974B8F1EDF4A22007F15B8 /* TransferState.swift */,
1357-
B9974B901EDF4A22007F15B8 /* MultiHandle.swift */,
1358-
B9974B911EDF4A22007F15B8 /* libcurlHelpers.swift */,
13591379
B9974B931EDF4A22007F15B8 /* HTTPMessage.swift */,
13601380
B9974B941EDF4A22007F15B8 /* HTTPBodySource.swift */,
1361-
B9974B951EDF4A22007F15B8 /* EasyHandle.swift */,
13621381
);
13631382
name = http;
13641383
sourceTree = "<group>";
@@ -1487,7 +1506,7 @@
14871506
CC5249BF1D341D23007CB54D /* TestUnitConverter.swift */,
14881507
D4FE895A1D703D1100DA7986 /* TestURLRequest.swift */,
14891508
5B6F17961C48631C00935030 /* TestUtils.swift */,
1490-
03B6F5831F15F339004F25AF /* TestNSURLProtocol.swift */,
1509+
03B6F5831F15F339004F25AF /* TestNSURLProtocol.swift */,
14911510
);
14921511
name = Tests;
14931512
sourceTree = "<group>";
@@ -2195,7 +2214,6 @@
21952214
EADE0BB31BD15E0000C49C64 /* NSRegularExpression.swift in Sources */,
21962215
EADE0BA41BD15E0000C49C64 /* LengthFormatter.swift in Sources */,
21972216
5BDC3FCA1BCF176100ED97BB /* NSCFArray.swift in Sources */,
2198-
B9974B961EDF4A22007F15B8 /* TransferState.swift in Sources */,
21992217
EADE0BB21BD15E0000C49C64 /* Progress.swift in Sources */,
22002218
EADE0B961BD15DFF00C49C64 /* DateIntervalFormatter.swift in Sources */,
22012219
5B5BFEAC1E6CC0C200AC8D9E /* NSCFBoolean.swift in Sources */,
@@ -2205,6 +2223,7 @@
22052223
EADE0BB81BD15E0000C49C64 /* Process.swift in Sources */,
22062224
5BF7AEB31BCD51F9008F214A /* NSObjCRuntime.swift in Sources */,
22072225
5BD31D3F1D5D19D600563814 /* Dictionary.swift in Sources */,
2226+
617F57F31F1F5CD30004F3F0 /* FTPURLProtocol.swift in Sources */,
22082227
B9974B9B1EDF4A22007F15B8 /* HTTPBodySource.swift in Sources */,
22092228
5B94E8821C430DE70055C035 /* NSStringAPI.swift in Sources */,
22102229
5B0163BB1D024EB7003CCD96 /* DateComponents.swift in Sources */,
@@ -2240,6 +2259,7 @@
22402259
EADE0BA61BD15E0000C49C64 /* MassFormatter.swift in Sources */,
22412260
5BECBA3A1D1CAE9A00B39B1F /* NSMeasurement.swift in Sources */,
22422261
5BF7AEB21BCD51F9008F214A /* NSNumber.swift in Sources */,
2262+
61EE04551F208805002051A2 /* NativeProtocol.swift in Sources */,
22432263
B9974B991EDF4A22007F15B8 /* HTTPURLProtocol.swift in Sources */,
22442264
5BCD03821D3EE35C00E3FF9B /* TimeZone.swift in Sources */,
22452265
EADE0BBC1BD15E0000C49C64 /* NSURLCache.swift in Sources */,
@@ -2376,7 +2396,7 @@
23762396
BF8E65311DC3B3CB005AB5C3 /* TestNotification.swift in Sources */,
23772397
63DCE9D41EAA432400E9CB02 /* TestISO8601DateFormatter.swift in Sources */,
23782398
EA01AAEC1DA839C4008F4E07 /* TestProgress.swift in Sources */,
2379-
03B6F5841F15F339004F25AF /* TestNSURLProtocol.swift in Sources */,
2399+
03B6F5841F15F339004F25AF /* TestNSURLProtocol.swift in Sources */,
23802400
5B13B3411C582D4C00651CE2 /* TestNSRegularExpression.swift in Sources */,
23812401
5B13B3491C582D4C00651CE2 /* TestNSTimeZone.swift in Sources */,
23822402
5B13B34B1C582D4C00651CE2 /* TestNSURLRequest.swift in Sources */,

Foundation/NSURLSession/NSURLSession.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ open class URLSession : NSObject {
194194
fileprivate static let registerProtocols: () = {
195195
// TODO: We register all the native protocols here.
196196
let _ = URLProtocol.registerClass(_HTTPURLProtocol.self)
197+
let _ = URLProtocol.registerClass(_FTPURLProtocol.self)
197198
}()
198199

199200
/*

Foundation/NSURLSession/NSURLSessionConfiguration.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ open class URLSessionConfiguration : NSObject, NSCopying {
4747
self.urlCredentialStorage = nil
4848
self.urlCache = nil
4949
self.shouldUseExtendedBackgroundIdleMode = false
50-
self.protocolClasses = [_HTTPURLProtocol.self]
50+
self.protocolClasses = [_HTTPURLProtocol.self,_FTPURLProtocol.self]
5151
super.init()
5252
}
5353

0 commit comments

Comments
 (0)