Skip to content

Commit 41cf3b9

Browse files
committed
Architecture: Updating Format II
1 parent d5f10f9 commit 41cf3b9

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

ARCHITECTURE.md

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,15 @@ Since our Model entities conform to `Decodable`, this results in small-footprint
140140
The networking layer is **entirely decoupled** from third party frameworks. We rely upon component injection to actually perform network requests:
141141

142142
1. **NetworkType**
143+
143144
Defines a set of API's, to be implemented by any class that offers actual Network Access.
144145
145146
2. **AlamofireNetwork**
147+
146148
Thin wrapper around the Alamofire library.
147149
148150
3. **MockupNetwork**
151+
149152
As the name implies, the Mockup Network is extensively used in Unit Tests. Allows us to simulate backend
150153
responses without requiring third party tools. No more NSURLSession swizzling!
151154

@@ -157,14 +160,17 @@ Rather than building URL instances in multiple spots, we've opted for implementi
157160
of performing this task for us:
158161

159162
1. **DotcomRequest**
163+
160164
Represents a WordPress.com request. Set the proper API Version, method, path and parameters, and this structure
161165
will generate a URLRequest for you.
162166

163167
2. **JetpackRequest**
168+
164169
Analog to DotcomRequest, this structure represents a Jetpack Endpoint request. Capable of building a ready-to-use
165170
URLRequest for a "Jetpack Tunneled" endpoint.
166171

167172
3. **AuthenticatedRequest**
173+
168174
Injects a set of Credentials into anything that conforms to the URLConvertible protocol. Usually wraps up
169175
a DotcomRequest (OR) JetpackRequest.
170176

@@ -268,25 +274,25 @@ for the iOS platform (and our specific requirements):
268274

269275
It's important to note that in the proposed architecture Model Entities must be defined in two spots:
270276

271-
A. **Storage.framework**
277+
A. **Storage.framework**
272278

273279
New entities are defined in the CoreData Model, and it's code is generated thru the Model Editor.
274280
275-
B. **Networking.framework**
281+
B. **Networking.framework**
276282

277283
Entities are typically implemented as `structs` with readonly properties, and Decodable conformance.
278284

279285
In order to avoid code duplication we've taken a few shortcuts:
280286

281-
* All of the 'Networking Entities' are typealiased as 'Yosemite Entities', and exposed publicly (Model.swift).
282-
This allows us to avoid the need for importing `Networking` in the main app, and also lets us avoid reimplementing, yet again,
283-
the same entities that have been defined twice.
287+
* All of the 'Networking Entities' are typealiased as 'Yosemite Entities', and exposed publicly (Model.swift).
288+
This allows us to avoid the need for importing `Networking` in the main app, and also lets us avoid reimplementing, yet again,
289+
the same entities that have been defined twice.
284290

285-
* Since ResultsController uses internally a FRC, the Storage.Model *TYPE* is required for it's initialization.
286-
We may revisit and fix this shortcoming in upcoming iterations.
291+
* Since ResultsController uses internally a FRC, the Storage.Model *TYPE* is required for it's initialization.
292+
We may revisit and fix this shortcoming in upcoming iterations.
287293

288-
As a workaround to prevent the need for `import Storage` statements, all of the Storage.Entities that are used in
289-
ResultsController instances through the main app have been re-exported by means of a typealias.
294+
As a workaround to prevent the need for `import Storage` statements, all of the Storage.Entities that are used in
295+
ResultsController instances through the main app have been re-exported by means of a typealias.
290296

291297

292298

0 commit comments

Comments
 (0)