25
25
//
26
26
27
27
import Foundation
28
- import Helpers
29
28
import HTTPTypes
29
+ import Helpers
30
30
31
31
#if canImport(MobileCoreServices)
32
32
import MobileCoreServices
@@ -59,21 +59,22 @@ class MultipartFormData {
59
59
}
60
60
61
61
static func randomBoundary( ) -> String {
62
- let first = UInt32 . random ( in: UInt32 . min ... UInt32 . max)
63
- let second = UInt32 . random ( in: UInt32 . min ... UInt32 . max)
62
+ let first = UInt32 . random ( in: UInt32 . min... UInt32 . max)
63
+ let second = UInt32 . random ( in: UInt32 . min... UInt32 . max)
64
64
65
65
return String ( format: " alamofire.boundary.%08x%08x " , first, second)
66
66
}
67
67
68
68
static func boundaryData( forBoundaryType boundaryType: BoundaryType , boundary: String ) -> Data {
69
- let boundaryText = switch boundaryType {
70
- case . initial:
71
- " -- \( boundary) \( EncodingCharacters . crlf) "
72
- case . encapsulated:
73
- " \( EncodingCharacters . crlf) -- \( boundary) \( EncodingCharacters . crlf) "
74
- case . final:
75
- " \( EncodingCharacters . crlf) -- \( boundary) -- \( EncodingCharacters . crlf) "
76
- }
69
+ let boundaryText =
70
+ switch boundaryType {
71
+ case . initial:
72
+ " -- \( boundary) \( EncodingCharacters . crlf) "
73
+ case . encapsulated:
74
+ " \( EncodingCharacters . crlf) -- \( boundary) \( EncodingCharacters . crlf) "
75
+ case . final:
76
+ " \( EncodingCharacters . crlf) -- \( boundary) -- \( EncodingCharacters . crlf) "
77
+ }
77
78
78
79
return Data ( boundaryText. utf8)
79
80
}
@@ -96,7 +97,7 @@ class MultipartFormData {
96
97
// MARK: - Properties
97
98
98
99
/// Default memory threshold used when encoding `MultipartFormData`, in bytes.
99
- static let encodingMemoryThreshold : UInt64 = 10000000
100
+ static let encodingMemoryThreshold : UInt64 = 10_000_000
100
101
101
102
/// The `Content-Type` header value containing the boundary used to generate the `multipart/form-data`.
102
103
open lazy var contentType : String = " multipart/form-data; boundary= \( self . boundary) "
@@ -402,8 +403,8 @@ class MultipartFormData {
402
403
private func encodeHeaders( for bodyPart: BodyPart ) -> Data {
403
404
let headerText =
404
405
bodyPart. headers. map { " \( $0. name) : \( $0. value) \( EncodingCharacters . crlf) " }
405
- . joined ( )
406
- + EncodingCharacters. crlf
406
+ . joined ( )
407
+ + EncodingCharacters. crlf
407
408
408
409
return Data ( headerText. utf8)
409
410
}
@@ -481,7 +482,7 @@ class MultipartFormData {
481
482
482
483
if bytesRead > 0 {
483
484
if buffer. count != bytesRead {
484
- buffer = Array ( buffer [ 0 ..< bytesRead] )
485
+ buffer = Array ( buffer [ 0 ..< bytesRead] )
485
486
}
486
487
487
488
try write ( & buffer, to: outputStream)
@@ -492,7 +493,8 @@ class MultipartFormData {
492
493
}
493
494
}
494
495
495
- private func writeFinalBoundaryData( for bodyPart: BodyPart , to outputStream: OutputStream ) throws {
496
+ private func writeFinalBoundaryData( for bodyPart: BodyPart , to outputStream: OutputStream ) throws
497
+ {
496
498
if bodyPart. hasFinalBoundary {
497
499
try write ( finalBoundaryData ( ) , to: outputStream)
498
500
}
@@ -520,7 +522,7 @@ class MultipartFormData {
520
522
bytesToWrite -= bytesWritten
521
523
522
524
if bytesToWrite > 0 {
523
- buffer = Array ( buffer [ bytesWritten ..< buffer. count] )
525
+ buffer = Array ( buffer [ bytesWritten..< buffer. count] )
524
526
}
525
527
}
526
528
}
@@ -577,7 +579,7 @@ class MultipartFormData {
577
579
kUTTagClassFilenameExtension, pathExtension as CFString , nil
578
580
) ? . takeRetainedValue ( ) ,
579
581
let contentType = UTTypeCopyPreferredTagWithClass ( id, kUTTagClassMIMEType) ?
580
- . takeRetainedValue ( )
582
+ . takeRetainedValue ( )
581
583
{
582
584
return contentType as String
583
585
}
@@ -593,7 +595,7 @@ class MultipartFormData {
593
595
kUTTagClassFilenameExtension, pathExtension as CFString , nil
594
596
) ? . takeRetainedValue ( ) ,
595
597
let contentType = UTTypeCopyPreferredTagWithClass ( id, kUTTagClassMIMEType) ?
596
- . takeRetainedValue ( )
598
+ . takeRetainedValue ( )
597
599
{
598
600
return contentType as String
599
601
}
@@ -615,7 +617,7 @@ class MultipartFormData {
615
617
kUTTagClassFilenameExtension, pathExtension as CFString , nil
616
618
) ? . takeRetainedValue ( ) ,
617
619
let contentType = UTTypeCopyPreferredTagWithClass ( id, kUTTagClassMIMEType) ?
618
- . takeRetainedValue ( )
620
+ . takeRetainedValue ( )
619
621
{
620
622
return contentType as String
621
623
}
@@ -650,37 +652,37 @@ enum MultipartFormDataError: Error {
650
652
var underlyingError : ( any Error ) ? {
651
653
switch self {
652
654
case let . bodyPartFileNotReachableWithError( _, error) ,
653
- let . bodyPartFileSizeQueryFailedWithError( _, error) ,
654
- let . inputStreamReadFailed( error) ,
655
- let . outputStreamWriteFailed( error) :
655
+ let . bodyPartFileSizeQueryFailedWithError( _, error) ,
656
+ let . inputStreamReadFailed( error) ,
657
+ let . outputStreamWriteFailed( error) :
656
658
error
657
659
658
660
case . bodyPartURLInvalid,
659
- . bodyPartFilenameInvalid,
660
- . bodyPartFileNotReachable,
661
- . bodyPartFileIsDirectory,
662
- . bodyPartFileSizeNotAvailable,
663
- . bodyPartInputStreamCreationFailed,
664
- . outputStreamFileAlreadyExists,
665
- . outputStreamURLInvalid,
666
- . outputStreamCreationFailed:
661
+ . bodyPartFilenameInvalid,
662
+ . bodyPartFileNotReachable,
663
+ . bodyPartFileIsDirectory,
664
+ . bodyPartFileSizeNotAvailable,
665
+ . bodyPartInputStreamCreationFailed,
666
+ . outputStreamFileAlreadyExists,
667
+ . outputStreamURLInvalid,
668
+ . outputStreamCreationFailed:
667
669
nil
668
670
}
669
671
}
670
672
671
673
var url : URL ? {
672
674
switch self {
673
675
case let . bodyPartURLInvalid( url) ,
674
- let . bodyPartFilenameInvalid( url) ,
675
- let . bodyPartFileNotReachable( url) ,
676
- let . bodyPartFileNotReachableWithError( url, _) ,
677
- let . bodyPartFileIsDirectory( url) ,
678
- let . bodyPartFileSizeNotAvailable( url) ,
679
- let . bodyPartFileSizeQueryFailedWithError( url, _) ,
680
- let . bodyPartInputStreamCreationFailed( url) ,
681
- let . outputStreamFileAlreadyExists( url) ,
682
- let . outputStreamURLInvalid( url) ,
683
- let . outputStreamCreationFailed( url) :
676
+ let . bodyPartFilenameInvalid( url) ,
677
+ let . bodyPartFileNotReachable( url) ,
678
+ let . bodyPartFileNotReachableWithError( url, _) ,
679
+ let . bodyPartFileIsDirectory( url) ,
680
+ let . bodyPartFileSizeNotAvailable( url) ,
681
+ let . bodyPartFileSizeQueryFailedWithError( url, _) ,
682
+ let . bodyPartInputStreamCreationFailed( url) ,
683
+ let . outputStreamFileAlreadyExists( url) ,
684
+ let . outputStreamURLInvalid( url) ,
685
+ let . outputStreamCreationFailed( url) :
684
686
url
685
687
686
688
case . inputStreamReadFailed, . outputStreamWriteFailed:
0 commit comments