diff --git a/ImgixSwift.podspec b/ImgixSwift.podspec
index 465dc80..b73316a 100644
--- a/ImgixSwift.podspec
+++ b/ImgixSwift.podspec
@@ -5,7 +5,7 @@ Pod::Spec.new do |s|
s.license = { :type => 'BSD 2-Clause', :file => 'LICENSE.md' }
s.homepage = "https://github.com/imgix/imgix-swift"
- s.authors = { "Paul Straw" => "paulstraw@paulstraw.com" }
+ s.authors = { "Paul Straw" => "paulstraw@paulstraw.com", "Sherwin Heydarbeygi" => "sherwin@imgix.com" }
s.source = { :git => "https://github.com/imgix/imgix-swift.git", :tag => s.version }
s.xcconfig = {
@@ -13,7 +13,7 @@ Pod::Spec.new do |s|
}
s.requires_arc = true
- s.source_files = ["Sources/*.{h,m,swift}"]
+ s.source_files = ["Sources/ImgixSwift/*.swift"]
s.ios.deployment_target = "9.0"
s.osx.deployment_target = "10.10"
diff --git a/Package.swift b/Package.swift
new file mode 100644
index 0000000..482fd27
--- /dev/null
+++ b/Package.swift
@@ -0,0 +1,26 @@
+// swift-tools-version:5.1
+
+import PackageDescription
+
+let package = Package(
+ name: "ImgixSwift",
+ platforms: [
+ .macOS(.v10_10),
+ .iOS(.v9),
+ .tvOS(.v9)
+ ],
+ products: [
+ .library(
+ name: "ImgixSwift",
+ targets: ["ImgixSwift"])
+ ],
+ targets: [
+ .target(
+ name: "ImgixSwift"
+ ),
+ .testTarget(
+ name: "ImgixSwiftTests",
+ dependencies: ["ImgixSwift"])
+ ],
+ swiftLanguageVersions: [.v5]
+)
diff --git a/Sources/ImgixClient.swift b/Sources/ImgixSwift/ImgixClient.swift
similarity index 92%
rename from Sources/ImgixClient.swift
rename to Sources/ImgixSwift/ImgixClient.swift
index 8500ca0..6f0764b 100644
--- a/Sources/ImgixClient.swift
+++ b/Sources/ImgixSwift/ImgixClient.swift
@@ -2,9 +2,6 @@
// ImgixClient.swift
// imgix-swift
//
-// Created by Paul Straw on 6/30/16.
-//
-//
import Foundation
@@ -13,7 +10,7 @@ import Foundation
@objc public let host: String
@objc open var useHttps: Bool = true
- @objc open var secureUrlToken: String? = nil
+ @objc open var secureUrlToken: String?
@objc open var includeLibraryParam: Bool = true
@objc public init(host: String) {
@@ -46,7 +43,10 @@ import Foundation
urlComponents.queryItems = buildParams(params)
if secureUrlToken != nil {
- let signature = signatureForPathAndQueryString(path, queryString: encodeQueryItems(urlComponents.queryItems!))
+ let signature = signatureForPathAndQueryString(
+ path,
+ queryString: encodeQueryItems(urlComponents.queryItems!)
+ )
urlComponents.queryItems?.append(signature)
}
@@ -73,7 +73,7 @@ import Foundation
}
}
- mergedParams.addEntries(from: params as! [AnyHashable : Any])
+ mergedParams.addEntries(from: params as! [AnyHashable: Any])
let generatedURL = buildUrl(originalURL.path, params: mergedParams)
@@ -120,26 +120,26 @@ import Foundation
var queryItems = [URLQueryItem]()
let queryParams: NSMutableDictionary = NSMutableDictionary.init(dictionary: params)
- if (includeLibraryParam) {
+ if includeLibraryParam {
queryParams.setValue("swift-" + ImgixClient.VERSION, forKey: "ixlib")
}
let keys = queryParams.allKeys.map { String(describing: $0) }
-
+
for key in keys.sorted(by: {$0 < $1}) {
if let val = queryParams[key] {
var stringVal = String(describing: val)
-
+
if key.hasSuffix("64") {
stringVal = stringVal.ixEncode64()
}
let queryItem = URLQueryItem.init(name: key, value: stringVal)
-
+
queryItems.append(queryItem)
}
}
-
+
return queryItems
}
diff --git a/Sources/Info.plist b/Sources/ImgixSwift/Info.plist
similarity index 100%
rename from Sources/Info.plist
rename to Sources/ImgixSwift/Info.plist
diff --git a/Sources/String+ImgixSwift.swift b/Sources/ImgixSwift/String+ImgixSwift.swift
similarity index 82%
rename from Sources/String+ImgixSwift.swift
rename to Sources/ImgixSwift/String+ImgixSwift.swift
index 0172be2..748d161 100644
--- a/Sources/String+ImgixSwift.swift
+++ b/Sources/ImgixSwift/String+ImgixSwift.swift
@@ -2,9 +2,6 @@
// String+ImgixSwift.swift
// imgix-swift
//
-// Created by Paul Straw on 7/7/16.
-//
-//
import Foundation
import var CommonCrypto.CC_MD5_DIGEST_LENGTH
@@ -13,25 +10,25 @@ import typealias CommonCrypto.CC_LONG
extension String {
static var ixEncodeUriComponentCharSet: CharacterSet = {
- var cs = CharacterSet.alphanumerics
- cs.insert(charactersIn: "-_.!~*'()")
- return cs
+ var charSet = CharacterSet.alphanumerics
+ charSet.insert(charactersIn: "-_.!~*'()")
+ return charSet
}()
func ixEncode64() -> String {
let strData = self.data(using: String.Encoding.utf8)
-
+
guard var str64 = strData?.base64EncodedString(options: Data.Base64EncodingOptions()) else {
return ""
}
-
+
str64 = str64.replacingOccurrences(of: "=", with: "")
str64 = str64.replacingOccurrences(of: "/", with: "_")
str64 = str64.replacingOccurrences(of: "+", with: "-")
-
+
return str64
}
-
+
func ixEncodeUriComponent() -> String {
return self.addingPercentEncoding(withAllowedCharacters: String.ixEncodeUriComponentCharSet)!
}
@@ -42,12 +39,13 @@ extension String {
func MD5(string: String) -> String {
let length = Int(CC_MD5_DIGEST_LENGTH)
- let messageData = string.data(using:.utf8)!
+ let messageData = string.data(using: .utf8)!
var digestData = Data(count: length)
_ = digestData.withUnsafeMutableBytes { digestBytes -> UInt8 in
messageData.withUnsafeBytes { messageBytes -> UInt8 in
- if let messageBytesBaseAddress = messageBytes.baseAddress, let digestBytesBlindMemory = digestBytes.bindMemory(to: UInt8.self).baseAddress {
+ if let messageBytesBaseAddress = messageBytes.baseAddress,
+ let digestBytesBlindMemory = digestBytes.bindMemory(to: UInt8.self).baseAddress {
let messageLength = CC_LONG(messageData.count)
CC_MD5(messageBytesBaseAddress, messageLength, digestBytesBlindMemory)
}
diff --git a/ImgixSwiftTests/BuildUrlTests.swift b/Tests/ImgixSwiftTests/BuildUrlTests.swift
similarity index 90%
rename from ImgixSwiftTests/BuildUrlTests.swift
rename to Tests/ImgixSwiftTests/BuildUrlTests.swift
index 4c8a307..b328ea7 100644
--- a/ImgixSwiftTests/BuildUrlTests.swift
+++ b/Tests/ImgixSwiftTests/BuildUrlTests.swift
@@ -1,9 +1,6 @@
//
// BuildUrlTests.swift
-// imgix-swift
-//
-// Created by Paul Straw on 7/4/16.
-//
+// ImgixSwiftTests
//
import XCTest
@@ -14,11 +11,11 @@ class BuildUrlTests: XCTestCase {
override func setUp() {
super.setUp()
-
+
client = ImgixClient.init(host: "paulstraw.imgix.net")
client.includeLibraryParam = false
}
-
+
override func tearDown() {
super.tearDown()
}
@@ -26,83 +23,83 @@ class BuildUrlTests: XCTestCase {
func testBuildUrlWithoutParams() {
let generatedUrl = client.buildUrl("1.jpg")
let expectedUrl = "https://paulstraw.imgix.net/1.jpg"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testBuildUrlWithoutParamsAndIncludeLibraryParam() {
client.includeLibraryParam = true
-
+
let generatedUrl = client.buildUrl("1.jpg")
let expectedUrl = "https://paulstraw.imgix.net/1.jpg?ixlib=swift-\(ImgixClient.VERSION)"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
func testBuildUrlEmptyParams() {
let generatedUrl = client.buildUrl("1.jpg", params: [:])
let expectedUrl = "https://paulstraw.imgix.net/1.jpg"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testBuildUrlWithOneParam() {
let generatedUrl = client.buildUrl("1.jpg", params: ["w": 400])
let expectedUrl = "https://paulstraw.imgix.net/1.jpg?w=400"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testBuildUrlWithOneParamAndIncludeLibraryParam() {
client.includeLibraryParam = true
-
+
let generatedUrl = client.buildUrl("1.jpg", params: ["w": 400])
let expectedUrl = "https://paulstraw.imgix.net/1.jpg?ixlib=swift-\(ImgixClient.VERSION)&w=400"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testBuildUrlWithMultipleParams() {
let generatedUrl = client.buildUrl("1.jpg", params: ["w": 400, "flip": "v"])
let expectedUrl = "https://paulstraw.imgix.net/1.jpg?flip=v&w=400"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
func testBuildUrlWithMultipleParamsSorted() {
let generatedUrl = client.buildUrl("1.jpg", params: ["w": 900, "h": 300, "fit": "crop", "crop": "entropy"])
let expectedUrl = "https://paulstraw.imgix.net/1.jpg?crop=entropy&fit=crop&h=300&w=900"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
func testBuildUrlWithMultipleParamsAndIncludeLibraryParamSorted() {
client.includeLibraryParam = true
let generatedUrl = client.buildUrl("1.jpg", params: ["w": 900, "h": 300, "fit": "crop", "crop": "entropy"])
- let expectedUrl = "https://paulstraw.imgix.net/1.jpg?crop=entropy&fit=crop&h=300&ixlib=swift-\(ImgixClient.VERSION)&w=900"
-
+ let expectedUrl = "https://paulstraw.imgix.net/1.jpg?" +
+ "crop=entropy&fit=crop&h=300&ixlib=swift-\(ImgixClient.VERSION)&w=900"
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testQueryStringKeyEscaping() {
let generatedUrl = client.buildUrl("1.jpg", params: ["hello world": "interesting"])
let expectedQuery = "hello%20world=interesting"
-
+
XCTAssert(generatedUrl.query == expectedQuery)
}
-
+
func testQueryStringValueEscaping() {
let generatedUrl = client.buildUrl("1.jpg", params: ["txt": "/foo'> <"])
let expectedQuery = "txt=%2Ffoo'%3E%20%3Cscript%3Ealert('hacked')%3C%2Fscript%3E%3C"
-
+
XCTAssert(generatedUrl.query == expectedQuery)
}
-
+
func testBase64ParamVariantsAreBase64Encoded() {
let generatedUrl = client.buildUrl("~text", params: ["txt64": "I cannøt belîév∑ it wors! 😱"])
let expectedQuery = "txt64=SSBjYW5uw7h0IGJlbMOuw6l24oiRIGl0IHdvcu-jv3MhIPCfmLE"
-
+
XCTAssert(generatedUrl.query == expectedQuery)
}
-
}
diff --git a/ImgixSwiftTests/Info.plist b/Tests/ImgixSwiftTests/Info.plist
similarity index 100%
rename from ImgixSwiftTests/Info.plist
rename to Tests/ImgixSwiftTests/Info.plist
diff --git a/ImgixSwiftTests/InitializationTests.swift b/Tests/ImgixSwiftTests/InitializationTests.swift
similarity index 91%
rename from ImgixSwiftTests/InitializationTests.swift
rename to Tests/ImgixSwiftTests/InitializationTests.swift
index fb9dd6c..055da07 100644
--- a/ImgixSwiftTests/InitializationTests.swift
+++ b/Tests/ImgixSwiftTests/InitializationTests.swift
@@ -2,46 +2,43 @@
// InitializationTests.swift
// ImgixSwiftTests
//
-// Created by Paul Straw on 7/4/16.
-//
-//
import XCTest
import ImgixSwift
class InitializationTests: XCTestCase {
-
+
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
-
+
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
-
+
func testHost() {
let client = ImgixClient.init(host: "paulstraw.imgix.net")
-
+
XCTAssert(client.host == "paulstraw.imgix.net")
}
-
+
func testDefaultsToHttpsUrls() {
let client = ImgixClient.init(host: "paulstraw.imgix.net")
-
+
XCTAssert(client.useHttps == true)
}
-
+
func testSettingHttpUrls() {
let client = ImgixClient.init(host: "paulstraw.imgix.net", useHttps: false)
-
+
XCTAssert(client.useHttps == false)
}
-
+
func testSettingSecureUrlToken() {
let client = ImgixClient.init(host: "paulstraw.imgix.net", secureUrlToken: "loreM")
-
+
XCTAssert(client.secureUrlToken == "loreM")
}
}
diff --git a/ImgixSwiftTests/ReconstructTests.swift b/Tests/ImgixSwiftTests/ReconstructTests.swift
similarity index 95%
rename from ImgixSwiftTests/ReconstructTests.swift
rename to Tests/ImgixSwiftTests/ReconstructTests.swift
index 1a96df6..73922e4 100644
--- a/ImgixSwiftTests/ReconstructTests.swift
+++ b/Tests/ImgixSwiftTests/ReconstructTests.swift
@@ -1,9 +1,6 @@
//
// ReconstructTests.swift
-// imgix-swift
-//
-// Created by Paul Straw on 11/3/16.
-//
+// ImgixSwiftTests
//
import XCTest
@@ -11,14 +8,14 @@ import ImgixSwift
class ReconstructTests: XCTestCase {
var client: ImgixClient!
-
+
override func setUp() {
super.setUp()
-
+
client = ImgixClient.init(host: "paulstraw.imgix.net")
client.includeLibraryParam = false
}
-
+
override func tearDown() {
super.tearDown()
}
@@ -27,18 +24,18 @@ class ReconstructTests: XCTestCase {
let inputUrl = NSURL.init(string: "https://paulstraw.imgix.net/pika.jpg")
let generatedUrl = client.reconstruct(originalURL: inputUrl! as URL)
let expectedUrl = "https://paulstraw.imgix.net/pika.jpg"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testReconstructUrlWithSingleExistingParam() {
let inputUrl = NSURL.init(string: "https://paulstraw.imgix.net/pika.jpg?w=200")
let generatedUrl = client.reconstruct(originalURL: inputUrl! as URL)
let expectedUrl = "https://paulstraw.imgix.net/pika.jpg?w=200"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testReconstructUrlWithMultipleExistingParams() {
let inputUrl = NSURL.init(string: "https://paulstraw.imgix.net/pika.jpg?w=200&h=200")
let generatedUrl = client.reconstruct(originalURL: inputUrl! as URL)
@@ -46,23 +43,23 @@ class ReconstructTests: XCTestCase {
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testReconstructUrlWithoutParamsAndOneNewParam() {
let inputUrl = NSURL.init(string: "https://paulstraw.imgix.net/pika.jpg")
let generatedUrl = client.reconstruct(originalURL: inputUrl! as URL, params: ["w": 200])
let expectedUrl = "https://paulstraw.imgix.net/pika.jpg?w=200"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testReconstructUrlWithoutParamsAndMultipleNewParams() {
let inputUrl = NSURL.init(string: "https://paulstraw.imgix.net/pika.jpg")
let generatedUrl = client.reconstruct(originalURL: inputUrl! as URL, params: ["w": 200, "h": 200])
let expectedUrl = "https://paulstraw.imgix.net/pika.jpg?h=200&w=200"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testReconstructUrlWithSingleExistingParamAndOneNewParam() {
let inputUrl = NSURL.init(string: "https://paulstraw.imgix.net/pika.jpg?w=200")
let generatedUrl = client.reconstruct(originalURL: inputUrl! as URL, params: ["h": 200])
@@ -70,7 +67,7 @@ class ReconstructTests: XCTestCase {
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testReconstructUrlWithMultipleExistingParamsAndOneNewParam() {
let inputUrl = NSURL.init(string: "https://paulstraw.imgix.net/pika.jpg?w=200&h=200")
let generatedUrl = client.reconstruct(originalURL: inputUrl! as URL, params: ["fit": "crop"])
@@ -78,45 +75,44 @@ class ReconstructTests: XCTestCase {
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testReconstructUrlWithMultipleExistingParamsAndMultipleNewParams() {
let inputUrl = NSURL.init(string: "https://paulstraw.imgix.net/pika.jpg?w=200&h=200")
let generatedUrl = client.reconstruct(originalURL: inputUrl! as URL, params: ["fit": "crop", "invert": true])
let expectedUrl = "https://paulstraw.imgix.net/pika.jpg?fit=crop&h=200&invert=1&w=200"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testReconstructUrlWithExistingParamOverriddenByNewParam() {
let inputUrl = NSURL.init(string: "https://paulstraw.imgix.net/pika.jpg?w=200")
let generatedUrl = client.reconstruct(originalURL: inputUrl! as URL, params: ["w": 300])
let expectedUrl = "https://paulstraw.imgix.net/pika.jpg?w=300"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testReconstructUrlWithDifferentHostThanClient() {
let inputUrl = NSURL.init(string: "https://faulstraw.imgix.net/pika.jpg")
let generatedUrl = client.reconstruct(originalURL: inputUrl! as URL)
let expectedUrl = "https://faulstraw.imgix.net/pika.jpg"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testReconstructUrlWithDifferentSchemeThanClient() {
let inputUrl = NSURL.init(string: "http://paulstraw.imgix.net/pika.jpg")
let generatedUrl = client.reconstruct(originalURL: inputUrl! as URL)
let expectedUrl = "http://paulstraw.imgix.net/pika.jpg"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testReconstructUrlWithDifferentPortThanClient() {
let inputUrl = NSURL.init(string: "https://paulstraw.imgix.net:8080/pika.jpg")
let generatedUrl = client.reconstruct(originalURL: inputUrl! as URL)
let expectedUrl = "https://paulstraw.imgix.net:8080/pika.jpg"
-
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
}
diff --git a/ImgixSwiftTests/SignatureTests.swift b/Tests/ImgixSwiftTests/SignatureTests.swift
similarity index 91%
rename from ImgixSwiftTests/SignatureTests.swift
rename to Tests/ImgixSwiftTests/SignatureTests.swift
index 0b31284..76442c9 100644
--- a/ImgixSwiftTests/SignatureTests.swift
+++ b/Tests/ImgixSwiftTests/SignatureTests.swift
@@ -1,9 +1,6 @@
//
// SignatureTests.swift
-// imgix-swift
-//
-// Created by Paul Straw on 7/5/16.
-//
+// ImgixSwiftTests
//
import XCTest
@@ -11,56 +8,55 @@ import ImgixSwift
class SignatureTests: XCTestCase {
var client: ImgixClient!
-
+
override func setUp() {
super.setUp()
-
+
client = ImgixClient.init(
host: "imgix-library-secure-test-source.imgix.net",
secureUrlToken: "EHFQXiZhxP4wA2c4"
)
-
+
client.includeLibraryParam = false
}
-
+
override func tearDown() {
super.tearDown()
}
-
+
func testSigningWithoutParams() {
let generatedUrl = client.buildUrl("dog.jpg")
let expectedQuery = "s=2b0bc99b1042e3c1c9aae6598acc3def"
-
+
XCTAssert(generatedUrl.query == expectedQuery)
}
-
+
func testSigningWithOneParam() {
let generatedUrl = client.buildUrl("dog.jpg", params: ["bri": 50])
let expectedQuery = "bri=50&s=3b293930d9c288fb788657fd9ed8164f"
-
+
XCTAssert(generatedUrl.query == expectedQuery)
}
-
+
func testSigningWithMultipleParams() {
let generatedUrl = client.buildUrl("dog.jpg", params: ["bri": 50, "con": 20])
let expectedQuery = "bri=50&con=20&s=30c03db96a644d5ce6e85022be191248"
-
+
XCTAssert(generatedUrl.query == expectedQuery)
}
-
+
func testSigningWithParamIncludingComma() {
let generatedUrl = client.buildUrl("dog.jpg", params: ["rect": "1300,900,360,360"])
let expectedQuery = "rect=1300%2C900%2C360%2C360&s=aa57997fdc2d6dd979b11bb831a9c711"
-
+
XCTAssert(generatedUrl.query == expectedQuery)
}
-
+
func testSigningWithBase64ParamVariant() {
let generatedUrl = client.buildUrl("dog.jpg", params: ["rect64": "1300,900,360,360"])
let expectedQuery = "rect64=MTMwMCw5MDAsMzYwLDM2MA&s=364717b54a62b58a2b1eb29949c08d95"
-
+
XCTAssert(generatedUrl.query == expectedQuery)
}
-
-}
+}
diff --git a/ImgixSwiftTests/WebProxyTests.swift b/Tests/ImgixSwiftTests/WebProxyTests.swift
similarity index 69%
rename from ImgixSwiftTests/WebProxyTests.swift
rename to Tests/ImgixSwiftTests/WebProxyTests.swift
index 77a8c25..4430301 100644
--- a/ImgixSwiftTests/WebProxyTests.swift
+++ b/Tests/ImgixSwiftTests/WebProxyTests.swift
@@ -1,9 +1,6 @@
//
// WebProxyTests.swift
-// imgix-swift
-//
-// Created by Paul Straw on 7/5/16.
-//
+// ImgixSwiftTests
//
import XCTest
@@ -12,30 +9,32 @@ import ImgixSwift
class WebProxyTests: XCTestCase {
var client: ImgixClient!
-
+
override func setUp() {
super.setUp()
-
- client = ImgixClient.init(host: "imgix-library-web-proxy-test-source.imgix.net", secureUrlToken: "qN5VOqaLGQUFzETO")
+
+ client = ImgixClient.init(host: "imgix-library-web-proxy-test-source.imgix.net",
+ secureUrlToken: "qN5VOqaLGQUFzETO")
client.includeLibraryParam = false
}
-
+
override func tearDown() {
super.tearDown()
}
-
+
func testFullyQualifiedPath() {
let generatedUrl = client.buildUrl("http://files.paulstraw.com/pixelpaul.png")
- let expectedUrl = "https://imgix-library-web-proxy-test-source.imgix.net/http%3A%2F%2Ffiles.paulstraw.com%2Fpixelpaul.png?s=1c57b8db669c9b265b4dd42f3b2de37a"
-
+ let expectedUrl = "https://imgix-library-web-proxy-test-source.imgix.net/" +
+ "http%3A%2F%2Ffiles.paulstraw.com%2Fpixelpaul.png?s=1c57b8db669c9b265b4dd42f3b2de37a"
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
+
func testEscapesFullyQualifiedPath() {
let generatedUrl = client.buildUrl("http://files.paulstraw.com/pixel>paul.png")
- let expectedUrl = "https://imgix-library-web-proxy-test-source.imgix.net/http%3A%2F%2Ffiles.paulstraw.com%2Fpixel%3Epaul.png?s=a9bbef784d922914d0a915dc9e218f6f"
-
+ let expectedUrl = "https://imgix-library-web-proxy-test-source.imgix.net/" +
+ "http%3A%2F%2Ffiles.paulstraw.com%2Fpixel%3Epaul.png?s=a9bbef784d922914d0a915dc9e218f6f"
+
XCTAssert(generatedUrl.absoluteString == expectedUrl)
}
-
}
diff --git a/imgix-swift.xcodeproj/project.pbxproj b/imgix-swift.xcodeproj/project.pbxproj
index 1b3bb4b..bd6bb33 100644
--- a/imgix-swift.xcodeproj/project.pbxproj
+++ b/imgix-swift.xcodeproj/project.pbxproj
@@ -7,30 +7,36 @@
objects = {
/* Begin PBXBuildFile section */
- 580B383523E4DFA100FB9DF3 /* ReconstructTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FB9ABCC1DCC037B00D2FD6B /* ReconstructTests.swift */; };
- 580B383623E4DFEA00FB9DF3 /* ReconstructTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FB9ABCC1DCC037B00D2FD6B /* ReconstructTests.swift */; };
+ 588DC28523F3666000E7B7D7 /* WebProxyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC27C23F3666000E7B7D7 /* WebProxyTests.swift */; };
+ 588DC28623F3666000E7B7D7 /* WebProxyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC27C23F3666000E7B7D7 /* WebProxyTests.swift */; };
+ 588DC28723F3666000E7B7D7 /* WebProxyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC27C23F3666000E7B7D7 /* WebProxyTests.swift */; };
+ 588DC28B23F3666000E7B7D7 /* ReconstructTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC27D23F3666000E7B7D7 /* ReconstructTests.swift */; };
+ 588DC28C23F3666000E7B7D7 /* ReconstructTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC27D23F3666000E7B7D7 /* ReconstructTests.swift */; };
+ 588DC28D23F3666000E7B7D7 /* ReconstructTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC27D23F3666000E7B7D7 /* ReconstructTests.swift */; };
+ 588DC29123F3666000E7B7D7 /* InitializationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC27E23F3666000E7B7D7 /* InitializationTests.swift */; };
+ 588DC29223F3666000E7B7D7 /* InitializationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC27E23F3666000E7B7D7 /* InitializationTests.swift */; };
+ 588DC29323F3666000E7B7D7 /* InitializationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC27E23F3666000E7B7D7 /* InitializationTests.swift */; };
+ 588DC29723F3666000E7B7D7 /* BuildUrlTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC27F23F3666000E7B7D7 /* BuildUrlTests.swift */; };
+ 588DC29823F3666000E7B7D7 /* BuildUrlTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC27F23F3666000E7B7D7 /* BuildUrlTests.swift */; };
+ 588DC29923F3666000E7B7D7 /* BuildUrlTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC27F23F3666000E7B7D7 /* BuildUrlTests.swift */; };
+ 588DC2A323F3666000E7B7D7 /* SignatureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC28123F3666000E7B7D7 /* SignatureTests.swift */; };
+ 588DC2A423F3666000E7B7D7 /* SignatureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC28123F3666000E7B7D7 /* SignatureTests.swift */; };
+ 588DC2A523F3666000E7B7D7 /* SignatureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC28123F3666000E7B7D7 /* SignatureTests.swift */; };
+ 588DC2AB23F3666400E7B7D7 /* ImgixClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC2A823F3666400E7B7D7 /* ImgixClient.swift */; };
+ 588DC2AC23F3666400E7B7D7 /* ImgixClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC2A823F3666400E7B7D7 /* ImgixClient.swift */; };
+ 588DC2AD23F3666400E7B7D7 /* ImgixClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC2A823F3666400E7B7D7 /* ImgixClient.swift */; };
+ 588DC2AE23F3666400E7B7D7 /* ImgixClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC2A823F3666400E7B7D7 /* ImgixClient.swift */; };
+ 588DC2AF23F3666400E7B7D7 /* ImgixClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC2A823F3666400E7B7D7 /* ImgixClient.swift */; };
+ 588DC2B023F3666400E7B7D7 /* ImgixClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC2A823F3666400E7B7D7 /* ImgixClient.swift */; };
+ 588DC2B123F3666400E7B7D7 /* String+ImgixSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC2A923F3666400E7B7D7 /* String+ImgixSwift.swift */; };
+ 588DC2B223F3666400E7B7D7 /* String+ImgixSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC2A923F3666400E7B7D7 /* String+ImgixSwift.swift */; };
+ 588DC2B323F3666400E7B7D7 /* String+ImgixSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC2A923F3666400E7B7D7 /* String+ImgixSwift.swift */; };
+ 588DC2B423F3666400E7B7D7 /* String+ImgixSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC2A923F3666400E7B7D7 /* String+ImgixSwift.swift */; };
+ 588DC2B523F3666400E7B7D7 /* String+ImgixSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC2A923F3666400E7B7D7 /* String+ImgixSwift.swift */; };
+ 588DC2B623F3666400E7B7D7 /* String+ImgixSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588DC2A923F3666400E7B7D7 /* String+ImgixSwift.swift */; };
8F06ECF11D2C8AA8001CEC88 /* ImgixSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F06ECCC1D2C8832001CEC88 /* ImgixSwift.framework */; };
8F06ED001D2C8ABA001CEC88 /* ImgixSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F06ECA51D2C8805001CEC88 /* ImgixSwift.framework */; };
8F06ED0F1D2C8AD2001CEC88 /* ImgixSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F06ECBF1D2C8828001CEC88 /* ImgixSwift.framework */; };
- 8F06ED151D2C8AE1001CEC88 /* BuildUrlTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FF42EA01D2B38AC002BE7D4 /* BuildUrlTests.swift */; };
- 8F06ED161D2C8AE1001CEC88 /* InitializationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FF42E901D2B312C002BE7D4 /* InitializationTests.swift */; };
- 8F06ED171D2C8AE1001CEC88 /* SignatureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F9052181D2C34A000B0C1B6 /* SignatureTests.swift */; };
- 8F06ED181D2C8AE1001CEC88 /* WebProxyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F90521A1D2C3D0B00B0C1B6 /* WebProxyTests.swift */; };
- 8F06ED191D2C8AE1001CEC88 /* BuildUrlTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FF42EA01D2B38AC002BE7D4 /* BuildUrlTests.swift */; };
- 8F06ED1A1D2C8AE1001CEC88 /* InitializationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FF42E901D2B312C002BE7D4 /* InitializationTests.swift */; };
- 8F06ED1B1D2C8AE1001CEC88 /* SignatureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F9052181D2C34A000B0C1B6 /* SignatureTests.swift */; };
- 8F06ED1C1D2C8AE1001CEC88 /* WebProxyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F90521A1D2C3D0B00B0C1B6 /* WebProxyTests.swift */; };
- 8F06ED1D1D2C8AE1001CEC88 /* BuildUrlTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FF42EA01D2B38AC002BE7D4 /* BuildUrlTests.swift */; };
- 8F06ED1E1D2C8AE1001CEC88 /* InitializationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FF42E901D2B312C002BE7D4 /* InitializationTests.swift */; };
- 8F06ED1F1D2C8AE1001CEC88 /* SignatureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F9052181D2C34A000B0C1B6 /* SignatureTests.swift */; };
- 8F06ED201D2C8AE1001CEC88 /* WebProxyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F90521A1D2C3D0B00B0C1B6 /* WebProxyTests.swift */; };
- 8F12BC2E1D2EF2FE00B56C8A /* String+ImgixSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F12BC2D1D2EF2FE00B56C8A /* String+ImgixSwift.swift */; };
- 8F12BC2F1D2EF2FE00B56C8A /* String+ImgixSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F12BC2D1D2EF2FE00B56C8A /* String+ImgixSwift.swift */; };
- 8F12BC301D2EF2FE00B56C8A /* String+ImgixSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F12BC2D1D2EF2FE00B56C8A /* String+ImgixSwift.swift */; };
- 8F91A77B1D2C94EB0010384D /* ImgixClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F91A7751D2C94EB0010384D /* ImgixClient.swift */; };
- 8F91A77C1D2C94EB0010384D /* ImgixClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F91A7751D2C94EB0010384D /* ImgixClient.swift */; };
- 8F91A77D1D2C94EB0010384D /* ImgixClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F91A7751D2C94EB0010384D /* ImgixClient.swift */; };
- 8FB9ABCD1DCC037B00D2FD6B /* ReconstructTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FB9ABCC1DCC037B00D2FD6B /* ReconstructTests.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -58,21 +64,21 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
+ 588DC27C23F3666000E7B7D7 /* WebProxyTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebProxyTests.swift; sourceTree = ""; };
+ 588DC27D23F3666000E7B7D7 /* ReconstructTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReconstructTests.swift; sourceTree = ""; };
+ 588DC27E23F3666000E7B7D7 /* InitializationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InitializationTests.swift; sourceTree = ""; };
+ 588DC27F23F3666000E7B7D7 /* BuildUrlTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BuildUrlTests.swift; sourceTree = ""; };
+ 588DC28023F3666000E7B7D7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 588DC28123F3666000E7B7D7 /* SignatureTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SignatureTests.swift; sourceTree = ""; };
+ 588DC2A823F3666400E7B7D7 /* ImgixClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImgixClient.swift; sourceTree = ""; };
+ 588DC2A923F3666400E7B7D7 /* String+ImgixSwift.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+ImgixSwift.swift"; sourceTree = ""; };
+ 588DC2AA23F3666400E7B7D7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
8F06ECA51D2C8805001CEC88 /* ImgixSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ImgixSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; };
8F06ECBF1D2C8828001CEC88 /* ImgixSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ImgixSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; };
8F06ECCC1D2C8832001CEC88 /* ImgixSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ImgixSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; };
8F06ECEC1D2C8AA8001CEC88 /* ImgixSwiftTests-macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "ImgixSwiftTests-macOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
8F06ECFB1D2C8ABA001CEC88 /* ImgixSwiftTests-iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "ImgixSwiftTests-iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
8F06ED0A1D2C8AD2001CEC88 /* ImgixSwiftTests-tvOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "ImgixSwiftTests-tvOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
- 8F12BC2D1D2EF2FE00B56C8A /* String+ImgixSwift.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "String+ImgixSwift.swift"; path = "Sources/String+ImgixSwift.swift"; sourceTree = ""; };
- 8F9052181D2C34A000B0C1B6 /* SignatureTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SignatureTests.swift; sourceTree = ""; };
- 8F90521A1D2C3D0B00B0C1B6 /* WebProxyTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebProxyTests.swift; sourceTree = ""; };
- 8F91A76E1D2C94CD0010384D /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Sources/Info.plist; sourceTree = ""; };
- 8F91A7751D2C94EB0010384D /* ImgixClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ImgixClient.swift; path = Sources/ImgixClient.swift; sourceTree = ""; };
- 8FB9ABCC1DCC037B00D2FD6B /* ReconstructTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReconstructTests.swift; sourceTree = ""; };
- 8FF42E901D2B312C002BE7D4 /* InitializationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InitializationTests.swift; sourceTree = ""; };
- 8FF42E921D2B312C002BE7D4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 8FF42EA01D2B38AC002BE7D4 /* BuildUrlTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BuildUrlTests.swift; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -124,49 +130,65 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 8F82BE501D25EDDD00551F76 = {
+ 588DC27A23F3666000E7B7D7 /* Tests */ = {
isa = PBXGroup;
children = (
- 8F82BE5D1D25EE1100551F76 /* Products */,
- 8FF42E8F1D2B312C002BE7D4 /* ImgixSwiftTests */,
- 8F82BE921D25F0ED00551F76 /* Sources */,
+ 588DC27B23F3666000E7B7D7 /* ImgixSwiftTests */,
);
+ path = Tests;
sourceTree = "";
};
- 8F82BE5D1D25EE1100551F76 /* Products */ = {
+ 588DC27B23F3666000E7B7D7 /* ImgixSwiftTests */ = {
isa = PBXGroup;
children = (
- 8F06ECA51D2C8805001CEC88 /* ImgixSwift.framework */,
- 8F06ECBF1D2C8828001CEC88 /* ImgixSwift.framework */,
- 8F06ECCC1D2C8832001CEC88 /* ImgixSwift.framework */,
- 8F06ECEC1D2C8AA8001CEC88 /* ImgixSwiftTests-macOS.xctest */,
- 8F06ECFB1D2C8ABA001CEC88 /* ImgixSwiftTests-iOS.xctest */,
- 8F06ED0A1D2C8AD2001CEC88 /* ImgixSwiftTests-tvOS.xctest */,
+ 588DC27C23F3666000E7B7D7 /* WebProxyTests.swift */,
+ 588DC27D23F3666000E7B7D7 /* ReconstructTests.swift */,
+ 588DC27E23F3666000E7B7D7 /* InitializationTests.swift */,
+ 588DC27F23F3666000E7B7D7 /* BuildUrlTests.swift */,
+ 588DC28023F3666000E7B7D7 /* Info.plist */,
+ 588DC28123F3666000E7B7D7 /* SignatureTests.swift */,
);
- name = Products;
+ path = ImgixSwiftTests;
sourceTree = "";
};
- 8F82BE921D25F0ED00551F76 /* Sources */ = {
+ 588DC2A623F3666400E7B7D7 /* Sources */ = {
isa = PBXGroup;
children = (
- 8F91A76E1D2C94CD0010384D /* Info.plist */,
- 8F91A7751D2C94EB0010384D /* ImgixClient.swift */,
- 8F12BC2D1D2EF2FE00B56C8A /* String+ImgixSwift.swift */,
+ 588DC2A723F3666400E7B7D7 /* ImgixSwift */,
);
- name = Sources;
+ path = Sources;
sourceTree = "";
};
- 8FF42E8F1D2B312C002BE7D4 /* ImgixSwiftTests */ = {
+ 588DC2A723F3666400E7B7D7 /* ImgixSwift */ = {
isa = PBXGroup;
children = (
- 8FF42EA01D2B38AC002BE7D4 /* BuildUrlTests.swift */,
- 8FF42E901D2B312C002BE7D4 /* InitializationTests.swift */,
- 8FB9ABCC1DCC037B00D2FD6B /* ReconstructTests.swift */,
- 8F9052181D2C34A000B0C1B6 /* SignatureTests.swift */,
- 8F90521A1D2C3D0B00B0C1B6 /* WebProxyTests.swift */,
- 8FF42E921D2B312C002BE7D4 /* Info.plist */,
+ 588DC2A823F3666400E7B7D7 /* ImgixClient.swift */,
+ 588DC2A923F3666400E7B7D7 /* String+ImgixSwift.swift */,
+ 588DC2AA23F3666400E7B7D7 /* Info.plist */,
);
- path = ImgixSwiftTests;
+ path = ImgixSwift;
+ sourceTree = "";
+ };
+ 8F82BE501D25EDDD00551F76 = {
+ isa = PBXGroup;
+ children = (
+ 8F82BE5D1D25EE1100551F76 /* Products */,
+ 588DC2A623F3666400E7B7D7 /* Sources */,
+ 588DC27A23F3666000E7B7D7 /* Tests */,
+ );
+ sourceTree = "";
+ };
+ 8F82BE5D1D25EE1100551F76 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 8F06ECA51D2C8805001CEC88 /* ImgixSwift.framework */,
+ 8F06ECBF1D2C8828001CEC88 /* ImgixSwift.framework */,
+ 8F06ECCC1D2C8832001CEC88 /* ImgixSwift.framework */,
+ 8F06ECEC1D2C8AA8001CEC88 /* ImgixSwiftTests-macOS.xctest */,
+ 8F06ECFB1D2C8ABA001CEC88 /* ImgixSwiftTests-iOS.xctest */,
+ 8F06ED0A1D2C8AD2001CEC88 /* ImgixSwiftTests-tvOS.xctest */,
+ );
+ name = Products;
sourceTree = "";
};
/* End PBXGroup section */
@@ -412,8 +434,8 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8F91A77B1D2C94EB0010384D /* ImgixClient.swift in Sources */,
- 8F12BC2E1D2EF2FE00B56C8A /* String+ImgixSwift.swift in Sources */,
+ 588DC2B123F3666400E7B7D7 /* String+ImgixSwift.swift in Sources */,
+ 588DC2AB23F3666400E7B7D7 /* ImgixClient.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -421,8 +443,8 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8F91A77C1D2C94EB0010384D /* ImgixClient.swift in Sources */,
- 8F12BC2F1D2EF2FE00B56C8A /* String+ImgixSwift.swift in Sources */,
+ 588DC2B223F3666400E7B7D7 /* String+ImgixSwift.swift in Sources */,
+ 588DC2AC23F3666400E7B7D7 /* ImgixClient.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -430,8 +452,8 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8F91A77D1D2C94EB0010384D /* ImgixClient.swift in Sources */,
- 8F12BC301D2EF2FE00B56C8A /* String+ImgixSwift.swift in Sources */,
+ 588DC2B323F3666400E7B7D7 /* String+ImgixSwift.swift in Sources */,
+ 588DC2AD23F3666400E7B7D7 /* ImgixClient.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -439,11 +461,13 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8F06ED171D2C8AE1001CEC88 /* SignatureTests.swift in Sources */,
- 8FB9ABCD1DCC037B00D2FD6B /* ReconstructTests.swift in Sources */,
- 8F06ED151D2C8AE1001CEC88 /* BuildUrlTests.swift in Sources */,
- 8F06ED161D2C8AE1001CEC88 /* InitializationTests.swift in Sources */,
- 8F06ED181D2C8AE1001CEC88 /* WebProxyTests.swift in Sources */,
+ 588DC29723F3666000E7B7D7 /* BuildUrlTests.swift in Sources */,
+ 588DC2B423F3666400E7B7D7 /* String+ImgixSwift.swift in Sources */,
+ 588DC2AE23F3666400E7B7D7 /* ImgixClient.swift in Sources */,
+ 588DC2A323F3666000E7B7D7 /* SignatureTests.swift in Sources */,
+ 588DC28B23F3666000E7B7D7 /* ReconstructTests.swift in Sources */,
+ 588DC29123F3666000E7B7D7 /* InitializationTests.swift in Sources */,
+ 588DC28523F3666000E7B7D7 /* WebProxyTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -451,11 +475,13 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 580B383623E4DFEA00FB9DF3 /* ReconstructTests.swift in Sources */,
- 8F06ED1B1D2C8AE1001CEC88 /* SignatureTests.swift in Sources */,
- 8F06ED191D2C8AE1001CEC88 /* BuildUrlTests.swift in Sources */,
- 8F06ED1A1D2C8AE1001CEC88 /* InitializationTests.swift in Sources */,
- 8F06ED1C1D2C8AE1001CEC88 /* WebProxyTests.swift in Sources */,
+ 588DC29823F3666000E7B7D7 /* BuildUrlTests.swift in Sources */,
+ 588DC2B523F3666400E7B7D7 /* String+ImgixSwift.swift in Sources */,
+ 588DC2AF23F3666400E7B7D7 /* ImgixClient.swift in Sources */,
+ 588DC2A423F3666000E7B7D7 /* SignatureTests.swift in Sources */,
+ 588DC28C23F3666000E7B7D7 /* ReconstructTests.swift in Sources */,
+ 588DC29223F3666000E7B7D7 /* InitializationTests.swift in Sources */,
+ 588DC28623F3666000E7B7D7 /* WebProxyTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -463,11 +489,13 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 580B383523E4DFA100FB9DF3 /* ReconstructTests.swift in Sources */,
- 8F06ED1F1D2C8AE1001CEC88 /* SignatureTests.swift in Sources */,
- 8F06ED1D1D2C8AE1001CEC88 /* BuildUrlTests.swift in Sources */,
- 8F06ED1E1D2C8AE1001CEC88 /* InitializationTests.swift in Sources */,
- 8F06ED201D2C8AE1001CEC88 /* WebProxyTests.swift in Sources */,
+ 588DC29923F3666000E7B7D7 /* BuildUrlTests.swift in Sources */,
+ 588DC2B623F3666400E7B7D7 /* String+ImgixSwift.swift in Sources */,
+ 588DC2B023F3666400E7B7D7 /* ImgixClient.swift in Sources */,
+ 588DC2A523F3666000E7B7D7 /* SignatureTests.swift in Sources */,
+ 588DC28D23F3666000E7B7D7 /* ReconstructTests.swift in Sources */,
+ 588DC29323F3666000E7B7D7 /* InitializationTests.swift in Sources */,
+ 588DC28723F3666000E7B7D7 /* WebProxyTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -535,7 +563,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist";
+ INFOPLIST_FILE = "$(SRCROOT)/Sources/ImgixSwift/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
@@ -595,7 +623,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist";
+ INFOPLIST_FILE = "$(SRCROOT)/Sources/ImgixSwift/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
@@ -659,7 +687,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist";
+ INFOPLIST_FILE = "$(SRCROOT)/Sources/ImgixSwift/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MODULEMAP_FILE = "";
@@ -718,7 +746,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist";
+ INFOPLIST_FILE = "$(SRCROOT)/Sources/ImgixSwift/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MODULEMAP_FILE = "";
@@ -784,7 +812,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist";
+ INFOPLIST_FILE = "$(SRCROOT)/Sources/ImgixSwift/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -845,7 +873,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist";
+ INFOPLIST_FILE = "$(SRCROOT)/Sources/ImgixSwift/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -869,6 +897,7 @@
8F06ECF51D2C8AA8001CEC88 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@@ -903,7 +932,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- INFOPLIST_FILE = ImgixSwiftTests/Info.plist;
+ INFOPLIST_FILE = Tests/ImgixSwiftTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = YES;
@@ -920,6 +949,7 @@
8F06ECF61D2C8AA8001CEC88 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@@ -948,7 +978,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- INFOPLIST_FILE = ImgixSwiftTests/Info.plist;
+ INFOPLIST_FILE = Tests/ImgixSwiftTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = NO;
@@ -963,6 +993,7 @@
8F06ED041D2C8ABA001CEC88 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@@ -996,7 +1027,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- INFOPLIST_FILE = ImgixSwiftTests/Info.plist;
+ INFOPLIST_FILE = Tests/ImgixSwiftTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.3;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = YES;
@@ -1012,6 +1043,7 @@
8F06ED051D2C8ABA001CEC88 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@@ -1039,7 +1071,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- INFOPLIST_FILE = ImgixSwiftTests/Info.plist;
+ INFOPLIST_FILE = Tests/ImgixSwiftTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.3;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = NO;
@@ -1054,6 +1086,7 @@
8F06ED131D2C8AD2001CEC88 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@@ -1086,7 +1119,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- INFOPLIST_FILE = ImgixSwiftTests/Info.plist;
+ INFOPLIST_FILE = Tests/ImgixSwiftTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -1102,6 +1135,7 @@
8F06ED141D2C8AD2001CEC88 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@@ -1128,7 +1162,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- INFOPLIST_FILE = ImgixSwiftTests/Info.plist;
+ INFOPLIST_FILE = Tests/ImgixSwiftTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_BUNDLE_IDENTIFIER = "com.imgix.ImgixSwiftTests-tvOS";
diff --git a/imgix-swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/imgix-swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index fa179ab..7c6de21 100644
--- a/imgix-swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/imgix-swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -1,7 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ location = "self:">