diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index e963ac54..439c39e3 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -9,19 +9,19 @@ on:
jobs:
macos_build_and_test:
name: Build and test on latest macOS
- runs-on: macos-latest
+ runs-on: macOS-latest
steps:
- name: Checkout
uses: actions/checkout@master
- - name: Swift build for iOS
- run: swift build -c release -Xswiftc "-sdk" -Xswiftc "`xcrun --sdk iphonesimulator --show-sdk-path`" -Xswiftc "-target" -Xswiftc "x86_64-apple-ios13.0-simulator"
+ - name: Build for iOS
+ run: xcodebuild -scheme Uploadcare -destination "generic/platform=iOS"
- - name: Swift build for macOS
+ - name: Build for macOS
run: swift build -c release
- - name: Swift test
+ - name: Test
run: UPLOADCARE_PUBLIC_KEY="${{ secrets.UPLOADCARE_PUBLIC_KEY }}" UPLOADCARE_SECRET_KEY="${{ secrets.UPLOADCARE_SECRET_KEY }}" swift test
ubuntu:
@@ -29,7 +29,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- swift: [5.9, 5.6.3]
+ swift: [5.10, 5.6.3]
steps:
- name: Checkout
diff --git a/Documentation/REST API.md b/Documentation/REST API.md
index c793119f..3ab2e04f 100644
--- a/Documentation/REST API.md
+++ b/Documentation/REST API.md
@@ -568,6 +568,25 @@ uploadcare.deleteWebhook(forTargetUrl: url) { error in
}
```
+## Document info ([API Reference](https://uploadcare.com/api-refs/rest-api/v0.7.0/#tag/Conversion/operation/documentConvertInfo)) ##
+
+The method allows you to determine the document format and possible conversion formats:
+
+```swift
+// Async:
+let documentInfo = try await uploadcare.documentInfo("fileUUID")
+
+// With a completion callback:
+uploadcare.documentInfo("fileUUID") { result in
+ switch result {
+ case .failure(let error):
+ print(error)
+ case .success(let documentInfo):
+ print(documentInfo)
+ }
+}
+```
+
## Convert document ([API Reference](https://uploadcare.com/docs/transformations/document_conversion/#convert)) ##
You can convert multiple files with one request:
diff --git a/Package.resolved b/Package.resolved
index feabfd15..ce6afbc0 100644
--- a/Package.resolved
+++ b/Package.resolved
@@ -1,97 +1,131 @@
{
- "object": {
- "pins": [
- {
- "package": "async-http-client",
- "repositoryURL": "https://github.com/swift-server/async-http-client.git",
- "state": {
- "branch": null,
- "revision": "78db67e5bf4a8543075787f228e8920097319281",
- "version": "1.18.0"
- }
- },
- {
- "package": "swift-atomics",
- "repositoryURL": "https://github.com/apple/swift-atomics.git",
- "state": {
- "branch": null,
- "revision": "6c89474e62719ddcc1e9614989fff2f68208fe10",
- "version": "1.1.0"
- }
- },
- {
- "package": "swift-collections",
- "repositoryURL": "https://github.com/apple/swift-collections.git",
- "state": {
- "branch": null,
- "revision": "937e904258d22af6e447a0b72c0bc67583ef64a2",
- "version": "1.0.4"
- }
- },
- {
- "package": "swift-crypto",
- "repositoryURL": "https://github.com/apple/swift-crypto.git",
- "state": {
- "branch": null,
- "revision": "60f13f60c4d093691934dc6cfdf5f508ada1f894",
- "version": "2.6.0"
- }
- },
- {
- "package": "swift-log",
- "repositoryURL": "https://github.com/apple/swift-log.git",
- "state": {
- "branch": null,
- "revision": "532d8b529501fb73a2455b179e0bbb6d49b652ed",
- "version": "1.5.3"
- }
- },
- {
- "package": "swift-nio",
- "repositoryURL": "https://github.com/apple/swift-nio.git",
- "state": {
- "branch": null,
- "revision": "cf281631ff10ec6111f2761052aa81896a83a007",
- "version": "2.58.0"
- }
- },
- {
- "package": "swift-nio-extras",
- "repositoryURL": "https://github.com/apple/swift-nio-extras.git",
- "state": {
- "branch": null,
- "revision": "0e0d0aab665ff1a0659ce75ac003081f2b1c8997",
- "version": "1.19.0"
- }
- },
- {
- "package": "swift-nio-http2",
- "repositoryURL": "https://github.com/apple/swift-nio-http2.git",
- "state": {
- "branch": null,
- "revision": "a8ccf13fa62775277a5d56844878c828bbb3be1a",
- "version": "1.27.0"
- }
- },
- {
- "package": "swift-nio-ssl",
- "repositoryURL": "https://github.com/apple/swift-nio-ssl.git",
- "state": {
- "branch": null,
- "revision": "320bd978cceb8e88c125dcbb774943a92f6286e9",
- "version": "2.25.0"
- }
- },
- {
- "package": "swift-nio-transport-services",
- "repositoryURL": "https://github.com/apple/swift-nio-transport-services.git",
- "state": {
- "branch": null,
- "revision": "e7403c35ca6bb539a7ca353b91cc2d8ec0362d58",
- "version": "1.19.0"
- }
+ "pins" : [
+ {
+ "identity" : "async-http-client",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/swift-server/async-http-client.git",
+ "state" : {
+ "revision" : "a22083713ee90808d527d0baa290c2fb13ca3096",
+ "version" : "1.21.1"
}
- ]
- },
- "version": 1
+ },
+ {
+ "identity" : "swift-algorithms",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-algorithms",
+ "state" : {
+ "revision" : "f6919dfc309e7f1b56224378b11e28bab5bccc42",
+ "version" : "1.2.0"
+ }
+ },
+ {
+ "identity" : "swift-atomics",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-atomics.git",
+ "state" : {
+ "revision" : "cd142fd2f64be2100422d658e7411e39489da985",
+ "version" : "1.2.0"
+ }
+ },
+ {
+ "identity" : "swift-collections",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-collections.git",
+ "state" : {
+ "revision" : "94cf62b3ba8d4bed62680a282d4c25f9c63c2efb",
+ "version" : "1.1.0"
+ }
+ },
+ {
+ "identity" : "swift-crypto",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-crypto.git",
+ "state" : {
+ "revision" : "bc1c29221f6dfeb0ebbfbc98eb95cd3d4967868e",
+ "version" : "3.4.0"
+ }
+ },
+ {
+ "identity" : "swift-http-types",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-http-types",
+ "state" : {
+ "revision" : "9bee2fdb79cc740081abd8ebd80738063d632286",
+ "version" : "1.1.0"
+ }
+ },
+ {
+ "identity" : "swift-log",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-log.git",
+ "state" : {
+ "revision" : "e97a6fcb1ab07462881ac165fdbb37f067e205d5",
+ "version" : "1.5.4"
+ }
+ },
+ {
+ "identity" : "swift-nio",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio.git",
+ "state" : {
+ "revision" : "359c461e5561d22c6334828806cc25d759ca7aa6",
+ "version" : "2.65.0"
+ }
+ },
+ {
+ "identity" : "swift-nio-extras",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio-extras.git",
+ "state" : {
+ "revision" : "a3b640d7dc567225db7c94386a6e71aded1bfa63",
+ "version" : "1.22.0"
+ }
+ },
+ {
+ "identity" : "swift-nio-http2",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio-http2.git",
+ "state" : {
+ "revision" : "c6afe04165c865faaa687b42c32ed76dfcc91076",
+ "version" : "1.31.0"
+ }
+ },
+ {
+ "identity" : "swift-nio-ssl",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio-ssl.git",
+ "state" : {
+ "revision" : "7c381eb6083542b124a6c18fae742f55001dc2b5",
+ "version" : "2.26.0"
+ }
+ },
+ {
+ "identity" : "swift-nio-transport-services",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio-transport-services.git",
+ "state" : {
+ "revision" : "38ac8221dd20674682148d6451367f89c2652980",
+ "version" : "1.21.0"
+ }
+ },
+ {
+ "identity" : "swift-numerics",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-numerics.git",
+ "state" : {
+ "revision" : "0a5bc04095a675662cf24757cc0640aa2204253b",
+ "version" : "1.0.2"
+ }
+ },
+ {
+ "identity" : "swift-system",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-system.git",
+ "state" : {
+ "revision" : "f9266c85189c2751589a50ea5aec72799797e471",
+ "version" : "1.3.0"
+ }
+ }
+ ],
+ "version" : 2
}
diff --git a/Package.swift b/Package.swift
index d220debc..45aac8e4 100644
--- a/Package.swift
+++ b/Package.swift
@@ -39,11 +39,17 @@ let package = Package(
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
.target(
name: "Uploadcare",
- dependencies: targetDependencies
+ dependencies: targetDependencies,
+ resources: [
+ .process("PrivacyInfo.xcprivacy")
+ ]
),
.target(
name: "UploadcareWidget",
- dependencies: ["Uploadcare"]
+ dependencies: ["Uploadcare"],
+ resources: [
+ .process("PrivacyInfo.xcprivacy")
+ ]
),
.testTarget(
name: "UploadcareTests",
diff --git a/Sources/Uploadcare/Constants.swift b/Sources/Uploadcare/Constants.swift
index 3229b15a..3b8fb101 100644
--- a/Sources/Uploadcare/Constants.swift
+++ b/Sources/Uploadcare/Constants.swift
@@ -19,7 +19,7 @@ internal let RESTAPIHost = "api.uploadcare.com"
/// Library name
internal let libraryName = "UploadcareSwift"
/// Library version
-internal let libraryVersion = "0.13.1"
+internal let libraryVersion = "0.14.0"
/// API version
internal let APIVersion = "0.7"
diff --git a/Sources/Uploadcare/PrivacyInfo.xcprivacy b/Sources/Uploadcare/PrivacyInfo.xcprivacy
new file mode 100644
index 00000000..ddf0ebbd
--- /dev/null
+++ b/Sources/Uploadcare/PrivacyInfo.xcprivacy
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Sources/Uploadcare/Uploadcare.swift b/Sources/Uploadcare/Uploadcare.swift
index 1e0d6af4..28eb1994 100644
--- a/Sources/Uploadcare/Uploadcare.swift
+++ b/Sources/Uploadcare/Uploadcare.swift
@@ -1775,6 +1775,63 @@ extension Uploadcare {
}
}
+ #if !os(Linux)
+ /// The method allows you to determine the document format and possible conversion formats.
+ ///
+ /// Example:
+ /// ```swift
+ /// uploadcare.documentInfo("fileUUID") { result in
+ /// switch result {
+ /// case .failure(let error):
+ /// print(error)
+ /// case .success(let documentInfo):
+ /// print(documentInfo)
+ /// }
+ /// }
+ /// ```
+ ///
+ /// - Parameters:
+ /// - uuid: File uuid.
+ /// - completionHandler: Completion handler.
+ public func documentInfo(
+ _ uuid: String,
+ _ completionHandler: @escaping (Result) -> Void
+ ) {
+ let url = urlWithPath("/convert/document/\(uuid)/")
+ var urlRequest = requestManager.makeUrlRequest(fromURL: url, method: .get)
+ requestManager.signRequest(&urlRequest)
+
+ requestManager.performRequest(urlRequest) { (result: Result) in
+ switch result {
+ case .failure(let error): completionHandler(.failure(RESTAPIError.fromError(error)))
+ case .success(let response): completionHandler(.success(response))
+ }
+ }
+ }
+ #endif
+
+ /// The method allows you to determine the document format and possible conversion formats.
+ ///
+ /// Example:
+ /// ```swift
+ /// let documentInfo = try await uploadcare.documentInfo("fileUUID")
+ /// ```
+ /// - Parameter uuid: File uuid.
+ /// - Returns: Document format and possible conversion formats.
+ @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
+ public func documentInfo(_ uuid: String) async throws -> DocumentInfo {
+ let url = urlWithPath("/convert/document/\(uuid)/")
+ var urlRequest = requestManager.makeUrlRequest(fromURL: url, method: .get)
+ requestManager.signRequest(&urlRequest)
+
+ do {
+ let response: DocumentInfo = try await requestManager.performRequest(urlRequest)
+ return response
+ } catch {
+ throw RESTAPIError.fromError(error)
+ }
+ }
+
#if !os(Linux)
/// Uploadcare allows converting documents to the following target formats: DOC, DOCX, XLS, XLSX, ODT, ODS, RTF, TXT, PDF, JPG, PNG.
///
diff --git a/Sources/Uploadcare/Utils.swift b/Sources/Uploadcare/Utils.swift
index c8962c12..5cbf56ec 100644
--- a/Sources/Uploadcare/Utils.swift
+++ b/Sources/Uploadcare/Utils.swift
@@ -202,6 +202,8 @@ func getSwiftVersion() -> String {
swiftVersion = "6.1"
#elseif swift(>=6.0)
swiftVersion = "6.0"
+ #elseif swift(>=5.10)
+ swiftVersion = "5.10"
#elseif swift(>=5.9)
swiftVersion = "5.9"
#elseif swift(>=5.8)
diff --git a/Sources/Uploadcare/models/REST/DocumentInfo.swift b/Sources/Uploadcare/models/REST/DocumentInfo.swift
new file mode 100644
index 00000000..8525f8ef
--- /dev/null
+++ b/Sources/Uploadcare/models/REST/DocumentInfo.swift
@@ -0,0 +1,74 @@
+//
+// DocumentInfo.swift
+//
+//
+// Created by Sergei Armodin on 23.05.2024.
+// Copyright © 2024 Uploadcare, Inc. All rights reserved.
+//
+
+import Foundation
+
+public struct ConversionFormat: Codable {
+ /// Supported target document format.
+ public let name: String
+
+ enum CodingKeys: String, CodingKey {
+ case name
+ }
+
+ public init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: CodingKeys.self)
+
+ self.name = try container.decodeIfPresent(String.self, forKey: .name) ?? ""
+ }
+}
+
+public struct DocumentFormat: Codable {
+ internal init(name: String, conversionFormats: [ConversionFormat]) {
+ self.name = name
+ self.conversionFormats = conversionFormats
+ }
+
+ /// A detected document format.
+ public let name: String
+
+ /// The conversions that are supported for the document.
+ public let conversionFormats: [ConversionFormat]
+
+ enum CodingKeys: String, CodingKey {
+ case name
+ case conversionFormats = "conversion_formats"
+ }
+
+ public init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: CodingKeys.self)
+
+ self.name = try container.decodeIfPresent(String.self, forKey: .name) ?? ""
+ self.conversionFormats = try container.decodeIfPresent([ConversionFormat].self, forKey: .conversionFormats) ?? []
+ }
+}
+
+public struct DocumentInfo: Codable {
+ /// Holds an error if your document can't be handled.
+ public let error: String?
+
+ /// Document format details.
+ public let format: DocumentFormat
+
+ /// Information about already converted groups.
+ public let convertedGroups: [String: String]?
+
+ enum CodingKeys: String, CodingKey {
+ case error
+ case format
+ case convertedGroups = "converted_groups"
+ }
+
+ public init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: CodingKeys.self)
+
+ self.error = try container.decodeIfPresent(String.self, forKey: .error)
+ self.format = try container.decodeIfPresent(DocumentFormat.self, forKey: .format) ?? DocumentFormat(name: "", conversionFormats: [])
+ self.convertedGroups = try container.decodeIfPresent([String: String].self, forKey: .convertedGroups)
+ }
+}
diff --git a/Sources/UploadcareWidget/PrivacyInfo.xcprivacy b/Sources/UploadcareWidget/PrivacyInfo.xcprivacy
new file mode 100644
index 00000000..ddf0ebbd
--- /dev/null
+++ b/Sources/UploadcareWidget/PrivacyInfo.xcprivacy
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tests/UploadcareTests/RESTAPIIntegrationAsyncTests.swift b/Tests/UploadcareTests/RESTAPIIntegrationAsyncTests.swift
index f8656070..4c78a9c9 100644
--- a/Tests/UploadcareTests/RESTAPIIntegrationAsyncTests.swift
+++ b/Tests/UploadcareTests/RESTAPIIntegrationAsyncTests.swift
@@ -560,4 +560,30 @@ final class RESTAPIIntegrationAsyncTests: XCTestCase {
let status = try await uploadcare.performRemoveBG(fileUUID: uuid, parameters: parameters)
XCTAssertTrue(status.status != .unknown)
}
+
+ func test31_document_info() async throws {
+ let url = URL(string: "https://source.unsplash.com/featured")!
+ let data = try! Data(contentsOf: url)
+ DLog("size of file: \(sizeString(ofData: data))")
+
+ // upload random image
+ let resultDictionary = try await uploadcare.uploadAPI.directUploadInForeground(files: ["random_file_name.jpg": data], store: .doNotStore)
+ guard let uuid = resultDictionary.values.first else {
+ XCTFail()
+ return
+ }
+
+ try await Task.sleep(nanoseconds: 1 * NSEC_PER_SEC)
+
+ let documentInfo = try await uploadcare.documentInfo(uuid)
+
+ XCTAssertNil(documentInfo.error)
+ XCTAssertFalse(documentInfo.format.name.isEmpty)
+ XCTAssertFalse(documentInfo.format.conversionFormats.isEmpty)
+
+ let actualFormats = documentInfo.format.conversionFormats.map { $0.name }
+
+ XCTAssertTrue(actualFormats.contains("tiff"), "Expected format tiff is missing")
+ XCTAssertTrue(actualFormats.contains("webp"), "Expected format webp is missing")
+ }
}
diff --git a/Tests/UploadcareTests/RESTAPIIntegrationTests.swift b/Tests/UploadcareTests/RESTAPIIntegrationTests.swift
index 531ad22d..721e960c 100644
--- a/Tests/UploadcareTests/RESTAPIIntegrationTests.swift
+++ b/Tests/UploadcareTests/RESTAPIIntegrationTests.swift
@@ -1005,5 +1005,45 @@ final class RESTAPIIntegrationTests: XCTestCase {
wait(for: [expectation], timeout: 20.0)
}
+
+ func test27_document_info() {
+ let expectation = XCTestExpectation(description: "test27_document_info")
+
+ let url = URL(string: "https://source.unsplash.com/featured")!
+ guard let data = try? Data(contentsOf: url) else {
+ XCTFail("Could not read data from URL")
+ return
+ }
+ DLog("size of file: \(sizeString(ofData: data))")
+
+ // upload random image
+ uploadcare.uploadAPI.directUpload(files: ["random_file_name.jpg": data], store: .doNotStore) { result in
+ switch result {
+ case .failure(let error):
+ expectation.fulfill()
+ XCTFail(error.detail)
+ case .success(let resultDictionary):
+ guard let uuid = resultDictionary.values.first else {
+ XCTFail("Failed to retrieve UUID from result dictionary")
+ expectation.fulfill()
+ return
+ }
+
+ self.uploadcare.documentInfo(uuid) { result in
+ defer { expectation.fulfill() }
+
+ switch result {
+ case .failure(let error): XCTFail(error.detail)
+ case .success(let documentInfo):
+ XCTAssertNil(documentInfo.error)
+ XCTAssertFalse(documentInfo.format.name.isEmpty)
+ XCTAssertFalse(documentInfo.format.conversionFormats.isEmpty)
+ }
+ }
+ }
+ }
+
+ wait(for: [expectation], timeout: 20.0)
+ }
}
#endif
diff --git a/Uploadcare.podspec b/Uploadcare.podspec
index 839bf963..da6d67a8 100644
--- a/Uploadcare.podspec
+++ b/Uploadcare.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'Uploadcare'
- s.version = '0.13.1'
+ s.version = '0.14.0'
s.summary = 'Swift integration for Uploadcare'
# This description is used to generate tags and improve search results.
@@ -25,7 +25,7 @@ Pod::Spec.new do |s|
s.tvos.deployment_target = '11.0'
s.watchos.deployment_target = '5.0'
- s.swift_versions = ['5.6', '5.7', '5.8', '5.9']
+ s.swift_versions = ['5.6', '5.7', '5.8', '5.9', '5.10']
s.source_files = 'Sources/Uploadcare/**/*'
diff --git a/Uploadcare.xcodeproj/project.pbxproj b/Uploadcare.xcodeproj/project.pbxproj
index c95ccd25..7d9003b3 100644
--- a/Uploadcare.xcodeproj/project.pbxproj
+++ b/Uploadcare.xcodeproj/project.pbxproj
@@ -238,6 +238,14 @@
245DBB4D24901B9B002FB70B /* Uploadcare_watchOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 245DBB4B24901B9B002FB70B /* Uploadcare_watchOS.h */; settings = {ATTRIBUTES = (Public, ); }; };
24875B1D243B33EC003F3E06 /* Uploadcare_tvOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 24875B1B243B33EB003F3E06 /* Uploadcare_tvOS.h */; settings = {ATTRIBUTES = (Public, ); }; };
24875B37243B3518003F3E06 /* Uploadcare_macOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 24875B35243B3518003F3E06 /* Uploadcare_macOS.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 24F8B88B2BFFE11100D86B6A /* DocumentInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24F8B88A2BFFE11100D86B6A /* DocumentInfo.swift */; };
+ 24F8B88C2BFFE11100D86B6A /* DocumentInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24F8B88A2BFFE11100D86B6A /* DocumentInfo.swift */; };
+ 24F8B88D2BFFE11100D86B6A /* DocumentInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24F8B88A2BFFE11100D86B6A /* DocumentInfo.swift */; };
+ 24F8B88E2BFFE11100D86B6A /* DocumentInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24F8B88A2BFFE11100D86B6A /* DocumentInfo.swift */; };
+ 24F8B8952BFFE38D00D86B6A /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 24F8B8932BFFE38D00D86B6A /* PrivacyInfo.xcprivacy */; };
+ 24F8B8962BFFE38D00D86B6A /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 24F8B8932BFFE38D00D86B6A /* PrivacyInfo.xcprivacy */; };
+ 24F8B8972BFFE50200D86B6A /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 24F8B8932BFFE38D00D86B6A /* PrivacyInfo.xcprivacy */; };
+ 24F8B8992BFFE51900D86B6A /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 24F8B8932BFFE38D00D86B6A /* PrivacyInfo.xcprivacy */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@@ -318,6 +326,8 @@
248BD549243627B600B4A3CA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
2495945323B77F51006BB9BF /* Uploadcare.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Uploadcare.framework; sourceTree = BUILT_PRODUCTS_DIR; };
2495945623B7801A006BB9BF /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Alamofire.framework; path = Carthage/Build/iOS/Alamofire.framework; sourceTree = ""; };
+ 24F8B88A2BFFE11100D86B6A /* DocumentInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DocumentInfo.swift; sourceTree = ""; };
+ 24F8B8932BFFE38D00D86B6A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = Sources/Uploadcare/PrivacyInfo.xcprivacy; sourceTree = ""; };
OBJ_12 /* UploadcareTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UploadcareTests.swift; sourceTree = ""; };
OBJ_13 /* XCTestManifests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XCTestManifests.swift; sourceTree = ""; };
OBJ_38 /* Carthage */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Carthage; sourceTree = SOURCE_ROOT; };
@@ -403,6 +413,7 @@
24464E3728F763C400688FF0 /* convertion */,
24464E4028F763C400688FF0 /* responses */,
24464E4828F763C400688FF0 /* Collaborator.swift */,
+ 24F8B88A2BFFE11100D86B6A /* DocumentInfo.swift */,
24464E4928F763C400688FF0 /* Project.swift */,
24464E4A28F763C400688FF0 /* File.swift */,
24464E4B28F763C400688FF0 /* PaginationQuery.swift */,
@@ -624,6 +635,7 @@
OBJ_5 = {
isa = PBXGroup;
children = (
+ 24F8B8932BFFE38D00D86B6A /* PrivacyInfo.xcprivacy */,
OBJ_6 /* Package.swift */,
24B7217E2502AFE000462BD8 /* Sources */,
OBJ_10 /* Tests */,
@@ -742,6 +754,7 @@
buildPhases = (
2495944C23B77F51006BB9BF /* Sources */,
2495944E23B77F51006BB9BF /* Frameworks */,
+ 24F8B8982BFFE51600D86B6A /* Resources */,
);
buildRules = (
);
@@ -809,6 +822,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 24F8B8962BFFE38D00D86B6A /* PrivacyInfo.xcprivacy in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -816,6 +830,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 24F8B8972BFFE50200D86B6A /* PrivacyInfo.xcprivacy in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -823,6 +838,15 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 24F8B8952BFFE38D00D86B6A /* PrivacyInfo.xcprivacy in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 24F8B8982BFFE51600D86B6A /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 24F8B8992BFFE51900D86B6A /* PrivacyInfo.xcprivacy in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -855,6 +879,7 @@
24464F2028F763C400688FF0 /* UploadTask.swift in Sources */,
24464E7828F763C400688FF0 /* VideoInfo.swift in Sources */,
24464EC428F763C400688FF0 /* CopyFileToLocalStorageResponse.swift in Sources */,
+ 24F8B88E2BFFE11100D86B6A /* DocumentInfo.swift in Sources */,
24464E9828F763C400688FF0 /* ClamAVAddonExecutionParams.swift in Sources */,
24464F4828F763C400688FF0 /* APIStore.swift in Sources */,
24464EB428F763C400688FF0 /* ConvertVideoJobStatus.swift in Sources */,
@@ -919,6 +944,7 @@
24464F1E28F763C400688FF0 /* UploadTask.swift in Sources */,
24464E7628F763C400688FF0 /* VideoInfo.swift in Sources */,
24464EC228F763C400688FF0 /* CopyFileToLocalStorageResponse.swift in Sources */,
+ 24F8B88C2BFFE11100D86B6A /* DocumentInfo.swift in Sources */,
24464E9628F763C400688FF0 /* ClamAVAddonExecutionParams.swift in Sources */,
24464F4628F763C400688FF0 /* APIStore.swift in Sources */,
24464EB228F763C400688FF0 /* ConvertVideoJobStatus.swift in Sources */,
@@ -983,6 +1009,7 @@
24464F1F28F763C400688FF0 /* UploadTask.swift in Sources */,
24464E7728F763C400688FF0 /* VideoInfo.swift in Sources */,
24464EC328F763C400688FF0 /* CopyFileToLocalStorageResponse.swift in Sources */,
+ 24F8B88D2BFFE11100D86B6A /* DocumentInfo.swift in Sources */,
24464E9728F763C400688FF0 /* ClamAVAddonExecutionParams.swift in Sources */,
24464F4728F763C400688FF0 /* APIStore.swift in Sources */,
24464EB328F763C400688FF0 /* ConvertVideoJobStatus.swift in Sources */,
@@ -1047,6 +1074,7 @@
24464F1D28F763C400688FF0 /* UploadTask.swift in Sources */,
24464E7528F763C400688FF0 /* VideoInfo.swift in Sources */,
24464EC128F763C400688FF0 /* CopyFileToLocalStorageResponse.swift in Sources */,
+ 24F8B88B2BFFE11100D86B6A /* DocumentInfo.swift in Sources */,
24464E9528F763C400688FF0 /* ClamAVAddonExecutionParams.swift in Sources */,
24464F4528F763C400688FF0 /* APIStore.swift in Sources */,
24464EB128F763C400688FF0 /* ConvertVideoJobStatus.swift in Sources */,