├── Zeal
├── Zeal.h
├── Info.plist
├── HTTPClientType
│ ├── TCPClientType.swift
│ ├── HTTPResponseParserType.swift
│ ├── TCPStreamType.swift
│ ├── HTTPRequestSerializerType.swift
│ └── HTTPClientType.swift
└── HTTPClient
│ ├── HTTPClient.swift
│ ├── HTTPParser.swift
│ ├── TCPClient.swift
│ ├── HTTPSerializer.swift
│ └── TCPStream.swift
├── Zeal.xcodeproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
├── xcshareddata
│ └── xcschemes
│ │ ├── Zeal OSX.xcscheme
│ │ └── Zeal iOS.xcscheme
└── project.pbxproj
├── .gitmodules
├── .gitignore
├── Zeal.podspec
├── Zeal Tests
├── Info.plist
└── ZealTests.swift
├── LICENSE
└── README.md
/Zeal/Zeal.h:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Zeal.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "HTTPParser"]
2 | path = HTTPParser
3 | url = https://github.com/Zewo/HTTPParser.git
4 | branch = master
5 | [submodule "TCPIP"]
6 | path = TCPIP
7 | url = https://github.com/Zewo/TCPIP.git
8 | branch = master
9 | [submodule "GrandCentralDispatch"]
10 | path = GrandCentralDispatch
11 | url = https://github.com/Zewo/GrandCentralDispatch.git
12 | branch = master
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by https://www.gitignore.io/api/xcode
2 |
3 | ### Xcode ###
4 | # Xcode
5 | #
6 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
7 |
8 | ## Build generated
9 | build/
10 | DerivedData
11 | Carthage/
12 |
13 | ## Various settings
14 | *.pbxuser
15 | !default.pbxuser
16 | *.mode1v3
17 | !default.mode1v3
18 | *.mode2v3
19 | !default.mode2v3
20 | *.perspectivev3
21 | !default.perspectivev3
22 | xcuserdata
23 |
24 | ## Other
25 | *.xccheckout
26 | *.moved-aside
27 | *.xcuserstate
28 | *.xcscmblueprint
--------------------------------------------------------------------------------
/Zeal.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = 'Zeal'
3 | s.version = '0.1'
4 | s.license = 'MIT'
5 | s.summary = 'GCD based HTTP client for Swift 2 (Linux ready)'
6 | s.homepage = 'https://github.com/Zewo/Zeal'
7 | s.authors = { 'Paulo Faria' => 'paulo.faria.rl@gmail.com' }
8 | s.source = { :git => 'https://github.com/Zewo/Zeal.git', :tag => s.version }
9 |
10 | s.ios.deployment_target = '8.0'
11 | s.osx.deployment_target = '10.9'
12 |
13 | s.source_files = 'Zeal/**/*.swift'
14 |
15 | s.dependency 'HTTPParser'
16 | s.dependency 'GrandCentralDispatch'
17 | s.dependency 'TCPIP'
18 |
19 | s.requires_arc = true
20 | end
--------------------------------------------------------------------------------
/Zeal Tests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Zeal/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | NSHumanReadableCopyright
24 | Copyright © 2015 Zewo. All rights reserved.
25 | NSPrincipalClass
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Zewo
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/Zeal/HTTPClientType/TCPClientType.swift:
--------------------------------------------------------------------------------
1 | // TCPClientType.swift
2 | //
3 | // The MIT License (MIT)
4 | //
5 | // Copyright (c) 2015 Zewo
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | // SOFTWARE.
24 |
25 | public protocol TCPClientType {
26 | var host: String { get }
27 | var port: Int { get }
28 | func connect(completion: (Void throws -> TCPStreamType) -> Void)
29 | }
--------------------------------------------------------------------------------
/Zeal/HTTPClientType/HTTPResponseParserType.swift:
--------------------------------------------------------------------------------
1 | // HTTPResponseParserType.swift
2 | //
3 | // The MIT License (MIT)
4 | //
5 | // Copyright (c) 2015 Zewo
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | // SOFTWARE.
24 |
25 | import HTTP
26 |
27 | public protocol HTTPResponseParserType {
28 | func parseResponse(client: TCPStreamType, completion: (Void throws -> HTTPResponse) -> Void)
29 | }
--------------------------------------------------------------------------------
/Zeal/HTTPClientType/TCPStreamType.swift:
--------------------------------------------------------------------------------
1 | // TCPStreamType.swift
2 | //
3 | // The MIT License (MIT)
4 | //
5 | // Copyright (c) 2015 Zewo
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | // SOFTWARE.
24 |
25 | public protocol TCPStreamType {
26 | func close()
27 | func receive(completion: (Void throws -> [Int8]) -> Void)
28 | func send(data: [Int8], completion: (Void throws -> Void) -> Void)
29 | }
30 |
--------------------------------------------------------------------------------
/Zeal/HTTPClientType/HTTPRequestSerializerType.swift:
--------------------------------------------------------------------------------
1 | // HTTPRequestSerializerType.swift
2 | //
3 | // The MIT License (MIT)
4 | //
5 | // Copyright (c) 2015 Zewo
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | // SOFTWARE.
24 |
25 | import HTTP
26 |
27 | public protocol HTTPRequestSerializerType {
28 | func serializeRequest(client: TCPStreamType, request: HTTPRequest, completion: (Void throws -> Void) -> Void)
29 | }
--------------------------------------------------------------------------------
/Zeal/HTTPClient/HTTPClient.swift:
--------------------------------------------------------------------------------
1 | // HTTPClient.swift
2 | //
3 | // The MIT License (MIT)
4 | //
5 | // Copyright (c) 2015 Zewo
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | // SOFTWARE.
24 |
25 | import HTTP
26 |
27 | public struct HTTPClient: HTTPClientType {
28 | public let client: TCPClientType
29 | public let serializer: HTTPRequestSerializerType = HTTPSerializer()
30 | public let parser: HTTPResponseParserType = HTTPParser()
31 |
32 | public init(host: String, port: Int) {
33 | self.client = TCPClient(host: host, port: port)
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Zeal Tests/ZealTests.swift:
--------------------------------------------------------------------------------
1 | // ZealTests.swift
2 | //
3 | // The MIT License (MIT)
4 | //
5 | // Copyright (c) 2015 Zewo
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | // SOFTWARE.
24 |
25 | import XCTest
26 | import Zeal
27 | import HTTP
28 | import URI
29 | import GrandCentralDispatch
30 |
31 | class ZealTests: XCTestCase {
32 | func testExample() {
33 | let client = HTTPClient(host: "http://www.google.com.br/?gfe_rd=cr&ei=CDBeVsnAL4OX8QevspGwAg", port: 80)
34 |
35 | client.get("/") { result in
36 | do {
37 | let response = try result()
38 | print(response)
39 | } catch {
40 | print(error)
41 | }
42 | }
43 |
44 | GrandCentralDispatch.main()
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Zeal/HTTPClient/HTTPParser.swift:
--------------------------------------------------------------------------------
1 | // HTTPParser.swift
2 | //
3 | // The MIT License (MIT)
4 | //
5 | // Copyright (c) 2015 Zewo
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | // SOFTWARE.
24 |
25 | import HTTP
26 | import HTTPParser
27 |
28 | struct HTTPParser: HTTPResponseParserType {
29 | func parseResponse(client: TCPStreamType, completion: (Void throws -> HTTPResponse) -> Void) {
30 | let parser = HTTPResponseParser { response in
31 | completion({ response })
32 | }
33 |
34 | client.receive { result in
35 | do {
36 | let data = try result()
37 | try parser.parse(data)
38 | } catch {
39 | completion({ throw error })
40 | }
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/Zeal/HTTPClient/TCPClient.swift:
--------------------------------------------------------------------------------
1 | // TCPClient.swift
2 | //
3 | // The MIT License (MIT)
4 | //
5 | // Copyright (c) 2015 Zewo
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | // SOFTWARE.
24 |
25 | import TCPIP
26 | import GrandCentralDispatch
27 |
28 | struct TCPClient: TCPClientType {
29 | let host: String
30 | let port: Int
31 |
32 | func connect(completion: (Void throws -> TCPStreamType) -> Void) {
33 | defaultQueue.async {
34 | do {
35 | let ip = try IP(address: self.host, port: self.port)
36 | let socket = try TCPClientSocket(ip: ip)
37 | let stream = TCPStream(socket: socket)
38 | completion({ stream })
39 | } catch {
40 | completion({ throw error })
41 | }
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Zeal/HTTPClient/HTTPSerializer.swift:
--------------------------------------------------------------------------------
1 | // HTTPSerializer.swift
2 | //
3 | // The MIT License (MIT)
4 | //
5 | // Copyright (c) 2015 Zewo
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | // SOFTWARE.
24 |
25 | import URI
26 | import HTTP
27 |
28 | struct HTTPSerializer: HTTPRequestSerializerType {
29 | func serializeRequest(client: TCPStreamType, request: HTTPRequest, completion: (Void throws -> Void) -> Void) {
30 | var string = "\(request.method) \(request.uri) HTTP/\(request.majorVersion).\(request.minorVersion)\r\n"
31 |
32 | for (name, value) in request.headers {
33 | string += "\(name): \(value)\r\n"
34 | }
35 |
36 | string += "\r\n"
37 |
38 | var data = string.utf8.map { Int8($0) }
39 | data += request.body
40 |
41 | client.send(data, completion: completion)
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/Zeal/HTTPClient/TCPStream.swift:
--------------------------------------------------------------------------------
1 | // TCPStream.swift
2 | //
3 | // The MIT License (MIT)
4 | //
5 | // Copyright (c) 2015 Zewo
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | // SOFTWARE.
24 |
25 | import TCPIP
26 | import GrandCentralDispatch
27 |
28 | final class TCPStream: TCPStreamType {
29 | let socket: TCPClientSocket
30 | let channel: IOChannel
31 |
32 | init(socket: TCPClientSocket) {
33 | self.socket = socket
34 |
35 | channel = IOChannel(type: .Stream, fileDescriptor: socket.fileDescriptor) { result in
36 | result.failure { error in
37 | print(error)
38 | }
39 | socket.close()
40 | }
41 |
42 | channel.setLowWater(1)
43 | }
44 |
45 | func receive(completion: (Void throws -> [Int8]) -> Void) {
46 | channel.read { result in
47 | result.success { done, data in
48 | completion({ data })
49 | }
50 | result.failure { error in
51 | completion({ throw error })
52 | }
53 | }
54 | }
55 |
56 | func send(data: [Int8], completion: (Void throws -> Void) -> Void) {
57 | channel.write(data: data) { result in
58 | result.success { done, _ in
59 | if done {
60 | completion({})
61 | }
62 | }
63 | result.failure { error in
64 | completion({ throw error })
65 | }
66 | }
67 | }
68 |
69 | func close() {
70 | channel.close()
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [Deprecated] Zeal
2 | ====
3 |
4 | [](https://developer.apple.com/swift/)
5 | [](https://developer.apple.com/swift/)
6 | [](https://cocoapods.org/pods/Luminescence)
7 | [](https://github.com/Carthage/Carthage)
8 | [](https://tldrlegal.com/license/mit-license)
9 | [](https://zewo-slackin.herokuapp.com)
10 |
11 | **Zeal** is a GCD based HTTP client for **Swift 2**.
12 |
13 | ## Features
14 |
15 | - [x] No `Foundation` dependency (**Linux ready**)
16 |
17 | ## Dependencies
18 |
19 | **Zeal** is made of:
20 |
21 | - [TCPIP](https://github.com/Zewo/TCPIP) - TCP/IP
22 | - [GrandCentralDispatch](https://github.com/Zewo/GrandCentralDispatch) - GCD wrapper
23 | - [URI](https://github.com/Zewo/URI) - URI
24 | - [HTTP](https://github.com/Zewo/HTTP) - HTTP request/response
25 | - [HTTPParser](https://github.com/Zewo/HTTPParser) - HTTP parser
26 |
27 | ## Usage
28 |
29 | ```swift
30 | import URI
31 | import HTTP
32 | import Zeal
33 |
34 | let client = HTTPClient(host: "www.apple.com", port: 80)
35 |
36 | client.get("/") { result in
37 | do {
38 | let response = try result()
39 | // do your thing! (:
40 | } catch {
41 | // something bad happened :(
42 | }
43 | }
44 | ```
45 |
46 | ## Installation
47 |
48 | ### CocoaPods
49 |
50 | [CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects. You can install it with the following command:
51 |
52 | ```bash
53 | $ gem install cocoapods
54 | ```
55 |
56 | > CocoaPods 0.39.0+ is required to build Zeal.
57 |
58 | To integrate **Zeal** into your Xcode project using CocoaPods, specify it in your `Podfile`:
59 |
60 | ```ruby
61 | source 'https://github.com/Zewo/Specs.git'
62 | source 'https://github.com/CocoaPods/Specs.git'
63 | use_frameworks!
64 |
65 | pod 'Zeal', '0.1'
66 | ```
67 | > Don't forget `source 'https://github.com/Zewo/Specs.git'`. This is very important. It should always come before the official CocoaPods repo.
68 |
69 | Then, run the following command:
70 |
71 | ```bash
72 | $ pod install
73 | ```
74 |
75 | ### Carthage
76 |
77 | [Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application.
78 |
79 | You can install Carthage with [Homebrew](http://brew.sh/) using the following command:
80 |
81 | ```bash
82 | $ brew update
83 | $ brew install carthage
84 | ```
85 |
86 | To integrate **Zeal** into your Xcode project using Carthage, specify it in your `Cartfile`:
87 |
88 | ```ogdl
89 | github "Zewo/Zeal" == 0.1
90 | ```
91 |
92 | ### Command Line Application
93 |
94 | To use **Zeal** in a command line application:
95 |
96 | - Install the [Swift Command Line Application](https://github.com/Zewo/Swift-Command-Line-Application-Template) Xcode template
97 | - Follow [Cocoa Pods](#cocoapods) or [Carthage](#carthage) instructions.
98 |
99 | ## Community
100 |
101 | [](https://zewo-slackin.herokuapp.com)
102 |
103 | Join us on [Slack](https://zewo-slackin.herokuapp.com).
104 |
105 | License
106 | -------
107 |
108 | **Zeal** is released under the MIT license. See LICENSE for details.
109 |
--------------------------------------------------------------------------------
/Zeal.xcodeproj/xcshareddata/xcschemes/Zeal OSX.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
34 |
40 |
41 |
42 |
43 |
44 |
50 |
51 |
52 |
53 |
54 |
55 |
65 |
66 |
72 |
73 |
74 |
75 |
76 |
77 |
83 |
84 |
90 |
91 |
92 |
93 |
95 |
96 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/Zeal.xcodeproj/xcshareddata/xcschemes/Zeal iOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
34 |
40 |
41 |
42 |
43 |
44 |
50 |
51 |
52 |
53 |
54 |
55 |
65 |
66 |
72 |
73 |
74 |
75 |
76 |
77 |
83 |
84 |
90 |
91 |
92 |
93 |
95 |
96 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/Zeal/HTTPClientType/HTTPClientType.swift:
--------------------------------------------------------------------------------
1 | // HTTPClientType.swift
2 | //
3 | // The MIT License (MIT)
4 | //
5 | // Copyright (c) 2015 Zewo
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | // SOFTWARE.
24 |
25 | import URI
26 | import HTTP
27 |
28 | public protocol HTTPClientType {
29 | var client: TCPClientType { get }
30 | var serializer: HTTPRequestSerializerType { get }
31 | var parser: HTTPResponseParserType { get }
32 | }
33 |
34 | extension HTTPClientType {
35 | public func send(request: HTTPRequest, result: (Void throws -> HTTPResponse) -> Void) {
36 | client.connect { connectResult in
37 | do {
38 | let stream = try connectResult()
39 | var headers = request.headers
40 | headers["Host"] = "\(self.client.host):\(self.client.port)"
41 | let newRequest = HTTPRequest(
42 | method: request.method,
43 | uri: request.uri,
44 | majorVersion: request.majorVersion,
45 | minorVersion: request.minorVersion,
46 | headers: headers,
47 | body: request.body
48 | )
49 | self.serializer.serializeRequest(stream, request: newRequest) { serializeResult in
50 | do {
51 | try serializeResult()
52 | } catch {
53 | result({ throw error })
54 | }
55 | }
56 | self.parser.parseResponse(stream) { parseResult in
57 | do {
58 | let response = try parseResult()
59 | result({ response })
60 | } catch {
61 | result({ throw error })
62 | }
63 | }
64 | } catch {
65 | result({ throw error })
66 | }
67 | }
68 | }
69 |
70 | public func delete(uri: String, headers: [String: String] = [:], body: [Int8] = [], result: (Void throws -> HTTPResponse) -> Void) {
71 | let request = HTTPRequest(
72 | method: .DELETE,
73 | uri: URI(string: uri),
74 | headers: headers,
75 | body: body
76 | )
77 | send(request, result: result)
78 | }
79 |
80 | public func delete(uri: String, headers: [String: String] = [:], body: String, result: (Void throws -> HTTPResponse) -> Void) {
81 | delete(uri, headers: headers, body: body.data, result: result)
82 | }
83 |
84 | public func get(uri: String, headers: [String: String] = [:], body: [Int8] = [], result: (Void throws -> HTTPResponse) -> Void) {
85 | let request = HTTPRequest(
86 | method: .GET,
87 | uri: URI(string: uri),
88 | headers: headers,
89 | body: body
90 | )
91 | send(request, result: result)
92 | }
93 |
94 | public func get(uri: String, headers: [String: String] = [:], body: String, result: (Void throws -> HTTPResponse) -> Void) {
95 | get(uri, headers: headers, body: body.data, result: result)
96 | }
97 |
98 | public func head(uri: String, headers: [String: String] = [:], body: [Int8] = [], result: (Void throws -> HTTPResponse) -> Void) {
99 | let request = HTTPRequest(
100 | method: .HEAD,
101 | uri: URI(string: uri),
102 | headers: headers,
103 | body: body
104 | )
105 | send(request, result: result)
106 | }
107 |
108 | public func head(uri: String, headers: [String: String] = [:], body: String, result: (Void throws -> HTTPResponse) -> Void) {
109 | head(uri, headers: headers, body: body.data, result: result)
110 | }
111 |
112 | public func post(uri: String, headers: [String: String] = [:], body: [Int8] = [], result: (Void throws -> HTTPResponse) -> Void) {
113 | let request = HTTPRequest(
114 | method: .POST,
115 | uri: URI(string: uri),
116 | headers: headers,
117 | body: body
118 | )
119 | send(request, result: result)
120 | }
121 |
122 | public func post(uri: String, headers: [String: String] = [:], body: String, result: (Void throws -> HTTPResponse) -> Void) {
123 | post(uri, headers: headers, body: body.data, result: result)
124 | }
125 |
126 | public func put(uri: String, headers: [String: String] = [:], body: [Int8] = [], result: (Void throws -> HTTPResponse) -> Void) {
127 | let request = HTTPRequest(
128 | method: .PUT,
129 | uri: URI(string: uri),
130 | headers: headers,
131 | body: body
132 | )
133 | send(request, result: result)
134 | }
135 |
136 | public func put(uri: String, headers: [String: String] = [:], body: String, result: (Void throws -> HTTPResponse) -> Void) {
137 | put(uri, headers: headers, body: body.data, result: result)
138 | }
139 |
140 | public func connect(uri: String, headers: [String: String] = [:], body: [Int8] = [], result: (Void throws -> HTTPResponse) -> Void) {
141 | let request = HTTPRequest(
142 | method: .CONNECT,
143 | uri: URI(string: uri),
144 | headers: headers,
145 | body: body
146 | )
147 | send(request, result: result)
148 | }
149 |
150 | public func connect(uri: String, headers: [String: String] = [:], body: String, result: (Void throws -> HTTPResponse) -> Void) {
151 | connect(uri, headers: headers, body: body.data, result: result)
152 | }
153 |
154 | public func options(uri: String, headers: [String: String] = [:], body: [Int8] = [], result: (Void throws -> HTTPResponse) -> Void) {
155 | let request = HTTPRequest(
156 | method: .OPTIONS,
157 | uri: URI(string: uri),
158 | headers: headers,
159 | body: body
160 | )
161 | send(request, result: result)
162 | }
163 |
164 | public func options(uri: String, headers: [String: String] = [:], body: String, result: (Void throws -> HTTPResponse) -> Void) {
165 | options(uri, headers: headers, body: body.data, result: result)
166 | }
167 |
168 | public func trace(uri: String, headers: [String: String] = [:], body: [Int8] = [], result: (Void throws -> HTTPResponse) -> Void) {
169 | let request = HTTPRequest(
170 | method: .TRACE,
171 | uri: URI(string: uri),
172 | headers: headers,
173 | body: body
174 | )
175 | send(request, result: result)
176 | }
177 |
178 | public func trace(uri: String, headers: [String: String] = [:], body: String, result: (Void throws -> HTTPResponse) -> Void) {
179 | trace(uri, headers: headers, body: body.data, result: result)
180 | }
181 | }
--------------------------------------------------------------------------------
/Zeal.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 3A1C55931BECE19B006EC3F7 /* Zeal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A1C55891BECE19A006EC3F7 /* Zeal.framework */; };
11 | B076BF691C0C0E5A005010DB /* ZealTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0EA68071C0BEA0100515762 /* ZealTests.swift */; };
12 | B076BF6A1C0C0E5B005010DB /* ZealTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0EA68071C0BEA0100515762 /* ZealTests.swift */; };
13 | B076BF861C0C2029005010DB /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF7A1C0C2029005010DB /* HTTPClient.swift */; };
14 | B076BF871C0C2029005010DB /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF7A1C0C2029005010DB /* HTTPClient.swift */; };
15 | B076BF881C0C2029005010DB /* HTTPParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF7B1C0C2029005010DB /* HTTPParser.swift */; };
16 | B076BF891C0C2029005010DB /* HTTPParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF7B1C0C2029005010DB /* HTTPParser.swift */; };
17 | B076BF8A1C0C2029005010DB /* HTTPSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF7C1C0C2029005010DB /* HTTPSerializer.swift */; };
18 | B076BF8B1C0C2029005010DB /* HTTPSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF7C1C0C2029005010DB /* HTTPSerializer.swift */; };
19 | B076BF8C1C0C2029005010DB /* TCPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF7D1C0C2029005010DB /* TCPClient.swift */; };
20 | B076BF8D1C0C2029005010DB /* TCPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF7D1C0C2029005010DB /* TCPClient.swift */; };
21 | B076BF8E1C0C2029005010DB /* TCPStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF7E1C0C2029005010DB /* TCPStream.swift */; };
22 | B076BF8F1C0C2029005010DB /* TCPStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF7E1C0C2029005010DB /* TCPStream.swift */; };
23 | B076BF901C0C2029005010DB /* HTTPClientType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF801C0C2029005010DB /* HTTPClientType.swift */; };
24 | B076BF911C0C2029005010DB /* HTTPClientType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF801C0C2029005010DB /* HTTPClientType.swift */; };
25 | B076BF921C0C2029005010DB /* HTTPRequestSerializerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF811C0C2029005010DB /* HTTPRequestSerializerType.swift */; };
26 | B076BF931C0C2029005010DB /* HTTPRequestSerializerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF811C0C2029005010DB /* HTTPRequestSerializerType.swift */; };
27 | B076BF941C0C2029005010DB /* HTTPResponseParserType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF821C0C2029005010DB /* HTTPResponseParserType.swift */; };
28 | B076BF951C0C2029005010DB /* HTTPResponseParserType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF821C0C2029005010DB /* HTTPResponseParserType.swift */; };
29 | B076BF981C0C2029005010DB /* TCPClientType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF841C0C2029005010DB /* TCPClientType.swift */; };
30 | B076BF991C0C2029005010DB /* TCPClientType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF841C0C2029005010DB /* TCPClientType.swift */; };
31 | B076BF9A1C0C2029005010DB /* TCPStreamType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF851C0C2029005010DB /* TCPStreamType.swift */; };
32 | B076BF9B1C0C2029005010DB /* TCPStreamType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B076BF851C0C2029005010DB /* TCPStreamType.swift */; };
33 | B0D5217B1BE4F753002063D5 /* Zeal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B0D521701BE4F753002063D5 /* Zeal.framework */; };
34 | B0EA68081C0BEEA000515762 /* Zeal.h in Headers */ = {isa = PBXBuildFile; fileRef = B0EA68041C0BEA0100515762 /* Zeal.h */; settings = {ATTRIBUTES = (Public, ); }; };
35 | B0EA68091C0BEEA900515762 /* Zeal.h in Headers */ = {isa = PBXBuildFile; fileRef = B0EA68041C0BEA0100515762 /* Zeal.h */; settings = {ATTRIBUTES = (Public, ); }; };
36 | /* End PBXBuildFile section */
37 |
38 | /* Begin PBXContainerItemProxy section */
39 | 3A1C55941BECE19B006EC3F7 /* PBXContainerItemProxy */ = {
40 | isa = PBXContainerItemProxy;
41 | containerPortal = B0D521671BE4F753002063D5 /* Project object */;
42 | proxyType = 1;
43 | remoteGlobalIDString = 3A1C55881BECE19A006EC3F7;
44 | remoteInfo = "Aeon iOS";
45 | };
46 | B0D5217C1BE4F753002063D5 /* PBXContainerItemProxy */ = {
47 | isa = PBXContainerItemProxy;
48 | containerPortal = B0D521671BE4F753002063D5 /* Project object */;
49 | proxyType = 1;
50 | remoteGlobalIDString = B0D5216F1BE4F753002063D5;
51 | remoteInfo = Aeon;
52 | };
53 | B0EA67A71C0BE17F00515762 /* PBXContainerItemProxy */ = {
54 | isa = PBXContainerItemProxy;
55 | containerPortal = B0EA67A01C0BE17F00515762 /* TCPIP.xcodeproj */;
56 | proxyType = 2;
57 | remoteGlobalIDString = B005109B1BE97B7B001B3F26;
58 | remoteInfo = "TCPIP OSX";
59 | };
60 | B0EA67A91C0BE17F00515762 /* PBXContainerItemProxy */ = {
61 | isa = PBXContainerItemProxy;
62 | containerPortal = B0EA67A01C0BE17F00515762 /* TCPIP.xcodeproj */;
63 | proxyType = 2;
64 | remoteGlobalIDString = B00510EA1BE9952D001B3F26;
65 | remoteInfo = "TCPIP iOS";
66 | };
67 | B0EA67AB1C0BE17F00515762 /* PBXContainerItemProxy */ = {
68 | isa = PBXContainerItemProxy;
69 | containerPortal = B0EA67A01C0BE17F00515762 /* TCPIP.xcodeproj */;
70 | proxyType = 2;
71 | remoteGlobalIDString = B00510A51BE97B7B001B3F26;
72 | remoteInfo = "TCPIP OSX Tests";
73 | };
74 | B0EA67AD1C0BE17F00515762 /* PBXContainerItemProxy */ = {
75 | isa = PBXContainerItemProxy;
76 | containerPortal = B0EA67A01C0BE17F00515762 /* TCPIP.xcodeproj */;
77 | proxyType = 2;
78 | remoteGlobalIDString = B00510F31BE9952D001B3F26;
79 | remoteInfo = "TCPIP iOS Tests";
80 | };
81 | B0EA67B61C0BE18400515762 /* PBXContainerItemProxy */ = {
82 | isa = PBXContainerItemProxy;
83 | containerPortal = B0EA67AF1C0BE18400515762 /* GrandCentralDispatch.xcodeproj */;
84 | proxyType = 2;
85 | remoteGlobalIDString = B005109B1BE97B7B001B3F26;
86 | remoteInfo = "GrandCentralDispatch OSX";
87 | };
88 | B0EA67B81C0BE18400515762 /* PBXContainerItemProxy */ = {
89 | isa = PBXContainerItemProxy;
90 | containerPortal = B0EA67AF1C0BE18400515762 /* GrandCentralDispatch.xcodeproj */;
91 | proxyType = 2;
92 | remoteGlobalIDString = B00510EA1BE9952D001B3F26;
93 | remoteInfo = "GrandCentralDispatch iOS";
94 | };
95 | B0EA67BA1C0BE18400515762 /* PBXContainerItemProxy */ = {
96 | isa = PBXContainerItemProxy;
97 | containerPortal = B0EA67AF1C0BE18400515762 /* GrandCentralDispatch.xcodeproj */;
98 | proxyType = 2;
99 | remoteGlobalIDString = B00510A51BE97B7B001B3F26;
100 | remoteInfo = "GrandCentralDispatch OSX Tests";
101 | };
102 | B0EA67BC1C0BE18400515762 /* PBXContainerItemProxy */ = {
103 | isa = PBXContainerItemProxy;
104 | containerPortal = B0EA67AF1C0BE18400515762 /* GrandCentralDispatch.xcodeproj */;
105 | proxyType = 2;
106 | remoteGlobalIDString = B00510F31BE9952D001B3F26;
107 | remoteInfo = "GrandCentralDispatch iOS Tests";
108 | };
109 | B0EA67C61C0BE18F00515762 /* PBXContainerItemProxy */ = {
110 | isa = PBXContainerItemProxy;
111 | containerPortal = B0EA67BE1C0BE18E00515762 /* HTTPParser.xcodeproj */;
112 | proxyType = 2;
113 | remoteGlobalIDString = B0B94B471BD0C40100D297F3;
114 | remoteInfo = "HTTPParser OSX";
115 | };
116 | B0EA67C81C0BE18F00515762 /* PBXContainerItemProxy */ = {
117 | isa = PBXContainerItemProxy;
118 | containerPortal = B0EA67BE1C0BE18E00515762 /* HTTPParser.xcodeproj */;
119 | proxyType = 2;
120 | remoteGlobalIDString = B0B94B111BD099AD00D297F3;
121 | remoteInfo = "HTTPParser iOS";
122 | };
123 | B0EA67CA1C0BE18F00515762 /* PBXContainerItemProxy */ = {
124 | isa = PBXContainerItemProxy;
125 | containerPortal = B0EA67BE1C0BE18E00515762 /* HTTPParser.xcodeproj */;
126 | proxyType = 2;
127 | remoteGlobalIDString = B0B94B501BD0C40100D297F3;
128 | remoteInfo = "HTTPParser OSX Tests";
129 | };
130 | B0EA67CC1C0BE18F00515762 /* PBXContainerItemProxy */ = {
131 | isa = PBXContainerItemProxy;
132 | containerPortal = B0EA67BE1C0BE18E00515762 /* HTTPParser.xcodeproj */;
133 | proxyType = 2;
134 | remoteGlobalIDString = B0B94B1B1BD099AE00D297F3;
135 | remoteInfo = "HTTPParser iOS Tests";
136 | };
137 | B0EA67D41C0BE1AE00515762 /* PBXContainerItemProxy */ = {
138 | isa = PBXContainerItemProxy;
139 | containerPortal = B0EA67A01C0BE17F00515762 /* TCPIP.xcodeproj */;
140 | proxyType = 1;
141 | remoteGlobalIDString = B00510E91BE9952D001B3F26;
142 | remoteInfo = "TCPIP iOS";
143 | };
144 | B0EA67D61C0BE1AE00515762 /* PBXContainerItemProxy */ = {
145 | isa = PBXContainerItemProxy;
146 | containerPortal = B0EA67AF1C0BE18400515762 /* GrandCentralDispatch.xcodeproj */;
147 | proxyType = 1;
148 | remoteGlobalIDString = B00510E91BE9952D001B3F26;
149 | remoteInfo = "GrandCentralDispatch iOS";
150 | };
151 | B0EA67D81C0BE1AE00515762 /* PBXContainerItemProxy */ = {
152 | isa = PBXContainerItemProxy;
153 | containerPortal = B0EA67BE1C0BE18E00515762 /* HTTPParser.xcodeproj */;
154 | proxyType = 1;
155 | remoteGlobalIDString = B0B94B101BD099AD00D297F3;
156 | remoteInfo = "HTTPParser iOS";
157 | };
158 | B0EA67DA1C0BE1B500515762 /* PBXContainerItemProxy */ = {
159 | isa = PBXContainerItemProxy;
160 | containerPortal = B0EA67A01C0BE17F00515762 /* TCPIP.xcodeproj */;
161 | proxyType = 1;
162 | remoteGlobalIDString = B005109A1BE97B7B001B3F26;
163 | remoteInfo = "TCPIP OSX";
164 | };
165 | B0EA67DC1C0BE1B500515762 /* PBXContainerItemProxy */ = {
166 | isa = PBXContainerItemProxy;
167 | containerPortal = B0EA67AF1C0BE18400515762 /* GrandCentralDispatch.xcodeproj */;
168 | proxyType = 1;
169 | remoteGlobalIDString = B005109A1BE97B7B001B3F26;
170 | remoteInfo = "GrandCentralDispatch OSX";
171 | };
172 | B0EA67DE1C0BE1B500515762 /* PBXContainerItemProxy */ = {
173 | isa = PBXContainerItemProxy;
174 | containerPortal = B0EA67BE1C0BE18E00515762 /* HTTPParser.xcodeproj */;
175 | proxyType = 1;
176 | remoteGlobalIDString = B0B94B461BD0C40100D297F3;
177 | remoteInfo = "HTTPParser OSX";
178 | };
179 | /* End PBXContainerItemProxy section */
180 |
181 | /* Begin PBXFileReference section */
182 | 3A1C55891BECE19A006EC3F7 /* Zeal.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Zeal.framework; sourceTree = BUILT_PRODUCTS_DIR; };
183 | 3A1C55921BECE19A006EC3F7 /* ZealTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ZealTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
184 | B076BF7A1C0C2029005010DB /* HTTPClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPClient.swift; sourceTree = ""; };
185 | B076BF7B1C0C2029005010DB /* HTTPParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPParser.swift; sourceTree = ""; };
186 | B076BF7C1C0C2029005010DB /* HTTPSerializer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPSerializer.swift; sourceTree = ""; };
187 | B076BF7D1C0C2029005010DB /* TCPClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TCPClient.swift; sourceTree = ""; };
188 | B076BF7E1C0C2029005010DB /* TCPStream.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TCPStream.swift; sourceTree = ""; };
189 | B076BF801C0C2029005010DB /* HTTPClientType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPClientType.swift; sourceTree = ""; };
190 | B076BF811C0C2029005010DB /* HTTPRequestSerializerType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPRequestSerializerType.swift; sourceTree = ""; };
191 | B076BF821C0C2029005010DB /* HTTPResponseParserType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPResponseParserType.swift; sourceTree = ""; };
192 | B076BF841C0C2029005010DB /* TCPClientType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TCPClientType.swift; sourceTree = ""; };
193 | B076BF851C0C2029005010DB /* TCPStreamType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TCPStreamType.swift; sourceTree = ""; };
194 | B0D521701BE4F753002063D5 /* Zeal.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Zeal.framework; sourceTree = BUILT_PRODUCTS_DIR; };
195 | B0D5217A1BE4F753002063D5 /* ZealTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ZealTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
196 | B0EA67A01C0BE17F00515762 /* TCPIP.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = TCPIP.xcodeproj; path = TCPIP/TCPIP.xcodeproj; sourceTree = ""; };
197 | B0EA67AF1C0BE18400515762 /* GrandCentralDispatch.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = GrandCentralDispatch.xcodeproj; path = GrandCentralDispatch/GrandCentralDispatch.xcodeproj; sourceTree = ""; };
198 | B0EA67BE1C0BE18E00515762 /* HTTPParser.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = HTTPParser.xcodeproj; path = HTTPParser/HTTPParser.xcodeproj; sourceTree = ""; };
199 | B0EA68031C0BEA0100515762 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
200 | B0EA68041C0BEA0100515762 /* Zeal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Zeal.h; sourceTree = ""; };
201 | B0EA68061C0BEA0100515762 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
202 | B0EA68071C0BEA0100515762 /* ZealTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZealTests.swift; sourceTree = ""; };
203 | /* End PBXFileReference section */
204 |
205 | /* Begin PBXFrameworksBuildPhase section */
206 | 3A1C55851BECE19A006EC3F7 /* Frameworks */ = {
207 | isa = PBXFrameworksBuildPhase;
208 | buildActionMask = 2147483647;
209 | files = (
210 | );
211 | runOnlyForDeploymentPostprocessing = 0;
212 | };
213 | 3A1C558F1BECE19A006EC3F7 /* Frameworks */ = {
214 | isa = PBXFrameworksBuildPhase;
215 | buildActionMask = 2147483647;
216 | files = (
217 | 3A1C55931BECE19B006EC3F7 /* Zeal.framework in Frameworks */,
218 | );
219 | runOnlyForDeploymentPostprocessing = 0;
220 | };
221 | B0D5216C1BE4F753002063D5 /* Frameworks */ = {
222 | isa = PBXFrameworksBuildPhase;
223 | buildActionMask = 2147483647;
224 | files = (
225 | );
226 | runOnlyForDeploymentPostprocessing = 0;
227 | };
228 | B0D521771BE4F753002063D5 /* Frameworks */ = {
229 | isa = PBXFrameworksBuildPhase;
230 | buildActionMask = 2147483647;
231 | files = (
232 | B0D5217B1BE4F753002063D5 /* Zeal.framework in Frameworks */,
233 | );
234 | runOnlyForDeploymentPostprocessing = 0;
235 | };
236 | /* End PBXFrameworksBuildPhase section */
237 |
238 | /* Begin PBXGroup section */
239 | B076BF791C0C2029005010DB /* HTTPClient */ = {
240 | isa = PBXGroup;
241 | children = (
242 | B076BF7A1C0C2029005010DB /* HTTPClient.swift */,
243 | B076BF7B1C0C2029005010DB /* HTTPParser.swift */,
244 | B076BF7C1C0C2029005010DB /* HTTPSerializer.swift */,
245 | B076BF7D1C0C2029005010DB /* TCPClient.swift */,
246 | B076BF7E1C0C2029005010DB /* TCPStream.swift */,
247 | );
248 | path = HTTPClient;
249 | sourceTree = "";
250 | };
251 | B076BF7F1C0C2029005010DB /* HTTPClientType */ = {
252 | isa = PBXGroup;
253 | children = (
254 | B076BF801C0C2029005010DB /* HTTPClientType.swift */,
255 | B076BF811C0C2029005010DB /* HTTPRequestSerializerType.swift */,
256 | B076BF821C0C2029005010DB /* HTTPResponseParserType.swift */,
257 | B076BF841C0C2029005010DB /* TCPClientType.swift */,
258 | B076BF851C0C2029005010DB /* TCPStreamType.swift */,
259 | );
260 | path = HTTPClientType;
261 | sourceTree = "";
262 | };
263 | B0D521661BE4F753002063D5 = {
264 | isa = PBXGroup;
265 | children = (
266 | B0EA67A01C0BE17F00515762 /* TCPIP.xcodeproj */,
267 | B0EA67AF1C0BE18400515762 /* GrandCentralDispatch.xcodeproj */,
268 | B0EA67BE1C0BE18E00515762 /* HTTPParser.xcodeproj */,
269 | B0EA67F51C0BEA0100515762 /* Zeal */,
270 | B0EA68051C0BEA0100515762 /* Zeal Tests */,
271 | B0D521711BE4F753002063D5 /* Products */,
272 | );
273 | sourceTree = "";
274 | };
275 | B0D521711BE4F753002063D5 /* Products */ = {
276 | isa = PBXGroup;
277 | children = (
278 | B0D521701BE4F753002063D5 /* Zeal.framework */,
279 | B0D5217A1BE4F753002063D5 /* ZealTests.xctest */,
280 | 3A1C55891BECE19A006EC3F7 /* Zeal.framework */,
281 | 3A1C55921BECE19A006EC3F7 /* ZealTests.xctest */,
282 | );
283 | name = Products;
284 | sourceTree = "";
285 | };
286 | B0EA67A11C0BE17F00515762 /* Products */ = {
287 | isa = PBXGroup;
288 | children = (
289 | B0EA67A81C0BE17F00515762 /* TCPIP.framework */,
290 | B0EA67AA1C0BE17F00515762 /* TCPIP.framework */,
291 | B0EA67AC1C0BE17F00515762 /* TCPIP.xctest */,
292 | B0EA67AE1C0BE17F00515762 /* TCPIP.xctest */,
293 | );
294 | name = Products;
295 | sourceTree = "";
296 | };
297 | B0EA67B01C0BE18400515762 /* Products */ = {
298 | isa = PBXGroup;
299 | children = (
300 | B0EA67B71C0BE18400515762 /* GrandCentralDispatch.framework */,
301 | B0EA67B91C0BE18400515762 /* GrandCentralDispatch.framework */,
302 | B0EA67BB1C0BE18400515762 /* GrandCentralDispatchTests.xctest */,
303 | B0EA67BD1C0BE18400515762 /* GrandCentralDispatchTests.xctest */,
304 | );
305 | name = Products;
306 | sourceTree = "";
307 | };
308 | B0EA67BF1C0BE18E00515762 /* Products */ = {
309 | isa = PBXGroup;
310 | children = (
311 | B0EA67C71C0BE18F00515762 /* HTTPParser.framework */,
312 | B0EA67C91C0BE18F00515762 /* HTTPParser.framework */,
313 | B0EA67CB1C0BE18F00515762 /* LuminescenceTests.xctest */,
314 | B0EA67CD1C0BE18F00515762 /* LuminescenceTests.xctest */,
315 | );
316 | name = Products;
317 | sourceTree = "";
318 | };
319 | B0EA67F51C0BEA0100515762 /* Zeal */ = {
320 | isa = PBXGroup;
321 | children = (
322 | B076BF791C0C2029005010DB /* HTTPClient */,
323 | B076BF7F1C0C2029005010DB /* HTTPClientType */,
324 | B0EA68031C0BEA0100515762 /* Info.plist */,
325 | B0EA68041C0BEA0100515762 /* Zeal.h */,
326 | );
327 | path = Zeal;
328 | sourceTree = "";
329 | };
330 | B0EA68051C0BEA0100515762 /* Zeal Tests */ = {
331 | isa = PBXGroup;
332 | children = (
333 | B0EA68061C0BEA0100515762 /* Info.plist */,
334 | B0EA68071C0BEA0100515762 /* ZealTests.swift */,
335 | );
336 | path = "Zeal Tests";
337 | sourceTree = "";
338 | };
339 | /* End PBXGroup section */
340 |
341 | /* Begin PBXHeadersBuildPhase section */
342 | 3A1C55861BECE19A006EC3F7 /* Headers */ = {
343 | isa = PBXHeadersBuildPhase;
344 | buildActionMask = 2147483647;
345 | files = (
346 | B0EA68081C0BEEA000515762 /* Zeal.h in Headers */,
347 | );
348 | runOnlyForDeploymentPostprocessing = 0;
349 | };
350 | B0D5216D1BE4F753002063D5 /* Headers */ = {
351 | isa = PBXHeadersBuildPhase;
352 | buildActionMask = 2147483647;
353 | files = (
354 | B0EA68091C0BEEA900515762 /* Zeal.h in Headers */,
355 | );
356 | runOnlyForDeploymentPostprocessing = 0;
357 | };
358 | /* End PBXHeadersBuildPhase section */
359 |
360 | /* Begin PBXNativeTarget section */
361 | 3A1C55881BECE19A006EC3F7 /* Zeal iOS */ = {
362 | isa = PBXNativeTarget;
363 | buildConfigurationList = 3A1C559A1BECE19B006EC3F7 /* Build configuration list for PBXNativeTarget "Zeal iOS" */;
364 | buildPhases = (
365 | 3A1C55841BECE19A006EC3F7 /* Sources */,
366 | 3A1C55851BECE19A006EC3F7 /* Frameworks */,
367 | 3A1C55861BECE19A006EC3F7 /* Headers */,
368 | 3A1C55871BECE19A006EC3F7 /* Resources */,
369 | );
370 | buildRules = (
371 | );
372 | dependencies = (
373 | B0EA67D51C0BE1AE00515762 /* PBXTargetDependency */,
374 | B0EA67D71C0BE1AE00515762 /* PBXTargetDependency */,
375 | B0EA67D91C0BE1AE00515762 /* PBXTargetDependency */,
376 | );
377 | name = "Zeal iOS";
378 | productName = "Aeon iOS";
379 | productReference = 3A1C55891BECE19A006EC3F7 /* Zeal.framework */;
380 | productType = "com.apple.product-type.framework";
381 | };
382 | 3A1C55911BECE19A006EC3F7 /* Zeal iOS Tests */ = {
383 | isa = PBXNativeTarget;
384 | buildConfigurationList = 3A1C559D1BECE19B006EC3F7 /* Build configuration list for PBXNativeTarget "Zeal iOS Tests" */;
385 | buildPhases = (
386 | 3A1C558E1BECE19A006EC3F7 /* Sources */,
387 | 3A1C558F1BECE19A006EC3F7 /* Frameworks */,
388 | 3A1C55901BECE19A006EC3F7 /* Resources */,
389 | );
390 | buildRules = (
391 | );
392 | dependencies = (
393 | 3A1C55951BECE19B006EC3F7 /* PBXTargetDependency */,
394 | );
395 | name = "Zeal iOS Tests";
396 | productName = "Aeon iOSTests";
397 | productReference = 3A1C55921BECE19A006EC3F7 /* ZealTests.xctest */;
398 | productType = "com.apple.product-type.bundle.unit-test";
399 | };
400 | B0D5216F1BE4F753002063D5 /* Zeal OSX */ = {
401 | isa = PBXNativeTarget;
402 | buildConfigurationList = B0D521841BE4F753002063D5 /* Build configuration list for PBXNativeTarget "Zeal OSX" */;
403 | buildPhases = (
404 | B0D5216B1BE4F753002063D5 /* Sources */,
405 | B0D5216C1BE4F753002063D5 /* Frameworks */,
406 | B0D5216D1BE4F753002063D5 /* Headers */,
407 | B0D5216E1BE4F753002063D5 /* Resources */,
408 | );
409 | buildRules = (
410 | );
411 | dependencies = (
412 | B0EA67DB1C0BE1B500515762 /* PBXTargetDependency */,
413 | B0EA67DD1C0BE1B500515762 /* PBXTargetDependency */,
414 | B0EA67DF1C0BE1B500515762 /* PBXTargetDependency */,
415 | );
416 | name = "Zeal OSX";
417 | productName = Aeon;
418 | productReference = B0D521701BE4F753002063D5 /* Zeal.framework */;
419 | productType = "com.apple.product-type.framework";
420 | };
421 | B0D521791BE4F753002063D5 /* Zeal OSX Tests */ = {
422 | isa = PBXNativeTarget;
423 | buildConfigurationList = B0D521871BE4F753002063D5 /* Build configuration list for PBXNativeTarget "Zeal OSX Tests" */;
424 | buildPhases = (
425 | B0D521761BE4F753002063D5 /* Sources */,
426 | B0D521771BE4F753002063D5 /* Frameworks */,
427 | B0D521781BE4F753002063D5 /* Resources */,
428 | );
429 | buildRules = (
430 | );
431 | dependencies = (
432 | B0D5217D1BE4F753002063D5 /* PBXTargetDependency */,
433 | );
434 | name = "Zeal OSX Tests";
435 | productName = AeonTests;
436 | productReference = B0D5217A1BE4F753002063D5 /* ZealTests.xctest */;
437 | productType = "com.apple.product-type.bundle.unit-test";
438 | };
439 | /* End PBXNativeTarget section */
440 |
441 | /* Begin PBXProject section */
442 | B0D521671BE4F753002063D5 /* Project object */ = {
443 | isa = PBXProject;
444 | attributes = {
445 | LastSwiftUpdateCheck = 0710;
446 | LastUpgradeCheck = 0710;
447 | ORGANIZATIONNAME = Zewo;
448 | TargetAttributes = {
449 | 3A1C55881BECE19A006EC3F7 = {
450 | CreatedOnToolsVersion = 7.1;
451 | };
452 | 3A1C55911BECE19A006EC3F7 = {
453 | CreatedOnToolsVersion = 7.1;
454 | };
455 | B0D5216F1BE4F753002063D5 = {
456 | CreatedOnToolsVersion = 7.1;
457 | };
458 | B0D521791BE4F753002063D5 = {
459 | CreatedOnToolsVersion = 7.1;
460 | };
461 | };
462 | };
463 | buildConfigurationList = B0D5216A1BE4F753002063D5 /* Build configuration list for PBXProject "Zeal" */;
464 | compatibilityVersion = "Xcode 3.2";
465 | developmentRegion = English;
466 | hasScannedForEncodings = 0;
467 | knownRegions = (
468 | en,
469 | );
470 | mainGroup = B0D521661BE4F753002063D5;
471 | productRefGroup = B0D521711BE4F753002063D5 /* Products */;
472 | projectDirPath = "";
473 | projectReferences = (
474 | {
475 | ProductGroup = B0EA67B01C0BE18400515762 /* Products */;
476 | ProjectRef = B0EA67AF1C0BE18400515762 /* GrandCentralDispatch.xcodeproj */;
477 | },
478 | {
479 | ProductGroup = B0EA67BF1C0BE18E00515762 /* Products */;
480 | ProjectRef = B0EA67BE1C0BE18E00515762 /* HTTPParser.xcodeproj */;
481 | },
482 | {
483 | ProductGroup = B0EA67A11C0BE17F00515762 /* Products */;
484 | ProjectRef = B0EA67A01C0BE17F00515762 /* TCPIP.xcodeproj */;
485 | },
486 | );
487 | projectRoot = "";
488 | targets = (
489 | B0D5216F1BE4F753002063D5 /* Zeal OSX */,
490 | 3A1C55881BECE19A006EC3F7 /* Zeal iOS */,
491 | B0D521791BE4F753002063D5 /* Zeal OSX Tests */,
492 | 3A1C55911BECE19A006EC3F7 /* Zeal iOS Tests */,
493 | );
494 | };
495 | /* End PBXProject section */
496 |
497 | /* Begin PBXReferenceProxy section */
498 | B0EA67A81C0BE17F00515762 /* TCPIP.framework */ = {
499 | isa = PBXReferenceProxy;
500 | fileType = wrapper.framework;
501 | path = TCPIP.framework;
502 | remoteRef = B0EA67A71C0BE17F00515762 /* PBXContainerItemProxy */;
503 | sourceTree = BUILT_PRODUCTS_DIR;
504 | };
505 | B0EA67AA1C0BE17F00515762 /* TCPIP.framework */ = {
506 | isa = PBXReferenceProxy;
507 | fileType = wrapper.framework;
508 | path = TCPIP.framework;
509 | remoteRef = B0EA67A91C0BE17F00515762 /* PBXContainerItemProxy */;
510 | sourceTree = BUILT_PRODUCTS_DIR;
511 | };
512 | B0EA67AC1C0BE17F00515762 /* TCPIP.xctest */ = {
513 | isa = PBXReferenceProxy;
514 | fileType = wrapper.cfbundle;
515 | name = TCPIP.xctest;
516 | path = TCPIPTests.xctest;
517 | remoteRef = B0EA67AB1C0BE17F00515762 /* PBXContainerItemProxy */;
518 | sourceTree = BUILT_PRODUCTS_DIR;
519 | };
520 | B0EA67AE1C0BE17F00515762 /* TCPIP.xctest */ = {
521 | isa = PBXReferenceProxy;
522 | fileType = wrapper.cfbundle;
523 | name = TCPIP.xctest;
524 | path = TCPIPTests.xctest;
525 | remoteRef = B0EA67AD1C0BE17F00515762 /* PBXContainerItemProxy */;
526 | sourceTree = BUILT_PRODUCTS_DIR;
527 | };
528 | B0EA67B71C0BE18400515762 /* GrandCentralDispatch.framework */ = {
529 | isa = PBXReferenceProxy;
530 | fileType = wrapper.framework;
531 | path = GrandCentralDispatch.framework;
532 | remoteRef = B0EA67B61C0BE18400515762 /* PBXContainerItemProxy */;
533 | sourceTree = BUILT_PRODUCTS_DIR;
534 | };
535 | B0EA67B91C0BE18400515762 /* GrandCentralDispatch.framework */ = {
536 | isa = PBXReferenceProxy;
537 | fileType = wrapper.framework;
538 | path = GrandCentralDispatch.framework;
539 | remoteRef = B0EA67B81C0BE18400515762 /* PBXContainerItemProxy */;
540 | sourceTree = BUILT_PRODUCTS_DIR;
541 | };
542 | B0EA67BB1C0BE18400515762 /* GrandCentralDispatchTests.xctest */ = {
543 | isa = PBXReferenceProxy;
544 | fileType = wrapper.cfbundle;
545 | path = GrandCentralDispatchTests.xctest;
546 | remoteRef = B0EA67BA1C0BE18400515762 /* PBXContainerItemProxy */;
547 | sourceTree = BUILT_PRODUCTS_DIR;
548 | };
549 | B0EA67BD1C0BE18400515762 /* GrandCentralDispatchTests.xctest */ = {
550 | isa = PBXReferenceProxy;
551 | fileType = wrapper.cfbundle;
552 | path = GrandCentralDispatchTests.xctest;
553 | remoteRef = B0EA67BC1C0BE18400515762 /* PBXContainerItemProxy */;
554 | sourceTree = BUILT_PRODUCTS_DIR;
555 | };
556 | B0EA67C71C0BE18F00515762 /* HTTPParser.framework */ = {
557 | isa = PBXReferenceProxy;
558 | fileType = wrapper.framework;
559 | path = HTTPParser.framework;
560 | remoteRef = B0EA67C61C0BE18F00515762 /* PBXContainerItemProxy */;
561 | sourceTree = BUILT_PRODUCTS_DIR;
562 | };
563 | B0EA67C91C0BE18F00515762 /* HTTPParser.framework */ = {
564 | isa = PBXReferenceProxy;
565 | fileType = wrapper.framework;
566 | path = HTTPParser.framework;
567 | remoteRef = B0EA67C81C0BE18F00515762 /* PBXContainerItemProxy */;
568 | sourceTree = BUILT_PRODUCTS_DIR;
569 | };
570 | B0EA67CB1C0BE18F00515762 /* LuminescenceTests.xctest */ = {
571 | isa = PBXReferenceProxy;
572 | fileType = wrapper.cfbundle;
573 | name = LuminescenceTests.xctest;
574 | path = HTTPParserTests.xctest;
575 | remoteRef = B0EA67CA1C0BE18F00515762 /* PBXContainerItemProxy */;
576 | sourceTree = BUILT_PRODUCTS_DIR;
577 | };
578 | B0EA67CD1C0BE18F00515762 /* LuminescenceTests.xctest */ = {
579 | isa = PBXReferenceProxy;
580 | fileType = wrapper.cfbundle;
581 | name = LuminescenceTests.xctest;
582 | path = HTTPParserTests.xctest;
583 | remoteRef = B0EA67CC1C0BE18F00515762 /* PBXContainerItemProxy */;
584 | sourceTree = BUILT_PRODUCTS_DIR;
585 | };
586 | /* End PBXReferenceProxy section */
587 |
588 | /* Begin PBXResourcesBuildPhase section */
589 | 3A1C55871BECE19A006EC3F7 /* Resources */ = {
590 | isa = PBXResourcesBuildPhase;
591 | buildActionMask = 2147483647;
592 | files = (
593 | );
594 | runOnlyForDeploymentPostprocessing = 0;
595 | };
596 | 3A1C55901BECE19A006EC3F7 /* Resources */ = {
597 | isa = PBXResourcesBuildPhase;
598 | buildActionMask = 2147483647;
599 | files = (
600 | );
601 | runOnlyForDeploymentPostprocessing = 0;
602 | };
603 | B0D5216E1BE4F753002063D5 /* Resources */ = {
604 | isa = PBXResourcesBuildPhase;
605 | buildActionMask = 2147483647;
606 | files = (
607 | );
608 | runOnlyForDeploymentPostprocessing = 0;
609 | };
610 | B0D521781BE4F753002063D5 /* Resources */ = {
611 | isa = PBXResourcesBuildPhase;
612 | buildActionMask = 2147483647;
613 | files = (
614 | );
615 | runOnlyForDeploymentPostprocessing = 0;
616 | };
617 | /* End PBXResourcesBuildPhase section */
618 |
619 | /* Begin PBXSourcesBuildPhase section */
620 | 3A1C55841BECE19A006EC3F7 /* Sources */ = {
621 | isa = PBXSourcesBuildPhase;
622 | buildActionMask = 2147483647;
623 | files = (
624 | B076BF8D1C0C2029005010DB /* TCPClient.swift in Sources */,
625 | B076BF931C0C2029005010DB /* HTTPRequestSerializerType.swift in Sources */,
626 | B076BF8B1C0C2029005010DB /* HTTPSerializer.swift in Sources */,
627 | B076BF911C0C2029005010DB /* HTTPClientType.swift in Sources */,
628 | B076BF891C0C2029005010DB /* HTTPParser.swift in Sources */,
629 | B076BF991C0C2029005010DB /* TCPClientType.swift in Sources */,
630 | B076BF9B1C0C2029005010DB /* TCPStreamType.swift in Sources */,
631 | B076BF951C0C2029005010DB /* HTTPResponseParserType.swift in Sources */,
632 | B076BF871C0C2029005010DB /* HTTPClient.swift in Sources */,
633 | B076BF8F1C0C2029005010DB /* TCPStream.swift in Sources */,
634 | );
635 | runOnlyForDeploymentPostprocessing = 0;
636 | };
637 | 3A1C558E1BECE19A006EC3F7 /* Sources */ = {
638 | isa = PBXSourcesBuildPhase;
639 | buildActionMask = 2147483647;
640 | files = (
641 | B076BF6A1C0C0E5B005010DB /* ZealTests.swift in Sources */,
642 | );
643 | runOnlyForDeploymentPostprocessing = 0;
644 | };
645 | B0D5216B1BE4F753002063D5 /* Sources */ = {
646 | isa = PBXSourcesBuildPhase;
647 | buildActionMask = 2147483647;
648 | files = (
649 | B076BF8C1C0C2029005010DB /* TCPClient.swift in Sources */,
650 | B076BF921C0C2029005010DB /* HTTPRequestSerializerType.swift in Sources */,
651 | B076BF8A1C0C2029005010DB /* HTTPSerializer.swift in Sources */,
652 | B076BF901C0C2029005010DB /* HTTPClientType.swift in Sources */,
653 | B076BF881C0C2029005010DB /* HTTPParser.swift in Sources */,
654 | B076BF981C0C2029005010DB /* TCPClientType.swift in Sources */,
655 | B076BF9A1C0C2029005010DB /* TCPStreamType.swift in Sources */,
656 | B076BF941C0C2029005010DB /* HTTPResponseParserType.swift in Sources */,
657 | B076BF861C0C2029005010DB /* HTTPClient.swift in Sources */,
658 | B076BF8E1C0C2029005010DB /* TCPStream.swift in Sources */,
659 | );
660 | runOnlyForDeploymentPostprocessing = 0;
661 | };
662 | B0D521761BE4F753002063D5 /* Sources */ = {
663 | isa = PBXSourcesBuildPhase;
664 | buildActionMask = 2147483647;
665 | files = (
666 | B076BF691C0C0E5A005010DB /* ZealTests.swift in Sources */,
667 | );
668 | runOnlyForDeploymentPostprocessing = 0;
669 | };
670 | /* End PBXSourcesBuildPhase section */
671 |
672 | /* Begin PBXTargetDependency section */
673 | 3A1C55951BECE19B006EC3F7 /* PBXTargetDependency */ = {
674 | isa = PBXTargetDependency;
675 | target = 3A1C55881BECE19A006EC3F7 /* Zeal iOS */;
676 | targetProxy = 3A1C55941BECE19B006EC3F7 /* PBXContainerItemProxy */;
677 | };
678 | B0D5217D1BE4F753002063D5 /* PBXTargetDependency */ = {
679 | isa = PBXTargetDependency;
680 | target = B0D5216F1BE4F753002063D5 /* Zeal OSX */;
681 | targetProxy = B0D5217C1BE4F753002063D5 /* PBXContainerItemProxy */;
682 | };
683 | B0EA67D51C0BE1AE00515762 /* PBXTargetDependency */ = {
684 | isa = PBXTargetDependency;
685 | name = "TCPIP iOS";
686 | targetProxy = B0EA67D41C0BE1AE00515762 /* PBXContainerItemProxy */;
687 | };
688 | B0EA67D71C0BE1AE00515762 /* PBXTargetDependency */ = {
689 | isa = PBXTargetDependency;
690 | name = "GrandCentralDispatch iOS";
691 | targetProxy = B0EA67D61C0BE1AE00515762 /* PBXContainerItemProxy */;
692 | };
693 | B0EA67D91C0BE1AE00515762 /* PBXTargetDependency */ = {
694 | isa = PBXTargetDependency;
695 | name = "HTTPParser iOS";
696 | targetProxy = B0EA67D81C0BE1AE00515762 /* PBXContainerItemProxy */;
697 | };
698 | B0EA67DB1C0BE1B500515762 /* PBXTargetDependency */ = {
699 | isa = PBXTargetDependency;
700 | name = "TCPIP OSX";
701 | targetProxy = B0EA67DA1C0BE1B500515762 /* PBXContainerItemProxy */;
702 | };
703 | B0EA67DD1C0BE1B500515762 /* PBXTargetDependency */ = {
704 | isa = PBXTargetDependency;
705 | name = "GrandCentralDispatch OSX";
706 | targetProxy = B0EA67DC1C0BE1B500515762 /* PBXContainerItemProxy */;
707 | };
708 | B0EA67DF1C0BE1B500515762 /* PBXTargetDependency */ = {
709 | isa = PBXTargetDependency;
710 | name = "HTTPParser OSX";
711 | targetProxy = B0EA67DE1C0BE1B500515762 /* PBXContainerItemProxy */;
712 | };
713 | /* End PBXTargetDependency section */
714 |
715 | /* Begin XCBuildConfiguration section */
716 | 3A1C559B1BECE19B006EC3F7 /* Debug */ = {
717 | isa = XCBuildConfiguration;
718 | buildSettings = {
719 | CODE_SIGN_IDENTITY = "iPhone Developer";
720 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
721 | DEFINES_MODULE = YES;
722 | DYLIB_COMPATIBILITY_VERSION = 1;
723 | DYLIB_CURRENT_VERSION = 1;
724 | DYLIB_INSTALL_NAME_BASE = "@rpath";
725 | INFOPLIST_FILE = Zeal/Info.plist;
726 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
727 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
728 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
729 | PRODUCT_BUNDLE_IDENTIFIER = com.zewo.Zeal;
730 | PRODUCT_NAME = Zeal;
731 | SDKROOT = iphoneos;
732 | SKIP_INSTALL = YES;
733 | TARGETED_DEVICE_FAMILY = "1,2";
734 | };
735 | name = Debug;
736 | };
737 | 3A1C559C1BECE19B006EC3F7 /* Release */ = {
738 | isa = XCBuildConfiguration;
739 | buildSettings = {
740 | CODE_SIGN_IDENTITY = "iPhone Developer";
741 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
742 | DEFINES_MODULE = YES;
743 | DYLIB_COMPATIBILITY_VERSION = 1;
744 | DYLIB_CURRENT_VERSION = 1;
745 | DYLIB_INSTALL_NAME_BASE = "@rpath";
746 | INFOPLIST_FILE = Zeal/Info.plist;
747 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
748 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
749 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
750 | PRODUCT_BUNDLE_IDENTIFIER = com.zewo.Zeal;
751 | PRODUCT_NAME = Zeal;
752 | SDKROOT = iphoneos;
753 | SKIP_INSTALL = YES;
754 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
755 | TARGETED_DEVICE_FAMILY = "1,2";
756 | VALIDATE_PRODUCT = YES;
757 | };
758 | name = Release;
759 | };
760 | 3A1C559E1BECE19B006EC3F7 /* Debug */ = {
761 | isa = XCBuildConfiguration;
762 | buildSettings = {
763 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
764 | INFOPLIST_FILE = "Zeal Tests/Info.plist";
765 | IPHONEOS_DEPLOYMENT_TARGET = 9.1;
766 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
767 | PRODUCT_BUNDLE_IDENTIFIER = com.zewo.ZealTests;
768 | PRODUCT_NAME = ZealTests;
769 | SDKROOT = iphoneos;
770 | };
771 | name = Debug;
772 | };
773 | 3A1C559F1BECE19B006EC3F7 /* Release */ = {
774 | isa = XCBuildConfiguration;
775 | buildSettings = {
776 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
777 | INFOPLIST_FILE = "Zeal Tests/Info.plist";
778 | IPHONEOS_DEPLOYMENT_TARGET = 9.1;
779 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
780 | PRODUCT_BUNDLE_IDENTIFIER = com.zewo.ZealTests;
781 | PRODUCT_NAME = ZealTests;
782 | SDKROOT = iphoneos;
783 | VALIDATE_PRODUCT = YES;
784 | };
785 | name = Release;
786 | };
787 | B0D521821BE4F753002063D5 /* Debug */ = {
788 | isa = XCBuildConfiguration;
789 | buildSettings = {
790 | ALWAYS_SEARCH_USER_PATHS = NO;
791 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
792 | CLANG_CXX_LIBRARY = "libc++";
793 | CLANG_ENABLE_MODULES = YES;
794 | CLANG_ENABLE_OBJC_ARC = YES;
795 | CLANG_WARN_BOOL_CONVERSION = YES;
796 | CLANG_WARN_CONSTANT_CONVERSION = YES;
797 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
798 | CLANG_WARN_EMPTY_BODY = YES;
799 | CLANG_WARN_ENUM_CONVERSION = YES;
800 | CLANG_WARN_INT_CONVERSION = YES;
801 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
802 | CLANG_WARN_UNREACHABLE_CODE = YES;
803 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
804 | CODE_SIGN_IDENTITY = "-";
805 | COPY_PHASE_STRIP = NO;
806 | CURRENT_PROJECT_VERSION = 1;
807 | DEBUG_INFORMATION_FORMAT = dwarf;
808 | ENABLE_STRICT_OBJC_MSGSEND = YES;
809 | ENABLE_TESTABILITY = YES;
810 | GCC_C_LANGUAGE_STANDARD = gnu99;
811 | GCC_DYNAMIC_NO_PIC = NO;
812 | GCC_NO_COMMON_BLOCKS = YES;
813 | GCC_OPTIMIZATION_LEVEL = 0;
814 | GCC_PREPROCESSOR_DEFINITIONS = (
815 | "DEBUG=1",
816 | "$(inherited)",
817 | );
818 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
819 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
820 | GCC_WARN_UNDECLARED_SELECTOR = YES;
821 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
822 | GCC_WARN_UNUSED_FUNCTION = YES;
823 | GCC_WARN_UNUSED_VARIABLE = YES;
824 | MACOSX_DEPLOYMENT_TARGET = 10.10;
825 | MTL_ENABLE_DEBUG_INFO = YES;
826 | ONLY_ACTIVE_ARCH = YES;
827 | SDKROOT = macosx;
828 | SWIFT_INCLUDE_PATHS = "$(SRCROOT)/Dependencies";
829 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
830 | VERSIONING_SYSTEM = "apple-generic";
831 | VERSION_INFO_PREFIX = "";
832 | };
833 | name = Debug;
834 | };
835 | B0D521831BE4F753002063D5 /* Release */ = {
836 | isa = XCBuildConfiguration;
837 | buildSettings = {
838 | ALWAYS_SEARCH_USER_PATHS = NO;
839 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
840 | CLANG_CXX_LIBRARY = "libc++";
841 | CLANG_ENABLE_MODULES = YES;
842 | CLANG_ENABLE_OBJC_ARC = YES;
843 | CLANG_WARN_BOOL_CONVERSION = YES;
844 | CLANG_WARN_CONSTANT_CONVERSION = YES;
845 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
846 | CLANG_WARN_EMPTY_BODY = YES;
847 | CLANG_WARN_ENUM_CONVERSION = YES;
848 | CLANG_WARN_INT_CONVERSION = YES;
849 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
850 | CLANG_WARN_UNREACHABLE_CODE = YES;
851 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
852 | CODE_SIGN_IDENTITY = "-";
853 | COPY_PHASE_STRIP = NO;
854 | CURRENT_PROJECT_VERSION = 1;
855 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
856 | ENABLE_NS_ASSERTIONS = NO;
857 | ENABLE_STRICT_OBJC_MSGSEND = YES;
858 | GCC_C_LANGUAGE_STANDARD = gnu99;
859 | GCC_NO_COMMON_BLOCKS = YES;
860 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
861 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
862 | GCC_WARN_UNDECLARED_SELECTOR = YES;
863 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
864 | GCC_WARN_UNUSED_FUNCTION = YES;
865 | GCC_WARN_UNUSED_VARIABLE = YES;
866 | MACOSX_DEPLOYMENT_TARGET = 10.10;
867 | MTL_ENABLE_DEBUG_INFO = NO;
868 | SDKROOT = macosx;
869 | SWIFT_INCLUDE_PATHS = "$(SRCROOT)/Dependencies";
870 | VERSIONING_SYSTEM = "apple-generic";
871 | VERSION_INFO_PREFIX = "";
872 | };
873 | name = Release;
874 | };
875 | B0D521851BE4F753002063D5 /* Debug */ = {
876 | isa = XCBuildConfiguration;
877 | buildSettings = {
878 | CLANG_ENABLE_MODULES = YES;
879 | CODE_SIGN_IDENTITY = "";
880 | COMBINE_HIDPI_IMAGES = YES;
881 | DEFINES_MODULE = YES;
882 | DYLIB_COMPATIBILITY_VERSION = 1;
883 | DYLIB_CURRENT_VERSION = 1;
884 | DYLIB_INSTALL_NAME_BASE = "@rpath";
885 | FRAMEWORK_VERSION = A;
886 | INFOPLIST_FILE = Zeal/Info.plist;
887 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
888 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
889 | MACOSX_DEPLOYMENT_TARGET = 10.9;
890 | PRODUCT_BUNDLE_IDENTIFIER = com.zewo.Zeal;
891 | PRODUCT_NAME = Zeal;
892 | SKIP_INSTALL = YES;
893 | SWIFT_INCLUDE_PATHS = "$(SRCROOT)/Dependencies";
894 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
895 | };
896 | name = Debug;
897 | };
898 | B0D521861BE4F753002063D5 /* Release */ = {
899 | isa = XCBuildConfiguration;
900 | buildSettings = {
901 | CLANG_ENABLE_MODULES = YES;
902 | CODE_SIGN_IDENTITY = "";
903 | COMBINE_HIDPI_IMAGES = YES;
904 | DEFINES_MODULE = YES;
905 | DYLIB_COMPATIBILITY_VERSION = 1;
906 | DYLIB_CURRENT_VERSION = 1;
907 | DYLIB_INSTALL_NAME_BASE = "@rpath";
908 | FRAMEWORK_VERSION = A;
909 | INFOPLIST_FILE = Zeal/Info.plist;
910 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
911 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
912 | MACOSX_DEPLOYMENT_TARGET = 10.9;
913 | PRODUCT_BUNDLE_IDENTIFIER = com.zewo.Zeal;
914 | PRODUCT_NAME = Zeal;
915 | SKIP_INSTALL = YES;
916 | SWIFT_INCLUDE_PATHS = "$(SRCROOT)/Dependencies";
917 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
918 | };
919 | name = Release;
920 | };
921 | B0D521881BE4F753002063D5 /* Debug */ = {
922 | isa = XCBuildConfiguration;
923 | buildSettings = {
924 | CLANG_ENABLE_MODULES = YES;
925 | COMBINE_HIDPI_IMAGES = YES;
926 | INFOPLIST_FILE = "Zeal Tests/Info.plist";
927 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
928 | PRODUCT_BUNDLE_IDENTIFIER = com.zewo.ZealTests;
929 | PRODUCT_NAME = ZealTests;
930 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
931 | };
932 | name = Debug;
933 | };
934 | B0D521891BE4F753002063D5 /* Release */ = {
935 | isa = XCBuildConfiguration;
936 | buildSettings = {
937 | CLANG_ENABLE_MODULES = YES;
938 | COMBINE_HIDPI_IMAGES = YES;
939 | INFOPLIST_FILE = "Zeal Tests/Info.plist";
940 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
941 | PRODUCT_BUNDLE_IDENTIFIER = com.zewo.ZealTests;
942 | PRODUCT_NAME = ZealTests;
943 | };
944 | name = Release;
945 | };
946 | /* End XCBuildConfiguration section */
947 |
948 | /* Begin XCConfigurationList section */
949 | 3A1C559A1BECE19B006EC3F7 /* Build configuration list for PBXNativeTarget "Zeal iOS" */ = {
950 | isa = XCConfigurationList;
951 | buildConfigurations = (
952 | 3A1C559B1BECE19B006EC3F7 /* Debug */,
953 | 3A1C559C1BECE19B006EC3F7 /* Release */,
954 | );
955 | defaultConfigurationIsVisible = 0;
956 | defaultConfigurationName = Release;
957 | };
958 | 3A1C559D1BECE19B006EC3F7 /* Build configuration list for PBXNativeTarget "Zeal iOS Tests" */ = {
959 | isa = XCConfigurationList;
960 | buildConfigurations = (
961 | 3A1C559E1BECE19B006EC3F7 /* Debug */,
962 | 3A1C559F1BECE19B006EC3F7 /* Release */,
963 | );
964 | defaultConfigurationIsVisible = 0;
965 | defaultConfigurationName = Release;
966 | };
967 | B0D5216A1BE4F753002063D5 /* Build configuration list for PBXProject "Zeal" */ = {
968 | isa = XCConfigurationList;
969 | buildConfigurations = (
970 | B0D521821BE4F753002063D5 /* Debug */,
971 | B0D521831BE4F753002063D5 /* Release */,
972 | );
973 | defaultConfigurationIsVisible = 0;
974 | defaultConfigurationName = Release;
975 | };
976 | B0D521841BE4F753002063D5 /* Build configuration list for PBXNativeTarget "Zeal OSX" */ = {
977 | isa = XCConfigurationList;
978 | buildConfigurations = (
979 | B0D521851BE4F753002063D5 /* Debug */,
980 | B0D521861BE4F753002063D5 /* Release */,
981 | );
982 | defaultConfigurationIsVisible = 0;
983 | defaultConfigurationName = Release;
984 | };
985 | B0D521871BE4F753002063D5 /* Build configuration list for PBXNativeTarget "Zeal OSX Tests" */ = {
986 | isa = XCConfigurationList;
987 | buildConfigurations = (
988 | B0D521881BE4F753002063D5 /* Debug */,
989 | B0D521891BE4F753002063D5 /* Release */,
990 | );
991 | defaultConfigurationIsVisible = 0;
992 | defaultConfigurationName = Release;
993 | };
994 | /* End XCConfigurationList section */
995 | };
996 | rootObject = B0D521671BE4F753002063D5 /* Project object */;
997 | }
998 |
--------------------------------------------------------------------------------