-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Project Input standardization (#17) (#41) (#46) (#48) (#57) (#77) Add AVFoundation and PhotosKit initializers Add internal and external state mapping Remove duplicate status enum and add inline docs to external status Add inline API docs to PHAsset-based MuxUpload constructor Consolidate all `MuxUpload` options into a single struct `UploadOptions` Declare asynchronous MuxUpload constructor in PHAsset extension Place extension methods into dedicated directories Polish inline API documentation Add new API documentation and note the placeholder implementation Add option variants as static members: defaults, disabled inputStandardization Deprecate existing initializer, normally this API should be removed prior to GA, but since it was the only initializer exposed up to this point removing it would break everybody. Instead deprecate and remove at a later date. Store all MuxUpload-related options in UploadInfo Use correct starting byte parameter when restarting upload If input standardized, standardized input URL is passed to UploadInfo instead of the original input URL used for initializer Note: SDK probably needs to re-export a high quality asset anyway so possibly need a bridging status Add dedicated internal initializer for MuxUpload error with unknown error code Request local and remote assets Standardize via AVFoundation asset export session Expose hook for client to cancel upload if standardization failed Call cancellation hook if inspection fails. We're not sure if the input is standard or not so better to be safe and confirm Export based on maximum resolution set by client Cleaner non standard input handler invocation Add CustomStringConvertible conformance to maximum resolution (#56) Only mark upload as started if its ready Safe storage for MuxUpload (#71) Intended to prevent a crash if MuxUpload is extended by the SDK client to conform to Equatable or Hashable protocols Switch order of operations to avoid long pause on fetching duration AVAsset sometimes hangs when asked to asynchronously fetch duration when there aren't audio or video tracks present. To avoid this after starting the upload, the inspection step will get the video tracks first and get the duration afterwards. --------- Co-authored-by: Emily Dixon <[email protected]> * Minor example app renaming (#29) * Use a UUID string as MuxUpload internal identifier (#30) * Display a more specific error message when the direct upload POST request fails (#32) * Use MuxUpload id instead if the input URL when looking up or writing state in the SDK (#33) * Change upload creation example app method to use discardableResult (#34) * Add dedicated internal initializer for MuxUpload error with unknown error code (#35) * Rename enum and adjust to camel casing (#36) * Adhere to Swift formatting guidelines, remove snake casing (#37) * Fix potential crash in ChunkedFile (#38) * Include Cloud shared asset sources when requesting assets (#40) * Prevent arithmentic overflow when setting chunk content range value (#45) * Remove force unwrap that can cause a crash (#47) * Make internal class methods internal (#51)
- Loading branch information
1 parent
a1654f5
commit fe4407e
Showing
42 changed files
with
3,018 additions
and
509 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
// | ||
// Bundle+Reporting.swift | ||
// | ||
|
||
import Foundation | ||
|
||
extension Bundle { | ||
var appName: String? { | ||
return object(forInfoDictionaryKey: "CFBundleName") as? String | ||
} | ||
|
||
var appVersion: String? { | ||
return object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String | ||
} | ||
} |
17 changes: 17 additions & 0 deletions
17
Sources/MuxUploadSDK/Extensions/FileManager+FileOperations.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
// | ||
// FileManager+FileOperations.swift | ||
// | ||
|
||
import Foundation | ||
|
||
extension FileManager { | ||
|
||
// Work around Swift compiler not bridging Dictionary | ||
// and NSDictionary properly when calling attributesOfItem | ||
func fileSizeOfItem( | ||
atPath path: String | ||
) throws -> UInt64 { | ||
(try attributesOfItem(atPath: path) as NSDictionary) | ||
.fileSize() | ||
} | ||
} |
30 changes: 30 additions & 0 deletions
30
Sources/MuxUploadSDK/Extensions/NSMutableURLRequest+Reporting.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
// | ||
// NSMutableURLRequest+Reporting.swift | ||
// | ||
|
||
import Foundation | ||
|
||
extension NSMutableURLRequest { | ||
static func makeJSONPost( | ||
url: URL, | ||
httpBody: Data, | ||
additionalHTTPHeaders: [String: String] | ||
) -> NSMutableURLRequest { | ||
let request = NSMutableURLRequest( | ||
url: url, | ||
cachePolicy: .useProtocolCachePolicy, | ||
timeoutInterval: 10.0 | ||
) | ||
|
||
request.httpMethod = "POST" | ||
request.setValue("application/json", forHTTPHeaderField: "Accept") | ||
request.setValue("application/json", forHTTPHeaderField: "Content-Type") | ||
for keypair in additionalHTTPHeaders { | ||
request.setValue(keypair.value, forHTTPHeaderField: keypair.key) | ||
} | ||
|
||
request.httpBody = httpBody | ||
|
||
return request | ||
} | ||
} |
Oops, something went wrong.