) in
85 |
86 | switch response.result {
87 | case .success(let data):
88 | do {
89 | let responseData = try JSONDecoder().decode(T.self, from: data)
90 | completion(.success(responseData))
91 | } catch {
92 | completion(.failure(ZenError.DecodingResponseFailed))
93 | }
94 | case .failure(let error):
95 | completion(.failure(error))
96 | }
97 | }
98 | }
99 | }
100 | }
101 |
102 | }
103 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Zen, Zero Effort Networking
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | #
32 |
33 | Zen is simple yet powerfull Networking library for iOS. It leverage the powerfull feature of Alamofire and Swift to make building Network Layer more straight forward and efficient.
34 |
35 | - [Requirements](#requirements)
36 | - [Installation](#installation)
37 | - [Cocoapods](#cocoapods)
38 | - [Carthage](#carthage)
39 | - [Swift Package Manager](#spm)
40 | - [Usage](#usage)
41 | - [Todo](#todo)
42 | - [Author](#author)
43 | - [License](#license)
44 |
45 |
46 | ## Requirements
47 |
48 | * Xcode 11.3+
49 | * Swift 5.1+
50 | * iOS 13+
51 |
52 | ## Installation
53 |
54 | ### CocoaPods
55 |
56 | [CocoaPods](https://cocoapods.org) is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate Zen into your Xcode project using CocoaPods, specify it in your `Podfile`:
57 |
58 | ```ruby
59 | pod 'Zen', '~> 0.1.7'
60 | ```
61 |
62 | ### Carthage
63 |
64 | [Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate Zen into your Xcode project using Carthage, specify it in your `Cartfile`:
65 |
66 | ```ogdl
67 | github "KarimEbrahemAbdelaziz/Zen" ~> 0.1.7
68 | ```
69 |
70 | ### SPM
71 |
72 | The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. It is in early development, but Zen does support its use on supported platforms.
73 |
74 | Once you have your Swift package set up, adding Zen as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`.
75 |
76 | ```swift
77 | dependencies: [
78 | .package(url: "https://github.com/KarimEbrahemAbdelaziz/Zen.git", .upToNextMajor(from: "0.1.7"))
79 | ]
80 | ```
81 |
82 | # Usage
83 |
84 | ## Create your Model (Must Conform to Codable)
85 | ```swift
86 | struct Todo: Codable {
87 | var userId: Int
88 | var id: Int
89 | var title: String
90 | var completed: Bool
91 | }
92 | ```
93 |
94 | ## Create your API Client 🔥
95 | ```swift
96 | import Zen
97 |
98 | class APIClient {
99 | @ZenRequest("https://jsonplaceholder.typicode.com/todos/")
100 | static var fetchTodo: Service
101 | }
102 | ```
103 |
104 | ## Use it 🤓
105 | ### Zen GET Request
106 | ```swift
107 | try? APIClient.$fetchTodo
108 | // Specifiy HTTPMethod for The Request
109 | .set(method: .get)
110 | // Specifiy Custom PATH for The Request
111 | .set(path: "1")
112 | // Build the Request
113 | .build()
114 |
115 | APIClient.fetchTodo { result in
116 | switch result {
117 | case .success(let todo):
118 | print(todo.title)
119 | case .failure(let error):
120 | print(error)
121 | }
122 | }
123 | ```
124 |
125 | ### Zen GET Request (Query Parameters)
126 | ```swift
127 | try? APIClient.$fetchUsers
128 | // Specifiy HTTPMethod for The Request
129 | .set(method: .get)
130 | // Specifiy Query Parameters for The Request
131 | .set(parameters: .url([
132 | "delay": "3"
133 | ]))
134 | // Build the Request
135 | .build()
136 |
137 | APIClient.fetchUsers { result in
138 | switch result {
139 | case .success(let users):
140 | print(users.data.count)
141 | case .failure(let error):
142 | print(error)
143 | }
144 | }
145 | ```
146 |
147 | ### Zen POST Request
148 | ```swift
149 | try? APIClient.$createUser
150 | // Specifiy HTTPMethod for The Request
151 | .set(method: .post)
152 | // Specifiy Body Parameters for The Request
153 | .set(parameters: .body([
154 | "name": "Karim Ebrahem",
155 | "job": "iOS Software Engineer"
156 | ]))
157 | // Build the Request
158 | .build()
159 |
160 | APIClient.createUser { result in
161 | switch result {
162 | case .success(let user):
163 | print(user.name)
164 | case .failure(let error):
165 | print(error)
166 | }
167 | }
168 | ```
169 |
170 | ## Todo
171 |
172 | - [x] Support all HTTP Methods Requests.
173 | - [x] Support Body Parameters.
174 | - [x] Support Query Parameters.
175 | - [x] Support Headers.
176 | - [ ] Support Interceptors.
177 |
178 | ## Author
179 |
180 | Karim Ebrahem, karimabdelazizmansour@gmail.com
181 | You can find me on Twitter [@k_ebrahem_](https://twitter.com/k_ebrahem_).
182 |
183 | ## License
184 |
185 | Zen is available under the MIT license. See the `LICENSE` file for more info.
186 |
187 | Zen will be updated when necessary and fixes will be done as soon as discovered to keep it up to date.
188 |
189 | Enjoy!
190 |
--------------------------------------------------------------------------------
/Zen/Zen.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 52;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | BC27B530243D617C005E6E0E /* Zen in Frameworks */ = {isa = PBXBuildFile; productRef = BC27B52F243D617C005E6E0E /* Zen */; };
11 | BCC88A5A243C12090087AFAB /* Zen.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC88A58243C12090087AFAB /* Zen.h */; settings = {ATTRIBUTES = (Public, ); }; };
12 | BCC88A63243C125F0087AFAB /* GET.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCC88A62243C125F0087AFAB /* GET.swift */; };
13 | BCC88A70243C1D0F0087AFAB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCC88A6F243C1D0F0087AFAB /* AppDelegate.swift */; };
14 | BCC88A72243C1D0F0087AFAB /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCC88A71243C1D0F0087AFAB /* SceneDelegate.swift */; };
15 | BCC88A74243C1D0F0087AFAB /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCC88A73243C1D0F0087AFAB /* ViewController.swift */; };
16 | BCC88A77243C1D0F0087AFAB /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BCC88A75243C1D0F0087AFAB /* Main.storyboard */; };
17 | BCC88A79243C1D100087AFAB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BCC88A78243C1D100087AFAB /* Assets.xcassets */; };
18 | BCC88A7C243C1D100087AFAB /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BCC88A7A243C1D100087AFAB /* LaunchScreen.storyboard */; };
19 | BCC88A84243C1D400087AFAB /* APIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCC88A83243C1D400087AFAB /* APIClient.swift */; };
20 | BCC88A87243C1D4C0087AFAB /* Todo.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCC88A86243C1D4C0087AFAB /* Todo.swift */; };
21 | BCDB9AC2243D7E5100D23B0F /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = BCDB9AC1243D7E5100D23B0F /* Alamofire */; };
22 | /* End PBXBuildFile section */
23 |
24 | /* Begin PBXFileReference section */
25 | BCC88A55243C12090087AFAB /* Zen.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Zen.framework; sourceTree = BUILT_PRODUCTS_DIR; };
26 | BCC88A58243C12090087AFAB /* Zen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Zen.h; sourceTree = ""; };
27 | BCC88A59243C12090087AFAB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
28 | BCC88A62243C125F0087AFAB /* GET.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GET.swift; path = ../../Sources/Zen/GET.swift; sourceTree = ""; };
29 | BCC88A65243C1CF10087AFAB /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Alamofire.framework; path = Carthage/Build/iOS/Alamofire.framework; sourceTree = ""; };
30 | BCC88A6D243C1D0F0087AFAB /* ZenExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ZenExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
31 | BCC88A6F243C1D0F0087AFAB /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
32 | BCC88A71243C1D0F0087AFAB /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; };
33 | BCC88A73243C1D0F0087AFAB /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
34 | BCC88A76243C1D0F0087AFAB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
35 | BCC88A78243C1D100087AFAB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
36 | BCC88A7B243C1D100087AFAB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
37 | BCC88A7D243C1D100087AFAB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
38 | BCC88A83243C1D400087AFAB /* APIClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIClient.swift; sourceTree = ""; };
39 | BCC88A86243C1D4C0087AFAB /* Todo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Todo.swift; sourceTree = ""; };
40 | /* End PBXFileReference section */
41 |
42 | /* Begin PBXFrameworksBuildPhase section */
43 | BCC88A52243C12090087AFAB /* Frameworks */ = {
44 | isa = PBXFrameworksBuildPhase;
45 | buildActionMask = 2147483647;
46 | files = (
47 | BCDB9AC2243D7E5100D23B0F /* Alamofire in Frameworks */,
48 | );
49 | runOnlyForDeploymentPostprocessing = 0;
50 | };
51 | BCC88A6A243C1D0F0087AFAB /* Frameworks */ = {
52 | isa = PBXFrameworksBuildPhase;
53 | buildActionMask = 2147483647;
54 | files = (
55 | BC27B530243D617C005E6E0E /* Zen in Frameworks */,
56 | );
57 | runOnlyForDeploymentPostprocessing = 0;
58 | };
59 | /* End PBXFrameworksBuildPhase section */
60 |
61 | /* Begin PBXGroup section */
62 | BCC88A4B243C12090087AFAB = {
63 | isa = PBXGroup;
64 | children = (
65 | BCC88A57243C12090087AFAB /* Zen */,
66 | BCC88A6E243C1D0F0087AFAB /* ZenExample */,
67 | BCC88A56243C12090087AFAB /* Products */,
68 | BCC88A64243C1CF10087AFAB /* Frameworks */,
69 | );
70 | sourceTree = "";
71 | };
72 | BCC88A56243C12090087AFAB /* Products */ = {
73 | isa = PBXGroup;
74 | children = (
75 | BCC88A55243C12090087AFAB /* Zen.framework */,
76 | BCC88A6D243C1D0F0087AFAB /* ZenExample.app */,
77 | );
78 | name = Products;
79 | sourceTree = "";
80 | };
81 | BCC88A57243C12090087AFAB /* Zen */ = {
82 | isa = PBXGroup;
83 | children = (
84 | BCC88A62243C125F0087AFAB /* GET.swift */,
85 | BCC88A58243C12090087AFAB /* Zen.h */,
86 | BCC88A59243C12090087AFAB /* Info.plist */,
87 | );
88 | path = Zen;
89 | sourceTree = "";
90 | };
91 | BCC88A64243C1CF10087AFAB /* Frameworks */ = {
92 | isa = PBXGroup;
93 | children = (
94 | BCC88A65243C1CF10087AFAB /* Alamofire.framework */,
95 | );
96 | name = Frameworks;
97 | sourceTree = "";
98 | };
99 | BCC88A6E243C1D0F0087AFAB /* ZenExample */ = {
100 | isa = PBXGroup;
101 | children = (
102 | BCC88A82243C1D330087AFAB /* Models */,
103 | BCC88A81243C1D250087AFAB /* Networking */,
104 | BCC88A6F243C1D0F0087AFAB /* AppDelegate.swift */,
105 | BCC88A71243C1D0F0087AFAB /* SceneDelegate.swift */,
106 | BCC88A73243C1D0F0087AFAB /* ViewController.swift */,
107 | BCC88A75243C1D0F0087AFAB /* Main.storyboard */,
108 | BCC88A78243C1D100087AFAB /* Assets.xcassets */,
109 | BCC88A7A243C1D100087AFAB /* LaunchScreen.storyboard */,
110 | BCC88A7D243C1D100087AFAB /* Info.plist */,
111 | );
112 | path = ZenExample;
113 | sourceTree = "";
114 | };
115 | BCC88A81243C1D250087AFAB /* Networking */ = {
116 | isa = PBXGroup;
117 | children = (
118 | BCC88A83243C1D400087AFAB /* APIClient.swift */,
119 | );
120 | path = Networking;
121 | sourceTree = "";
122 | };
123 | BCC88A82243C1D330087AFAB /* Models */ = {
124 | isa = PBXGroup;
125 | children = (
126 | BCC88A86243C1D4C0087AFAB /* Todo.swift */,
127 | );
128 | path = Models;
129 | sourceTree = "";
130 | };
131 | /* End PBXGroup section */
132 |
133 | /* Begin PBXHeadersBuildPhase section */
134 | BCC88A50243C12090087AFAB /* Headers */ = {
135 | isa = PBXHeadersBuildPhase;
136 | buildActionMask = 2147483647;
137 | files = (
138 | BCC88A5A243C12090087AFAB /* Zen.h in Headers */,
139 | );
140 | runOnlyForDeploymentPostprocessing = 0;
141 | };
142 | /* End PBXHeadersBuildPhase section */
143 |
144 | /* Begin PBXNativeTarget section */
145 | BCC88A54243C12090087AFAB /* Zen */ = {
146 | isa = PBXNativeTarget;
147 | buildConfigurationList = BCC88A5D243C12090087AFAB /* Build configuration list for PBXNativeTarget "Zen" */;
148 | buildPhases = (
149 | BCC88A50243C12090087AFAB /* Headers */,
150 | BCC88A51243C12090087AFAB /* Sources */,
151 | BCC88A52243C12090087AFAB /* Frameworks */,
152 | BCC88A53243C12090087AFAB /* Resources */,
153 | );
154 | buildRules = (
155 | );
156 | dependencies = (
157 | );
158 | name = Zen;
159 | packageProductDependencies = (
160 | BCDB9AC1243D7E5100D23B0F /* Alamofire */,
161 | );
162 | productName = Zen;
163 | productReference = BCC88A55243C12090087AFAB /* Zen.framework */;
164 | productType = "com.apple.product-type.framework";
165 | };
166 | BCC88A6C243C1D0F0087AFAB /* ZenExample */ = {
167 | isa = PBXNativeTarget;
168 | buildConfigurationList = BCC88A7E243C1D100087AFAB /* Build configuration list for PBXNativeTarget "ZenExample" */;
169 | buildPhases = (
170 | BCC88A69243C1D0F0087AFAB /* Sources */,
171 | BCC88A6A243C1D0F0087AFAB /* Frameworks */,
172 | BCC88A6B243C1D0F0087AFAB /* Resources */,
173 | );
174 | buildRules = (
175 | );
176 | dependencies = (
177 | );
178 | name = ZenExample;
179 | packageProductDependencies = (
180 | BC27B52F243D617C005E6E0E /* Zen */,
181 | );
182 | productName = ZenExample;
183 | productReference = BCC88A6D243C1D0F0087AFAB /* ZenExample.app */;
184 | productType = "com.apple.product-type.application";
185 | };
186 | /* End PBXNativeTarget section */
187 |
188 | /* Begin PBXProject section */
189 | BCC88A4C243C12090087AFAB /* Project object */ = {
190 | isa = PBXProject;
191 | attributes = {
192 | LastSwiftUpdateCheck = 1130;
193 | LastUpgradeCheck = 1130;
194 | ORGANIZATIONNAME = "Karim Ebrahem";
195 | TargetAttributes = {
196 | BCC88A54243C12090087AFAB = {
197 | CreatedOnToolsVersion = 11.3.1;
198 | LastSwiftMigration = 1130;
199 | };
200 | BCC88A6C243C1D0F0087AFAB = {
201 | CreatedOnToolsVersion = 11.3.1;
202 | };
203 | };
204 | };
205 | buildConfigurationList = BCC88A4F243C12090087AFAB /* Build configuration list for PBXProject "Zen" */;
206 | compatibilityVersion = "Xcode 9.3";
207 | developmentRegion = en;
208 | hasScannedForEncodings = 0;
209 | knownRegions = (
210 | en,
211 | Base,
212 | );
213 | mainGroup = BCC88A4B243C12090087AFAB;
214 | packageReferences = (
215 | BC27B52E243D617C005E6E0E /* XCRemoteSwiftPackageReference "Zen" */,
216 | BCDB9AC0243D7E5100D23B0F /* XCRemoteSwiftPackageReference "Alamofire" */,
217 | );
218 | productRefGroup = BCC88A56243C12090087AFAB /* Products */;
219 | projectDirPath = "";
220 | projectRoot = "";
221 | targets = (
222 | BCC88A54243C12090087AFAB /* Zen */,
223 | BCC88A6C243C1D0F0087AFAB /* ZenExample */,
224 | );
225 | };
226 | /* End PBXProject section */
227 |
228 | /* Begin PBXResourcesBuildPhase section */
229 | BCC88A53243C12090087AFAB /* Resources */ = {
230 | isa = PBXResourcesBuildPhase;
231 | buildActionMask = 2147483647;
232 | files = (
233 | );
234 | runOnlyForDeploymentPostprocessing = 0;
235 | };
236 | BCC88A6B243C1D0F0087AFAB /* Resources */ = {
237 | isa = PBXResourcesBuildPhase;
238 | buildActionMask = 2147483647;
239 | files = (
240 | BCC88A7C243C1D100087AFAB /* LaunchScreen.storyboard in Resources */,
241 | BCC88A79243C1D100087AFAB /* Assets.xcassets in Resources */,
242 | BCC88A77243C1D0F0087AFAB /* Main.storyboard in Resources */,
243 | );
244 | runOnlyForDeploymentPostprocessing = 0;
245 | };
246 | /* End PBXResourcesBuildPhase section */
247 |
248 | /* Begin PBXSourcesBuildPhase section */
249 | BCC88A51243C12090087AFAB /* Sources */ = {
250 | isa = PBXSourcesBuildPhase;
251 | buildActionMask = 2147483647;
252 | files = (
253 | BCC88A63243C125F0087AFAB /* GET.swift in Sources */,
254 | );
255 | runOnlyForDeploymentPostprocessing = 0;
256 | };
257 | BCC88A69243C1D0F0087AFAB /* Sources */ = {
258 | isa = PBXSourcesBuildPhase;
259 | buildActionMask = 2147483647;
260 | files = (
261 | BCC88A74243C1D0F0087AFAB /* ViewController.swift in Sources */,
262 | BCC88A70243C1D0F0087AFAB /* AppDelegate.swift in Sources */,
263 | BCC88A72243C1D0F0087AFAB /* SceneDelegate.swift in Sources */,
264 | BCC88A84243C1D400087AFAB /* APIClient.swift in Sources */,
265 | BCC88A87243C1D4C0087AFAB /* Todo.swift in Sources */,
266 | );
267 | runOnlyForDeploymentPostprocessing = 0;
268 | };
269 | /* End PBXSourcesBuildPhase section */
270 |
271 | /* Begin PBXVariantGroup section */
272 | BCC88A75243C1D0F0087AFAB /* Main.storyboard */ = {
273 | isa = PBXVariantGroup;
274 | children = (
275 | BCC88A76243C1D0F0087AFAB /* Base */,
276 | );
277 | name = Main.storyboard;
278 | sourceTree = "";
279 | };
280 | BCC88A7A243C1D100087AFAB /* LaunchScreen.storyboard */ = {
281 | isa = PBXVariantGroup;
282 | children = (
283 | BCC88A7B243C1D100087AFAB /* Base */,
284 | );
285 | name = LaunchScreen.storyboard;
286 | sourceTree = "";
287 | };
288 | /* End PBXVariantGroup section */
289 |
290 | /* Begin XCBuildConfiguration section */
291 | BCC88A5B243C12090087AFAB /* Debug */ = {
292 | isa = XCBuildConfiguration;
293 | buildSettings = {
294 | ALWAYS_SEARCH_USER_PATHS = NO;
295 | CLANG_ANALYZER_NONNULL = YES;
296 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
297 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
298 | CLANG_CXX_LIBRARY = "libc++";
299 | CLANG_ENABLE_MODULES = YES;
300 | CLANG_ENABLE_OBJC_ARC = YES;
301 | CLANG_ENABLE_OBJC_WEAK = YES;
302 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
303 | CLANG_WARN_BOOL_CONVERSION = YES;
304 | CLANG_WARN_COMMA = YES;
305 | CLANG_WARN_CONSTANT_CONVERSION = YES;
306 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
307 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
308 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
309 | CLANG_WARN_EMPTY_BODY = YES;
310 | CLANG_WARN_ENUM_CONVERSION = YES;
311 | CLANG_WARN_INFINITE_RECURSION = YES;
312 | CLANG_WARN_INT_CONVERSION = YES;
313 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
314 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
315 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
316 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
317 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
318 | CLANG_WARN_STRICT_PROTOTYPES = YES;
319 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
320 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
321 | CLANG_WARN_UNREACHABLE_CODE = YES;
322 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
323 | COPY_PHASE_STRIP = NO;
324 | CURRENT_PROJECT_VERSION = 1;
325 | DEBUG_INFORMATION_FORMAT = dwarf;
326 | ENABLE_STRICT_OBJC_MSGSEND = YES;
327 | ENABLE_TESTABILITY = YES;
328 | GCC_C_LANGUAGE_STANDARD = gnu11;
329 | GCC_DYNAMIC_NO_PIC = NO;
330 | GCC_NO_COMMON_BLOCKS = YES;
331 | GCC_OPTIMIZATION_LEVEL = 0;
332 | GCC_PREPROCESSOR_DEFINITIONS = (
333 | "DEBUG=1",
334 | "$(inherited)",
335 | );
336 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
337 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
338 | GCC_WARN_UNDECLARED_SELECTOR = YES;
339 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
340 | GCC_WARN_UNUSED_FUNCTION = YES;
341 | GCC_WARN_UNUSED_VARIABLE = YES;
342 | IPHONEOS_DEPLOYMENT_TARGET = 13.2;
343 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
344 | MTL_FAST_MATH = YES;
345 | ONLY_ACTIVE_ARCH = YES;
346 | SDKROOT = iphoneos;
347 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
348 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
349 | VERSIONING_SYSTEM = "apple-generic";
350 | VERSION_INFO_PREFIX = "";
351 | };
352 | name = Debug;
353 | };
354 | BCC88A5C243C12090087AFAB /* Release */ = {
355 | isa = XCBuildConfiguration;
356 | buildSettings = {
357 | ALWAYS_SEARCH_USER_PATHS = NO;
358 | CLANG_ANALYZER_NONNULL = YES;
359 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
360 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
361 | CLANG_CXX_LIBRARY = "libc++";
362 | CLANG_ENABLE_MODULES = YES;
363 | CLANG_ENABLE_OBJC_ARC = YES;
364 | CLANG_ENABLE_OBJC_WEAK = YES;
365 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
366 | CLANG_WARN_BOOL_CONVERSION = YES;
367 | CLANG_WARN_COMMA = YES;
368 | CLANG_WARN_CONSTANT_CONVERSION = YES;
369 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
370 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
371 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
372 | CLANG_WARN_EMPTY_BODY = YES;
373 | CLANG_WARN_ENUM_CONVERSION = YES;
374 | CLANG_WARN_INFINITE_RECURSION = YES;
375 | CLANG_WARN_INT_CONVERSION = YES;
376 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
377 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
378 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
379 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
380 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
381 | CLANG_WARN_STRICT_PROTOTYPES = YES;
382 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
383 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
384 | CLANG_WARN_UNREACHABLE_CODE = YES;
385 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
386 | COPY_PHASE_STRIP = NO;
387 | CURRENT_PROJECT_VERSION = 1;
388 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
389 | ENABLE_NS_ASSERTIONS = NO;
390 | ENABLE_STRICT_OBJC_MSGSEND = YES;
391 | GCC_C_LANGUAGE_STANDARD = gnu11;
392 | GCC_NO_COMMON_BLOCKS = YES;
393 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
394 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
395 | GCC_WARN_UNDECLARED_SELECTOR = YES;
396 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
397 | GCC_WARN_UNUSED_FUNCTION = YES;
398 | GCC_WARN_UNUSED_VARIABLE = YES;
399 | IPHONEOS_DEPLOYMENT_TARGET = 13.2;
400 | MTL_ENABLE_DEBUG_INFO = NO;
401 | MTL_FAST_MATH = YES;
402 | SDKROOT = iphoneos;
403 | SWIFT_COMPILATION_MODE = wholemodule;
404 | SWIFT_OPTIMIZATION_LEVEL = "-O";
405 | VALIDATE_PRODUCT = YES;
406 | VERSIONING_SYSTEM = "apple-generic";
407 | VERSION_INFO_PREFIX = "";
408 | };
409 | name = Release;
410 | };
411 | BCC88A5E243C12090087AFAB /* Debug */ = {
412 | isa = XCBuildConfiguration;
413 | buildSettings = {
414 | CLANG_ENABLE_MODULES = YES;
415 | CODE_SIGN_STYLE = Automatic;
416 | DEFINES_MODULE = YES;
417 | DYLIB_COMPATIBILITY_VERSION = 1;
418 | DYLIB_CURRENT_VERSION = 1;
419 | DYLIB_INSTALL_NAME_BASE = "@rpath";
420 | FRAMEWORK_SEARCH_PATHS = (
421 | "$(inherited)",
422 | "$(PROJECT_DIR)/Carthage/Build/iOS",
423 | );
424 | INFOPLIST_FILE = Zen/Info.plist;
425 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
426 | LD_RUNPATH_SEARCH_PATHS = (
427 | "$(inherited)",
428 | "@executable_path/Frameworks",
429 | "@loader_path/Frameworks",
430 | );
431 | PRODUCT_BUNDLE_IDENTIFIER = com.karimebrahem.Zen;
432 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
433 | SKIP_INSTALL = YES;
434 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
435 | SWIFT_VERSION = 5.0;
436 | TARGETED_DEVICE_FAMILY = "1,2";
437 | };
438 | name = Debug;
439 | };
440 | BCC88A5F243C12090087AFAB /* Release */ = {
441 | isa = XCBuildConfiguration;
442 | buildSettings = {
443 | CLANG_ENABLE_MODULES = YES;
444 | CODE_SIGN_STYLE = Automatic;
445 | DEFINES_MODULE = YES;
446 | DYLIB_COMPATIBILITY_VERSION = 1;
447 | DYLIB_CURRENT_VERSION = 1;
448 | DYLIB_INSTALL_NAME_BASE = "@rpath";
449 | FRAMEWORK_SEARCH_PATHS = (
450 | "$(inherited)",
451 | "$(PROJECT_DIR)/Carthage/Build/iOS",
452 | );
453 | INFOPLIST_FILE = Zen/Info.plist;
454 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
455 | LD_RUNPATH_SEARCH_PATHS = (
456 | "$(inherited)",
457 | "@executable_path/Frameworks",
458 | "@loader_path/Frameworks",
459 | );
460 | PRODUCT_BUNDLE_IDENTIFIER = com.karimebrahem.Zen;
461 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
462 | SKIP_INSTALL = YES;
463 | SWIFT_VERSION = 5.0;
464 | TARGETED_DEVICE_FAMILY = "1,2";
465 | };
466 | name = Release;
467 | };
468 | BCC88A7F243C1D100087AFAB /* Debug */ = {
469 | isa = XCBuildConfiguration;
470 | buildSettings = {
471 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
472 | CODE_SIGN_STYLE = Automatic;
473 | INFOPLIST_FILE = ZenExample/Info.plist;
474 | LD_RUNPATH_SEARCH_PATHS = (
475 | "$(inherited)",
476 | "@executable_path/Frameworks",
477 | );
478 | PRODUCT_BUNDLE_IDENTIFIER = com.karimebrahem.ZenExample;
479 | PRODUCT_NAME = "$(TARGET_NAME)";
480 | SWIFT_VERSION = 5.0;
481 | TARGETED_DEVICE_FAMILY = "1,2";
482 | };
483 | name = Debug;
484 | };
485 | BCC88A80243C1D100087AFAB /* Release */ = {
486 | isa = XCBuildConfiguration;
487 | buildSettings = {
488 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
489 | CODE_SIGN_STYLE = Automatic;
490 | INFOPLIST_FILE = ZenExample/Info.plist;
491 | LD_RUNPATH_SEARCH_PATHS = (
492 | "$(inherited)",
493 | "@executable_path/Frameworks",
494 | );
495 | PRODUCT_BUNDLE_IDENTIFIER = com.karimebrahem.ZenExample;
496 | PRODUCT_NAME = "$(TARGET_NAME)";
497 | SWIFT_VERSION = 5.0;
498 | TARGETED_DEVICE_FAMILY = "1,2";
499 | };
500 | name = Release;
501 | };
502 | /* End XCBuildConfiguration section */
503 |
504 | /* Begin XCConfigurationList section */
505 | BCC88A4F243C12090087AFAB /* Build configuration list for PBXProject "Zen" */ = {
506 | isa = XCConfigurationList;
507 | buildConfigurations = (
508 | BCC88A5B243C12090087AFAB /* Debug */,
509 | BCC88A5C243C12090087AFAB /* Release */,
510 | );
511 | defaultConfigurationIsVisible = 0;
512 | defaultConfigurationName = Release;
513 | };
514 | BCC88A5D243C12090087AFAB /* Build configuration list for PBXNativeTarget "Zen" */ = {
515 | isa = XCConfigurationList;
516 | buildConfigurations = (
517 | BCC88A5E243C12090087AFAB /* Debug */,
518 | BCC88A5F243C12090087AFAB /* Release */,
519 | );
520 | defaultConfigurationIsVisible = 0;
521 | defaultConfigurationName = Release;
522 | };
523 | BCC88A7E243C1D100087AFAB /* Build configuration list for PBXNativeTarget "ZenExample" */ = {
524 | isa = XCConfigurationList;
525 | buildConfigurations = (
526 | BCC88A7F243C1D100087AFAB /* Debug */,
527 | BCC88A80243C1D100087AFAB /* Release */,
528 | );
529 | defaultConfigurationIsVisible = 0;
530 | defaultConfigurationName = Release;
531 | };
532 | /* End XCConfigurationList section */
533 |
534 | /* Begin XCRemoteSwiftPackageReference section */
535 | BC27B52E243D617C005E6E0E /* XCRemoteSwiftPackageReference "Zen" */ = {
536 | isa = XCRemoteSwiftPackageReference;
537 | repositoryURL = "https://github.com/KarimEbrahemAbdelaziz/Zen.git";
538 | requirement = {
539 | kind = upToNextMajorVersion;
540 | minimumVersion = 0.1.3;
541 | };
542 | };
543 | BCDB9AC0243D7E5100D23B0F /* XCRemoteSwiftPackageReference "Alamofire" */ = {
544 | isa = XCRemoteSwiftPackageReference;
545 | repositoryURL = "https://github.com/Alamofire/Alamofire.git";
546 | requirement = {
547 | kind = upToNextMajorVersion;
548 | minimumVersion = 5.1.0;
549 | };
550 | };
551 | /* End XCRemoteSwiftPackageReference section */
552 |
553 | /* Begin XCSwiftPackageProductDependency section */
554 | BC27B52F243D617C005E6E0E /* Zen */ = {
555 | isa = XCSwiftPackageProductDependency;
556 | package = BC27B52E243D617C005E6E0E /* XCRemoteSwiftPackageReference "Zen" */;
557 | productName = Zen;
558 | };
559 | BCDB9AC1243D7E5100D23B0F /* Alamofire */ = {
560 | isa = XCSwiftPackageProductDependency;
561 | package = BCDB9AC0243D7E5100D23B0F /* XCRemoteSwiftPackageReference "Alamofire" */;
562 | productName = Alamofire;
563 | };
564 | /* End XCSwiftPackageProductDependency section */
565 | };
566 | rootObject = BCC88A4C243C12090087AFAB /* Project object */;
567 | }
568 |
--------------------------------------------------------------------------------