From 4f3277f1dec2ed08dc211b0eef133fec6b32134d Mon Sep 17 00:00:00 2001 From: Luis Ezcurdia Razo Date: Fri, 4 Oct 2019 19:49:09 -0500 Subject: [PATCH 01/28] Implement basic client --- fakestagram.xcodeproj/project.pbxproj | 24 +++++++ .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 ++ fakestagram/Credentials.swift | 24 +++++++ fakestagram/DataSource/Client.swift | 70 +++++++++++++++++++ fakestagram/DataSource/HttpResponse.swift | 25 +++++++ fakestagram/DataSource/StatusCode.swift | 36 ++++++++++ 6 files changed, 185 insertions(+) create mode 100644 fakestagram.xcodeproj/xcuserdata/luise.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 fakestagram/Credentials.swift create mode 100644 fakestagram/DataSource/Client.swift create mode 100644 fakestagram/DataSource/HttpResponse.swift create mode 100644 fakestagram/DataSource/StatusCode.swift diff --git a/fakestagram.xcodeproj/project.pbxproj b/fakestagram.xcodeproj/project.pbxproj index e876e02..39bdf3d 100644 --- a/fakestagram.xcodeproj/project.pbxproj +++ b/fakestagram.xcodeproj/project.pbxproj @@ -15,6 +15,10 @@ E084FAE6233A8735009AC50D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E084FAE4233A8735009AC50D /* LaunchScreen.storyboard */; }; E084FAF1233A8735009AC50D /* fakestagramTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E084FAF0233A8735009AC50D /* fakestagramTests.swift */; }; E084FAFC233A8888009AC50D /* PostsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E084FAFB233A8888009AC50D /* PostsTableViewController.swift */; }; + E0E8B9652348018200DA9D1A /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9642348018200DA9D1A /* Credentials.swift */; }; + E0E8B9682348036D00DA9D1A /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9672348036D00DA9D1A /* Client.swift */; }; + E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B96923481D5A00DA9D1A /* StatusCode.swift */; }; + E0E8B96C23481E1700DA9D1A /* HttpResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B96B23481E1700DA9D1A /* HttpResponse.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -40,6 +44,10 @@ E084FAF0233A8735009AC50D /* fakestagramTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = fakestagramTests.swift; sourceTree = ""; }; E084FAF2233A8735009AC50D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; E084FAFB233A8888009AC50D /* PostsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostsTableViewController.swift; sourceTree = ""; }; + E0E8B9642348018200DA9D1A /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; + E0E8B9672348036D00DA9D1A /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = ""; }; + E0E8B96923481D5A00DA9D1A /* StatusCode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusCode.swift; sourceTree = ""; }; + E0E8B96B23481E1700DA9D1A /* HttpResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HttpResponse.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -81,6 +89,7 @@ E084FAD8233A8734009AC50D /* fakestagram */ = { isa = PBXGroup; children = ( + E0E8B9662348035800DA9D1A /* DataSource */, E084FAD9233A8734009AC50D /* AppDelegate.swift */, E084FADB233A8734009AC50D /* SceneDelegate.swift */, E084FAFB233A8888009AC50D /* PostsTableViewController.swift */, @@ -89,6 +98,7 @@ E084FAE2233A8735009AC50D /* Assets.xcassets */, E084FAE4233A8735009AC50D /* LaunchScreen.storyboard */, E084FAE7233A8735009AC50D /* Info.plist */, + E0E8B9642348018200DA9D1A /* Credentials.swift */, ); path = fakestagram; sourceTree = ""; @@ -102,6 +112,16 @@ path = fakestagramTests; sourceTree = ""; }; + E0E8B9662348035800DA9D1A /* DataSource */ = { + isa = PBXGroup; + children = ( + E0E8B9672348036D00DA9D1A /* Client.swift */, + E0E8B96923481D5A00DA9D1A /* StatusCode.swift */, + E0E8B96B23481E1700DA9D1A /* HttpResponse.swift */, + ); + path = DataSource; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -203,8 +223,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */, E038FCED233FC78600E28571 /* PostViewController.swift in Sources */, E084FADA233A8734009AC50D /* AppDelegate.swift in Sources */, + E0E8B9682348036D00DA9D1A /* Client.swift in Sources */, + E0E8B96C23481E1700DA9D1A /* HttpResponse.swift in Sources */, + E0E8B9652348018200DA9D1A /* Credentials.swift in Sources */, E084FAFC233A8888009AC50D /* PostsTableViewController.swift in Sources */, E084FADC233A8734009AC50D /* SceneDelegate.swift in Sources */, ); diff --git a/fakestagram.xcodeproj/xcuserdata/luise.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/fakestagram.xcodeproj/xcuserdata/luise.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..d88cf55 --- /dev/null +++ b/fakestagram.xcodeproj/xcuserdata/luise.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + diff --git a/fakestagram/Credentials.swift b/fakestagram/Credentials.swift new file mode 100644 index 0000000..c8e8926 --- /dev/null +++ b/fakestagram/Credentials.swift @@ -0,0 +1,24 @@ +// +// Credentials.swift +// fakestagram +// +// Created by LuisE on 10/4/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +enum Credentials { + case apiToken + + func get() -> String? { + switch self { + case .apiToken: + return "f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e" + } + } + + func set(value: String) -> Bool { + return true + } +} diff --git a/fakestagram/DataSource/Client.swift b/fakestagram/DataSource/Client.swift new file mode 100644 index 0000000..08a7be7 --- /dev/null +++ b/fakestagram/DataSource/Client.swift @@ -0,0 +1,70 @@ +// +// Client.swift +// fakestagram +// +// Created by LuisE on 10/4/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +class Client { + let session: URLSession + let baseUrl: URL + let contentType: String + + init(session: URLSession, baseUrl: URL, contentType: String) { + self.session = session + self.baseUrl = baseUrl + self.contentType = contentType + } + + typealias successfulResponse = (Data?) -> Void + + func get(path: String, success: @escaping successfulResponse) { + request(method: "get", path: path, body: nil, success: success) + } + + func post(path: String, body: Data?, success: @escaping successfulResponse) { + request(method: "post", path: path, body: body, success: success) + } + + func put(path: String, body: Data?, success: @escaping successfulResponse) { + request(method: "put", path: path, body: body, success: success) + } + + func delete(path: String, success: @escaping successfulResponse) { + request(method: "delete", path: path, body: nil, success: success) + } + + private func request(method: String, path: String, body: Data?, success: @escaping successfulResponse) { + let req = buildRequest(method: method, path: path, body: body) + + session.dataTask(with: req) { (data, response, error) in + if let error = error { + debugPrint(error) + return + } + + let response = HttpResponse(response: response) + if response.isSuccessful() { + success(data) + } + }.resume() + } + + private func buildRequest(method: String, path: String, body: Data?) -> URLRequest { + var urlComponents = URLComponents(url: self.baseUrl, resolvingAgainstBaseURL: true)! + urlComponents.path = path + var request = URLRequest(url: urlComponents.url!) + request.setValue(contentType, forHTTPHeaderField: "Accept") + request.setValue(contentType, forHTTPHeaderField: "Content-Type") + request.httpMethod = method + if let token = Credentials.apiToken.get() { + request.addValue("Bearer \(token)", forHTTPHeaderField: "Authorization") + } + request.httpBody = body + + return request + } +} diff --git a/fakestagram/DataSource/HttpResponse.swift b/fakestagram/DataSource/HttpResponse.swift new file mode 100644 index 0000000..6ea1dfa --- /dev/null +++ b/fakestagram/DataSource/HttpResponse.swift @@ -0,0 +1,25 @@ +// +// HttpResponse.swift +// fakestagram +// +// Created by LuisE on 10/4/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +class HttpResponse { + let httpUrlResponse: HTTPURLResponse + + init(response: URLResponse?) { + self.httpUrlResponse = response as! HTTPURLResponse + } + + lazy var status: StatusCode = { + return StatusCode(rawValue: self.httpUrlResponse.statusCode) + }() + + func isSuccessful() -> Bool { + return status == StatusCode.success + } +} diff --git a/fakestagram/DataSource/StatusCode.swift b/fakestagram/DataSource/StatusCode.swift new file mode 100644 index 0000000..2432e92 --- /dev/null +++ b/fakestagram/DataSource/StatusCode.swift @@ -0,0 +1,36 @@ +// +// StatusCode.swift +// fakestagram +// +// Created by LuisE on 10/4/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +enum StatusCode: Int { + case unkown = 0 + case info + case success + case redirection + case clientError + case serverError + + public init(rawValue: Int) { + switch rawValue { + case 100, 101, 102: + self = .info + case 200, 201, 202, 203, 204, 205, 206, 207, 208, 226: + self = .success + case 300, 301, 302, 303, 304, 305, 306, 307, 308: + self = .redirection + case 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 426, 428, 429, 431, 451: + self = .clientError + case 500, 501, 502, 503, 504, 505, 506, 507, 510, 511: + self = .serverError + default: + self = .unkown + } + } +} From b235a3f66563b7befa0a22a1ba15860b9b962593 Mon Sep 17 00:00:00 2001 From: Luis Ezcurdia Razo Date: Sat, 5 Oct 2019 13:16:12 -0500 Subject: [PATCH 02/28] Implement RequestBuilder with TDD --- fakestagram.xcodeproj/project.pbxproj | 12 ++-- fakestagram/Credentials.swift | 4 +- fakestagram/DataSource/Client.swift | 50 ++++++++-------- fakestagram/DataSource/HttpResponse.swift | 6 +- fakestagram/DataSource/RequestBuilder.swift | 62 ++++++++++++++++++++ fakestagram/DataSource/StatusCode.swift | 2 +- fakestagramTests/RequestBuilderTests.swift | 65 +++++++++++++++++++++ fakestagramTests/fakestagramTests.swift | 34 ----------- 8 files changed, 165 insertions(+), 70 deletions(-) create mode 100644 fakestagram/DataSource/RequestBuilder.swift create mode 100644 fakestagramTests/RequestBuilderTests.swift delete mode 100644 fakestagramTests/fakestagramTests.swift diff --git a/fakestagram.xcodeproj/project.pbxproj b/fakestagram.xcodeproj/project.pbxproj index 39bdf3d..bc77121 100644 --- a/fakestagram.xcodeproj/project.pbxproj +++ b/fakestagram.xcodeproj/project.pbxproj @@ -13,12 +13,13 @@ E084FAE1233A8734009AC50D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E084FADF233A8734009AC50D /* Main.storyboard */; }; E084FAE3233A8735009AC50D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E084FAE2233A8735009AC50D /* Assets.xcassets */; }; E084FAE6233A8735009AC50D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E084FAE4233A8735009AC50D /* LaunchScreen.storyboard */; }; - E084FAF1233A8735009AC50D /* fakestagramTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E084FAF0233A8735009AC50D /* fakestagramTests.swift */; }; + E084FAF1233A8735009AC50D /* RequestBuilderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E084FAF0233A8735009AC50D /* RequestBuilderTests.swift */; }; E084FAFC233A8888009AC50D /* PostsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E084FAFB233A8888009AC50D /* PostsTableViewController.swift */; }; E0E8B9652348018200DA9D1A /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9642348018200DA9D1A /* Credentials.swift */; }; E0E8B9682348036D00DA9D1A /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9672348036D00DA9D1A /* Client.swift */; }; E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B96923481D5A00DA9D1A /* StatusCode.swift */; }; E0E8B96C23481E1700DA9D1A /* HttpResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B96B23481E1700DA9D1A /* HttpResponse.swift */; }; + E0E8B96E2348203B00DA9D1A /* RequestBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B96D2348203B00DA9D1A /* RequestBuilder.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -41,13 +42,14 @@ E084FAE5233A8735009AC50D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; E084FAE7233A8735009AC50D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; E084FAEC233A8735009AC50D /* fakestagramTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = fakestagramTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - E084FAF0233A8735009AC50D /* fakestagramTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = fakestagramTests.swift; sourceTree = ""; }; + E084FAF0233A8735009AC50D /* RequestBuilderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestBuilderTests.swift; sourceTree = ""; }; E084FAF2233A8735009AC50D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; E084FAFB233A8888009AC50D /* PostsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostsTableViewController.swift; sourceTree = ""; }; E0E8B9642348018200DA9D1A /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; E0E8B9672348036D00DA9D1A /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = ""; }; E0E8B96923481D5A00DA9D1A /* StatusCode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusCode.swift; sourceTree = ""; }; E0E8B96B23481E1700DA9D1A /* HttpResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HttpResponse.swift; sourceTree = ""; }; + E0E8B96D2348203B00DA9D1A /* RequestBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestBuilder.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -106,7 +108,7 @@ E084FAEF233A8735009AC50D /* fakestagramTests */ = { isa = PBXGroup; children = ( - E084FAF0233A8735009AC50D /* fakestagramTests.swift */, + E084FAF0233A8735009AC50D /* RequestBuilderTests.swift */, E084FAF2233A8735009AC50D /* Info.plist */, ); path = fakestagramTests; @@ -118,6 +120,7 @@ E0E8B9672348036D00DA9D1A /* Client.swift */, E0E8B96923481D5A00DA9D1A /* StatusCode.swift */, E0E8B96B23481E1700DA9D1A /* HttpResponse.swift */, + E0E8B96D2348203B00DA9D1A /* RequestBuilder.swift */, ); path = DataSource; sourceTree = ""; @@ -226,6 +229,7 @@ E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */, E038FCED233FC78600E28571 /* PostViewController.swift in Sources */, E084FADA233A8734009AC50D /* AppDelegate.swift in Sources */, + E0E8B96E2348203B00DA9D1A /* RequestBuilder.swift in Sources */, E0E8B9682348036D00DA9D1A /* Client.swift in Sources */, E0E8B96C23481E1700DA9D1A /* HttpResponse.swift in Sources */, E0E8B9652348018200DA9D1A /* Credentials.swift in Sources */, @@ -238,7 +242,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E084FAF1233A8735009AC50D /* fakestagramTests.swift in Sources */, + E084FAF1233A8735009AC50D /* RequestBuilderTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/fakestagram/Credentials.swift b/fakestagram/Credentials.swift index c8e8926..2e81160 100644 --- a/fakestagram/Credentials.swift +++ b/fakestagram/Credentials.swift @@ -10,14 +10,14 @@ import Foundation enum Credentials { case apiToken - + func get() -> String? { switch self { case .apiToken: return "f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e" } } - + func set(value: String) -> Bool { return true } diff --git a/fakestagram/DataSource/Client.swift b/fakestagram/DataSource/Client.swift index 08a7be7..2b9852a 100644 --- a/fakestagram/DataSource/Client.swift +++ b/fakestagram/DataSource/Client.swift @@ -9,62 +9,60 @@ import Foundation class Client { + static let fakestagram = Client(session: URLSession.shared, baseUrl: "https://fakestagram-api.herokuapp.com") let session: URLSession - let baseUrl: URL - let contentType: String - - init(session: URLSession, baseUrl: URL, contentType: String) { + let baseUrl: String + + init(session: URLSession, baseUrl: String) { self.session = session self.baseUrl = baseUrl - self.contentType = contentType } - + typealias successfulResponse = (Data?) -> Void - + func get(path: String, success: @escaping successfulResponse) { request(method: "get", path: path, body: nil, success: success) } - + func post(path: String, body: Data?, success: @escaping successfulResponse) { request(method: "post", path: path, body: body, success: success) } - + func put(path: String, body: Data?, success: @escaping successfulResponse) { request(method: "put", path: path, body: body, success: success) } - + func delete(path: String, success: @escaping successfulResponse) { request(method: "delete", path: path, body: nil, success: success) } - + private func request(method: String, path: String, body: Data?, success: @escaping successfulResponse) { - let req = buildRequest(method: method, path: path, body: body) - + guard let req = buildRequest(method: method, path: path, body: body) else { + debugPrint("Invalid request") + return + } + session.dataTask(with: req) { (data, response, error) in if let error = error { debugPrint(error) return } - + let response = HttpResponse(response: response) if response.isSuccessful() { success(data) } }.resume() } - - private func buildRequest(method: String, path: String, body: Data?) -> URLRequest { - var urlComponents = URLComponents(url: self.baseUrl, resolvingAgainstBaseURL: true)! - urlComponents.path = path - var request = URLRequest(url: urlComponents.url!) - request.setValue(contentType, forHTTPHeaderField: "Accept") - request.setValue(contentType, forHTTPHeaderField: "Content-Type") - request.httpMethod = method + + private func buildRequest(method: String, path: String, body: Data?) -> URLRequest? { + var builder = RequestBuilder(baseUrl: self.baseUrl) + builder.method = method + builder.path = path + builder.body = body if let token = Credentials.apiToken.get() { - request.addValue("Bearer \(token)", forHTTPHeaderField: "Authorization") + builder.headers = ["Authorization": "Bearer \(token)"] } - request.httpBody = body - - return request + return builder.request() } } diff --git a/fakestagram/DataSource/HttpResponse.swift b/fakestagram/DataSource/HttpResponse.swift index 6ea1dfa..cd7b4aa 100644 --- a/fakestagram/DataSource/HttpResponse.swift +++ b/fakestagram/DataSource/HttpResponse.swift @@ -10,15 +10,15 @@ import Foundation class HttpResponse { let httpUrlResponse: HTTPURLResponse - + init(response: URLResponse?) { self.httpUrlResponse = response as! HTTPURLResponse } - + lazy var status: StatusCode = { return StatusCode(rawValue: self.httpUrlResponse.statusCode) }() - + func isSuccessful() -> Bool { return status == StatusCode.success } diff --git a/fakestagram/DataSource/RequestBuilder.swift b/fakestagram/DataSource/RequestBuilder.swift new file mode 100644 index 0000000..0fb17dd --- /dev/null +++ b/fakestagram/DataSource/RequestBuilder.swift @@ -0,0 +1,62 @@ +// +// RequestBuilder.swift +// fakestagram +// +// Created by LuisE on 10/4/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +struct RequestBuilder { + enum ContentMode { + case jsonApp + + func accept() -> String { + switch self { + case .jsonApp: + return "application/json" + } + } + + func contentType() -> String { + switch self { + case .jsonApp: + return "application/json" + } + } + } + private let urlComponents: URLComponents + public var scheme: String = "https" + public var method: String = "get" + public var path: String = "/" + public var body: Data? + public var headers: [String: String]? + public var contentMode: ContentMode = .jsonApp + + init(baseUrl: String) { + self.urlComponents = URLComponents(string: baseUrl)! + } + + func url() -> URL? { + var comps = self.urlComponents + comps.scheme = scheme + comps.path = path + return comps.url + } + + func request() -> URLRequest? { + guard let url = url() else { return nil } + var req = URLRequest(url: url) + req.httpMethod = method + req.httpBody = body + req.addValue(contentMode.accept(), forHTTPHeaderField: "Accept") + req.addValue(contentMode.contentType(), forHTTPHeaderField: "Content-Type") + if let headers = self.headers { + for (key, value) in headers { + req.addValue(value, forHTTPHeaderField: key) + } + } + return req + } +} diff --git a/fakestagram/DataSource/StatusCode.swift b/fakestagram/DataSource/StatusCode.swift index 2432e92..cdc5e29 100644 --- a/fakestagram/DataSource/StatusCode.swift +++ b/fakestagram/DataSource/StatusCode.swift @@ -15,7 +15,7 @@ enum StatusCode: Int { case redirection case clientError case serverError - + public init(rawValue: Int) { switch rawValue { case 100, 101, 102: diff --git a/fakestagramTests/RequestBuilderTests.swift b/fakestagramTests/RequestBuilderTests.swift new file mode 100644 index 0000000..01606ed --- /dev/null +++ b/fakestagramTests/RequestBuilderTests.swift @@ -0,0 +1,65 @@ +// +// RequestBuilderTests.swift +// RequestBuilderTests +// +// Created by LuisE on 9/24/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import XCTest +@testable import fakestagram + +class RequestBuilderTests: XCTestCase { + func testBuildValidURL() { + var builder = RequestBuilder(baseUrl: "https://example.com/") + builder.path = "/api/v1/accounts" + XCTAssertEqual(builder.scheme, "https") + XCTAssertEqual(builder.method, "get") + XCTAssertEqual(builder.url(), URL(string: "https://example.com/api/v1/accounts")!) + } + + func testBuildInvalidURL() { + var builder = RequestBuilder(baseUrl: "example.com") + builder.path = "//@3`-" + XCTAssertNil(builder.url()) + } + + func testBuildForceSchemeURL() { + let builder = RequestBuilder(baseUrl: "http://example.com/") + XCTAssertEqual(builder.url(), URL(string: "https://example.com/")!) + } + + func testBuildOverrideSchemeURL() { + var builder = RequestBuilder(baseUrl: "http://example.com/") + builder.scheme = "ftp" + XCTAssertEqual(builder.url(), URL(string: "ftp://example.com/")!) + } + + func testBuildInvalidRequest() { + var builder = RequestBuilder(baseUrl: "example.com") + builder.path = "//@3`-" + XCTAssertNil(builder.request()) + } + + func testBuildValidRequest() { + var builder = RequestBuilder(baseUrl: "https://example.com/") + builder.path = "/api/v1/accounts" + builder.method = "post" + builder.body = "{\"a\": 1}".data(using: .utf8) + builder.headers = ["test": "example"] + + let result = builder.request() + XCTAssertNotNil(result) + XCTAssertEqual(result!.httpMethod!, "POST") + XCTAssertEqual(result!.httpBody!, "{\"a\": 1}".data(using: .utf8)) + XCTAssertEqual(result!.allHTTPHeaderFields!, ["Accept": "application/json", "Content-Type": "application/json", "test": "example"]) + } + + func testBuildValidRequestWithDefaults() { + let result = RequestBuilder(baseUrl: "https://example.com/").request() + XCTAssertNotNil(result) + XCTAssertEqual(result!.httpMethod!, "GET") + XCTAssertNil(result!.httpBody) + XCTAssertEqual(result!.allHTTPHeaderFields!, ["Accept": "application/json", "Content-Type": "application/json"]) + } +} diff --git a/fakestagramTests/fakestagramTests.swift b/fakestagramTests/fakestagramTests.swift deleted file mode 100644 index f022cfd..0000000 --- a/fakestagramTests/fakestagramTests.swift +++ /dev/null @@ -1,34 +0,0 @@ -// -// fakestagramTests.swift -// fakestagramTests -// -// Created by LuisE on 9/24/19. -// Copyright © 2019 3zcurdia. All rights reserved. -// - -import XCTest -@testable import fakestagram - -class fakestagramTests: XCTestCase { - - override func setUp() { - // Put setup code here. This method is called before the invocation of each test method in the class. - } - - override func tearDown() { - // Put teardown code here. This method is called after the invocation of each test method in the class. - } - - func testExample() { - // This is an example of a functional test case. - // Use XCTAssert and related functions to verify your tests produce the correct results. - } - - func testPerformanceExample() { - // This is an example of a performance test case. - self.measure { - // Put the code you want to measure the time of here. - } - } - -} From 55f061fe484554e7d5c55f8f6b119d9225c1c3b6 Mon Sep 17 00:00:00 2001 From: Luis Ezcurdia Razo Date: Fri, 11 Oct 2019 17:54:46 -0500 Subject: [PATCH 03/28] RestClient basic implementations --- fakestagram.xcodeproj/project.pbxproj | 30 +++++- fakestagram/DataSource/RestClient.swift | 99 +++++++++++++++++++ fakestagram/Models/Account.swift | 16 +++ fakestagram/Models/Post.swift | 38 +++++++ .../{DataSource => Network}/Client.swift | 0 .../HttpResponse.swift | 0 .../RequestBuilder.swift | 0 .../{DataSource => Network}/StatusCode.swift | 0 fakestagram/PostsTableViewController.swift | 28 ------ 9 files changed, 182 insertions(+), 29 deletions(-) create mode 100644 fakestagram/DataSource/RestClient.swift create mode 100644 fakestagram/Models/Account.swift create mode 100644 fakestagram/Models/Post.swift rename fakestagram/{DataSource => Network}/Client.swift (100%) rename fakestagram/{DataSource => Network}/HttpResponse.swift (100%) rename fakestagram/{DataSource => Network}/RequestBuilder.swift (100%) rename fakestagram/{DataSource => Network}/StatusCode.swift (100%) diff --git a/fakestagram.xcodeproj/project.pbxproj b/fakestagram.xcodeproj/project.pbxproj index bc77121..fb14047 100644 --- a/fakestagram.xcodeproj/project.pbxproj +++ b/fakestagram.xcodeproj/project.pbxproj @@ -20,6 +20,9 @@ E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B96923481D5A00DA9D1A /* StatusCode.swift */; }; E0E8B96C23481E1700DA9D1A /* HttpResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B96B23481E1700DA9D1A /* HttpResponse.swift */; }; E0E8B96E2348203B00DA9D1A /* RequestBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B96D2348203B00DA9D1A /* RequestBuilder.swift */; }; + E0E8B971234916D100DA9D1A /* RestClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B970234916D100DA9D1A /* RestClient.swift */; }; + E0E8B974234918FF00DA9D1A /* Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B973234918FF00DA9D1A /* Account.swift */; }; + E0E8B9762349197100DA9D1A /* Post.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9752349197100DA9D1A /* Post.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -50,6 +53,9 @@ E0E8B96923481D5A00DA9D1A /* StatusCode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusCode.swift; sourceTree = ""; }; E0E8B96B23481E1700DA9D1A /* HttpResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HttpResponse.swift; sourceTree = ""; }; E0E8B96D2348203B00DA9D1A /* RequestBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestBuilder.swift; sourceTree = ""; }; + E0E8B970234916D100DA9D1A /* RestClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestClient.swift; sourceTree = ""; }; + E0E8B973234918FF00DA9D1A /* Account.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Account.swift; sourceTree = ""; }; + E0E8B9752349197100DA9D1A /* Post.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Post.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -91,6 +97,8 @@ E084FAD8233A8734009AC50D /* fakestagram */ = { isa = PBXGroup; children = ( + E0E8B972234918ED00DA9D1A /* Models */, + E0E8B96F234916AA00DA9D1A /* Network */, E0E8B9662348035800DA9D1A /* DataSource */, E084FAD9233A8734009AC50D /* AppDelegate.swift */, E084FADB233A8734009AC50D /* SceneDelegate.swift */, @@ -115,6 +123,14 @@ sourceTree = ""; }; E0E8B9662348035800DA9D1A /* DataSource */ = { + isa = PBXGroup; + children = ( + E0E8B970234916D100DA9D1A /* RestClient.swift */, + ); + path = DataSource; + sourceTree = ""; + }; + E0E8B96F234916AA00DA9D1A /* Network */ = { isa = PBXGroup; children = ( E0E8B9672348036D00DA9D1A /* Client.swift */, @@ -122,7 +138,16 @@ E0E8B96B23481E1700DA9D1A /* HttpResponse.swift */, E0E8B96D2348203B00DA9D1A /* RequestBuilder.swift */, ); - path = DataSource; + path = Network; + sourceTree = ""; + }; + E0E8B972234918ED00DA9D1A /* Models */ = { + isa = PBXGroup; + children = ( + E0E8B973234918FF00DA9D1A /* Account.swift */, + E0E8B9752349197100DA9D1A /* Post.swift */, + ); + path = Models; sourceTree = ""; }; /* End PBXGroup section */ @@ -227,13 +252,16 @@ buildActionMask = 2147483647; files = ( E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */, + E0E8B974234918FF00DA9D1A /* Account.swift in Sources */, E038FCED233FC78600E28571 /* PostViewController.swift in Sources */, + E0E8B9762349197100DA9D1A /* Post.swift in Sources */, E084FADA233A8734009AC50D /* AppDelegate.swift in Sources */, E0E8B96E2348203B00DA9D1A /* RequestBuilder.swift in Sources */, E0E8B9682348036D00DA9D1A /* Client.swift in Sources */, E0E8B96C23481E1700DA9D1A /* HttpResponse.swift in Sources */, E0E8B9652348018200DA9D1A /* Credentials.swift in Sources */, E084FAFC233A8888009AC50D /* PostsTableViewController.swift in Sources */, + E0E8B971234916D100DA9D1A /* RestClient.swift in Sources */, E084FADC233A8734009AC50D /* SceneDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/fakestagram/DataSource/RestClient.swift b/fakestagram/DataSource/RestClient.swift new file mode 100644 index 0000000..473fba6 --- /dev/null +++ b/fakestagram/DataSource/RestClient.swift @@ -0,0 +1,99 @@ +// +// RestClient.swift +// fakestagram +// +// Created by LuisE on 10/5/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +class RestClient { + private let client: Client + let basePath: String + let encoder: JSONEncoder = { + let encoder = JSONEncoder() + encoder.keyEncodingStrategy = .convertToSnakeCase + return encoder + }() + + let decoder: JSONDecoder = { + let decoder = JSONDecoder() + decoder.keyDecodingStrategy = .convertFromSnakeCase + return decoder + }() + + init(client: Client, basePath: String) { + self.client = client + self.basePath = basePath + } + + // eg. POST /posts/ + func create(_ data: T, success: @escaping (T?) -> Void) { + let payload = try? encoder.encode(data) + client.post(path: basePath, body: payload) { [unowned self] data in + guard let data = data else { + success(nil) + return + } + do { + let json = try self.decoder.decode(T.self, from: data) + success(json) + } catch let err { + print("Invalid JSON format: \(err.localizedDescription)") + } + } + + } + + // eg. GET /posts/ + // eg. GET /posts/:id + func show(id: String, success: @escaping (T?) -> Void) { // aka read + client.get(path: "\(basePath)/\(id)") { [unowned self] data in + guard let data = data else { + success(nil) + return + } + do { + let json = try self.decoder.decode(T.self, from: data) + success(json) + } catch let err { + print("Invalid JSON format: \(err.localizedDescription)") + } + } + } + // eg. PUT /posts/:id + func update(id: String, data: T, success: @escaping (T?) -> Void) { + let payload = try? encoder.encode(data) + client.put(path: "\(basePath)/\(id)", body: payload) { [unowned self] data in + guard let data = data else { + success(nil) + return + } + do { + let json = try self.decoder.decode(T.self, from: data) + success(json) + } catch let err { + print("Invalid JSON format: \(err.localizedDescription)") + } + } + } + + + // eg. DELETE /posts/:id + func delete(id: String, success: @escaping (T?) -> Void) { + client.delete(path: "\(basePath)/\(id)") { [unowned self] data in + guard let data = data else { + success(nil) + return + } + do { + let json = try self.decoder.decode(T.self, from: data) + success(json) + } catch let err { + print("Invalid JSON format: \(err.localizedDescription)") + } + } + } + +} diff --git a/fakestagram/Models/Account.swift b/fakestagram/Models/Account.swift new file mode 100644 index 0000000..bb66fde --- /dev/null +++ b/fakestagram/Models/Account.swift @@ -0,0 +1,16 @@ +// +// Account.swift +// fakestagram +// +// Created by LuisE on 10/5/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +struct Account: Codable { + let id: String? + let name: String + let deviceNumber: String + let deviceModel: String +} diff --git a/fakestagram/Models/Post.swift b/fakestagram/Models/Post.swift new file mode 100644 index 0000000..c7e6397 --- /dev/null +++ b/fakestagram/Models/Post.swift @@ -0,0 +1,38 @@ +// +// Post.swift +// fakestagram +// +// Created by LuisE on 10/5/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation +import UIKit + +struct Post: Codable { + let id: Int? + let title: String + let imageUrl: String? + var likesCount: Int + var commentsCount: Int + let createdAt: String + var liked: Bool + let location: String + + func likesCountText() -> String { + return "\(likesCount) likes" + } + + func commentsCountText() -> String { + return "\(commentsCount) comments" + } + + func load(_ image: @escaping (UIImage) -> Void) { + guard let urlString = imageUrl, let url = URL(string: urlString) else { return } + DispatchQueue.global(qos: .background).async { + if let data = try? Data(contentsOf: url), let img = UIImage(data: data) { + DispatchQueue.main.async { image(img) } + } + } + } +} diff --git a/fakestagram/DataSource/Client.swift b/fakestagram/Network/Client.swift similarity index 100% rename from fakestagram/DataSource/Client.swift rename to fakestagram/Network/Client.swift diff --git a/fakestagram/DataSource/HttpResponse.swift b/fakestagram/Network/HttpResponse.swift similarity index 100% rename from fakestagram/DataSource/HttpResponse.swift rename to fakestagram/Network/HttpResponse.swift diff --git a/fakestagram/DataSource/RequestBuilder.swift b/fakestagram/Network/RequestBuilder.swift similarity index 100% rename from fakestagram/DataSource/RequestBuilder.swift rename to fakestagram/Network/RequestBuilder.swift diff --git a/fakestagram/DataSource/StatusCode.swift b/fakestagram/Network/StatusCode.swift similarity index 100% rename from fakestagram/DataSource/StatusCode.swift rename to fakestagram/Network/StatusCode.swift diff --git a/fakestagram/PostsTableViewController.swift b/fakestagram/PostsTableViewController.swift index 2bb0b63..7be52f3 100644 --- a/fakestagram/PostsTableViewController.swift +++ b/fakestagram/PostsTableViewController.swift @@ -8,34 +8,6 @@ import UIKit -struct Post: Codable { - let id: Int? - let title: String - let imageUrl: String? - var likesCount: Int - var commentsCount: Int - let createdAt: String - var liked: Bool - let location: String - - func likesCountText() -> String { - return "\(likesCount) likes" - } - - func commentsCountText() -> String { - return "\(commentsCount) comments" - } - - func load(_ image: @escaping (UIImage) -> Void) { - guard let urlString = imageUrl, let url = URL(string: urlString) else { return } - DispatchQueue.global(qos: .background).async { - if let data = try? Data(contentsOf: url), let img = UIImage(data: data) { - DispatchQueue.main.async { image(img) } - } - } - } -} - class PostsTableViewController: UITableViewController { static let cellId = "PostCell" var posts = [Post]() From ed41a35db1b86311165dd817498d70e708808278 Mon Sep 17 00:00:00 2001 From: Luis Ezcurdia Razo Date: Fri, 11 Oct 2019 18:04:28 -0500 Subject: [PATCH 04/28] Include gitignore into proyect --- .gitignore | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dffc1ac --- /dev/null +++ b/.gitignore @@ -0,0 +1,140 @@ + +# Created by https://www.gitignore.io/api/osx,swift,xcode,cocoapods +# Edit at https://www.gitignore.io/?templates=osx,swift,xcode,cocoapods + +### CocoaPods ### +## CocoaPods GitIgnore Template + +# CocoaPods - Only use to conserve bandwidth / Save time on Pushing +# - Also handy if you have a large number of dependant pods +# - AS PER https://guides.cocoapods.org/using/using-cocoapods.html NEVER IGNORE THE LOCK FILE +Pods/ + +### OSX ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Swift ### +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## Build generated +build/ +DerivedData/ + +## Various settings +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata/ + +## Other +*.moved-aside +*.xccheckout +*.xcscmblueprint + +## Obj-C/Swift specific +*.hmap +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +# Package.resolved +.build/ +# Add this line if you want to avoid checking in Xcode SPM integration. +# .swiftpm/xcode + +# CocoaPods +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build + +# Accio dependency management +Dependencies/ +.accio/ + +# fastlane +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) + +## Xcode Patch +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +/*.gcno + +### Xcode Patch ### +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.gitignore.io/api/osx,swift,xcode,cocoapods From 011a0d51a3988fa74363f1767aa551326332ec34 Mon Sep 17 00:00:00 2001 From: Luis Ezcurdia Razo Date: Fri, 11 Oct 2019 18:06:24 -0500 Subject: [PATCH 05/28] Add cocoapods with DVR pod --- Podfile | 13 +++ Podfile.lock | 16 +++ fakestagram.xcodeproj/project.pbxproj | 104 ++++++++++++++++++ .../contents.xcworkspacedata | 10 ++ 4 files changed, 143 insertions(+) create mode 100644 Podfile create mode 100644 Podfile.lock create mode 100644 fakestagram.xcworkspace/contents.xcworkspacedata diff --git a/Podfile b/Podfile new file mode 100644 index 0000000..9363ece --- /dev/null +++ b/Podfile @@ -0,0 +1,13 @@ +# Uncomment the next line to define a global platform for your project +platform :ios, '13.0' + +target 'fakestagram' do + # Comment the next line if you don't want to use dynamic frameworks + use_frameworks! + # Pods for fakestagram + + target 'fakestagramTests' do + inherit! :search_paths + pod 'DVR' + end +end diff --git a/Podfile.lock b/Podfile.lock new file mode 100644 index 0000000..918107b --- /dev/null +++ b/Podfile.lock @@ -0,0 +1,16 @@ +PODS: + - DVR (2.0.0) + +DEPENDENCIES: + - DVR + +SPEC REPOS: + trunk: + - DVR + +SPEC CHECKSUMS: + DVR: 062c287b9dc613a84120e44640176e4ef3ecf943 + +PODFILE CHECKSUM: 841e7401a398ccd6377f6b0c60295e943d9532bd + +COCOAPODS: 1.8.3 diff --git a/fakestagram.xcodeproj/project.pbxproj b/fakestagram.xcodeproj/project.pbxproj index fb14047..9e6d3cd 100644 --- a/fakestagram.xcodeproj/project.pbxproj +++ b/fakestagram.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 05D8E963168944918FFCC7FF /* Pods_fakestagram.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFAA8B9133CEE464C903FDF5 /* Pods_fakestagram.framework */; }; + D3D164DC7444072103DE027D /* Pods_fakestagramTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E669E31C92D68155914FC99D /* Pods_fakestagramTests.framework */; }; E038FCED233FC78600E28571 /* PostViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E038FCEC233FC78600E28571 /* PostViewController.swift */; }; E084FADA233A8734009AC50D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E084FAD9233A8734009AC50D /* AppDelegate.swift */; }; E084FADC233A8734009AC50D /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E084FADB233A8734009AC50D /* SceneDelegate.swift */; }; @@ -36,6 +38,10 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 5E0AE2BFBF9C8D81E583E1BE /* Pods-fakestagramTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-fakestagramTests.release.xcconfig"; path = "Target Support Files/Pods-fakestagramTests/Pods-fakestagramTests.release.xcconfig"; sourceTree = ""; }; + 66342726A6BCEEEF6289B1AA /* Pods-fakestagramTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-fakestagramTests.debug.xcconfig"; path = "Target Support Files/Pods-fakestagramTests/Pods-fakestagramTests.debug.xcconfig"; sourceTree = ""; }; + CCC6C6EA9D17CA169951A745 /* Pods-fakestagram.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-fakestagram.release.xcconfig"; path = "Target Support Files/Pods-fakestagram/Pods-fakestagram.release.xcconfig"; sourceTree = ""; }; + DB68F7FEC717545506064663 /* Pods-fakestagram.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-fakestagram.debug.xcconfig"; path = "Target Support Files/Pods-fakestagram/Pods-fakestagram.debug.xcconfig"; sourceTree = ""; }; E038FCEC233FC78600E28571 /* PostViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostViewController.swift; sourceTree = ""; }; E084FAD6233A8734009AC50D /* fakestagram.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = fakestagram.app; sourceTree = BUILT_PRODUCTS_DIR; }; E084FAD9233A8734009AC50D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -56,6 +62,8 @@ E0E8B970234916D100DA9D1A /* RestClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestClient.swift; sourceTree = ""; }; E0E8B973234918FF00DA9D1A /* Account.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Account.swift; sourceTree = ""; }; E0E8B9752349197100DA9D1A /* Post.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Post.swift; sourceTree = ""; }; + E669E31C92D68155914FC99D /* Pods_fakestagramTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_fakestagramTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FFAA8B9133CEE464C903FDF5 /* Pods_fakestagram.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_fakestagram.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -63,6 +71,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 05D8E963168944918FFCC7FF /* Pods_fakestagram.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -70,18 +79,33 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D3D164DC7444072103DE027D /* Pods_fakestagramTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 01A08896D7765C060714CF7E /* Pods */ = { + isa = PBXGroup; + children = ( + DB68F7FEC717545506064663 /* Pods-fakestagram.debug.xcconfig */, + CCC6C6EA9D17CA169951A745 /* Pods-fakestagram.release.xcconfig */, + 66342726A6BCEEEF6289B1AA /* Pods-fakestagramTests.debug.xcconfig */, + 5E0AE2BFBF9C8D81E583E1BE /* Pods-fakestagramTests.release.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; E084FACD233A8734009AC50D = { isa = PBXGroup; children = ( E084FAD8233A8734009AC50D /* fakestagram */, E084FAEF233A8735009AC50D /* fakestagramTests */, E084FAD7233A8734009AC50D /* Products */, + 01A08896D7765C060714CF7E /* Pods */, + E59E91806B162F48B9F21B96 /* Frameworks */, ); sourceTree = ""; }; @@ -150,6 +174,15 @@ path = Models; sourceTree = ""; }; + E59E91806B162F48B9F21B96 /* Frameworks */ = { + isa = PBXGroup; + children = ( + FFAA8B9133CEE464C903FDF5 /* Pods_fakestagram.framework */, + E669E31C92D68155914FC99D /* Pods_fakestagramTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -157,6 +190,7 @@ isa = PBXNativeTarget; buildConfigurationList = E084FAF5233A8735009AC50D /* Build configuration list for PBXNativeTarget "fakestagram" */; buildPhases = ( + 4AE804DBB1C330BBDB1A4587 /* [CP] Check Pods Manifest.lock */, E084FAD2233A8734009AC50D /* Sources */, E084FAD3233A8734009AC50D /* Frameworks */, E084FAD4233A8734009AC50D /* Resources */, @@ -174,9 +208,11 @@ isa = PBXNativeTarget; buildConfigurationList = E084FAF8233A8735009AC50D /* Build configuration list for PBXNativeTarget "fakestagramTests" */; buildPhases = ( + 9C7D5FC48E01207A73A3C357 /* [CP] Check Pods Manifest.lock */, E084FAE8233A8735009AC50D /* Sources */, E084FAE9233A8735009AC50D /* Frameworks */, E084FAEA233A8735009AC50D /* Resources */, + 7AA77609E4963F9B91BB29FB /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -246,6 +282,70 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 4AE804DBB1C330BBDB1A4587 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-fakestagram-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 7AA77609E4963F9B91BB29FB /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-fakestagramTests/Pods-fakestagramTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-fakestagramTests/Pods-fakestagramTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-fakestagramTests/Pods-fakestagramTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 9C7D5FC48E01207A73A3C357 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-fakestagramTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ E084FAD2233A8734009AC50D /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -420,6 +520,7 @@ }; E084FAF6233A8735009AC50D /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = DB68F7FEC717545506064663 /* Pods-fakestagram.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; @@ -438,6 +539,7 @@ }; E084FAF7233A8735009AC50D /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = CCC6C6EA9D17CA169951A745 /* Pods-fakestagram.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; @@ -456,6 +558,7 @@ }; E084FAF9233A8735009AC50D /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 66342726A6BCEEEF6289B1AA /* Pods-fakestagramTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -478,6 +581,7 @@ }; E084FAFA233A8735009AC50D /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 5E0AE2BFBF9C8D81E583E1BE /* Pods-fakestagramTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; diff --git a/fakestagram.xcworkspace/contents.xcworkspacedata b/fakestagram.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..666ee12 --- /dev/null +++ b/fakestagram.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + From 98023b8a3d25199de99620637be5fc12921e3cfd Mon Sep 17 00:00:00 2001 From: Luis Ezcurdia Razo Date: Fri, 11 Oct 2019 19:51:45 -0500 Subject: [PATCH 06/28] Add tests for RestClient and implement endpoints --- fakestagram.xcodeproj/project.pbxproj | 23 +- .../xcschemes/xcschememanagement.plist | 2 +- .../xcshareddata/IDEWorkspaceChecks.plist | 8 + fakestagram/DataSource/RestClient.swift | 12 +- fakestagramTests/RestClientTest.swift | 49 ++ .../casettes/posts.successful.json | 444 ++++++++++++++++++ .../casettes/show_post.successful.json | 57 +++ 7 files changed, 588 insertions(+), 7 deletions(-) create mode 100644 fakestagram.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 fakestagramTests/RestClientTest.swift create mode 100644 fakestagramTests/casettes/posts.successful.json create mode 100644 fakestagramTests/casettes/show_post.successful.json diff --git a/fakestagram.xcodeproj/project.pbxproj b/fakestagram.xcodeproj/project.pbxproj index 9e6d3cd..88fcd16 100644 --- a/fakestagram.xcodeproj/project.pbxproj +++ b/fakestagram.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 51; objects = { /* Begin PBXBuildFile section */ @@ -17,6 +17,9 @@ E084FAE6233A8735009AC50D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E084FAE4233A8735009AC50D /* LaunchScreen.storyboard */; }; E084FAF1233A8735009AC50D /* RequestBuilderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E084FAF0233A8735009AC50D /* RequestBuilderTests.swift */; }; E084FAFC233A8888009AC50D /* PostsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E084FAFB233A8888009AC50D /* PostsTableViewController.swift */; }; + E0C93E942351435100FD330C /* RestClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93E932351435100FD330C /* RestClientTest.swift */; }; + E0C93E9923514D8800FD330C /* posts.successful.json in Resources */ = {isa = PBXBuildFile; fileRef = E0C93E9823514D8800FD330C /* posts.successful.json */; }; + E0C93E9B23515A0400FD330C /* show_post.successful.json in Resources */ = {isa = PBXBuildFile; fileRef = E0C93E9A23515A0400FD330C /* show_post.successful.json */; }; E0E8B9652348018200DA9D1A /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9642348018200DA9D1A /* Credentials.swift */; }; E0E8B9682348036D00DA9D1A /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9672348036D00DA9D1A /* Client.swift */; }; E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B96923481D5A00DA9D1A /* StatusCode.swift */; }; @@ -54,6 +57,9 @@ E084FAF0233A8735009AC50D /* RequestBuilderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestBuilderTests.swift; sourceTree = ""; }; E084FAF2233A8735009AC50D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; E084FAFB233A8888009AC50D /* PostsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostsTableViewController.swift; sourceTree = ""; }; + E0C93E932351435100FD330C /* RestClientTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestClientTest.swift; sourceTree = ""; }; + E0C93E9823514D8800FD330C /* posts.successful.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = posts.successful.json; sourceTree = ""; }; + E0C93E9A23515A0400FD330C /* show_post.successful.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = show_post.successful.json; sourceTree = ""; }; E0E8B9642348018200DA9D1A /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; E0E8B9672348036D00DA9D1A /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = ""; }; E0E8B96923481D5A00DA9D1A /* StatusCode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusCode.swift; sourceTree = ""; }; @@ -94,7 +100,6 @@ 66342726A6BCEEEF6289B1AA /* Pods-fakestagramTests.debug.xcconfig */, 5E0AE2BFBF9C8D81E583E1BE /* Pods-fakestagramTests.release.xcconfig */, ); - name = Pods; path = Pods; sourceTree = ""; }; @@ -140,12 +145,23 @@ E084FAEF233A8735009AC50D /* fakestagramTests */ = { isa = PBXGroup; children = ( + E0C93E952351472A00FD330C /* casettes */, E084FAF0233A8735009AC50D /* RequestBuilderTests.swift */, + E0C93E932351435100FD330C /* RestClientTest.swift */, E084FAF2233A8735009AC50D /* Info.plist */, ); path = fakestagramTests; sourceTree = ""; }; + E0C93E952351472A00FD330C /* casettes */ = { + isa = PBXGroup; + children = ( + E0C93E9A23515A0400FD330C /* show_post.successful.json */, + E0C93E9823514D8800FD330C /* posts.successful.json */, + ); + path = casettes; + sourceTree = ""; + }; E0E8B9662348035800DA9D1A /* DataSource */ = { isa = PBXGroup; children = ( @@ -277,6 +293,8 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + E0C93E9923514D8800FD330C /* posts.successful.json in Resources */, + E0C93E9B23515A0400FD330C /* show_post.successful.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -370,6 +388,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + E0C93E942351435100FD330C /* RestClientTest.swift in Sources */, E084FAF1233A8735009AC50D /* RequestBuilderTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/fakestagram.xcodeproj/xcuserdata/luise.xcuserdatad/xcschemes/xcschememanagement.plist b/fakestagram.xcodeproj/xcuserdata/luise.xcuserdatad/xcschemes/xcschememanagement.plist index 53f76f5..f8df77c 100644 --- a/fakestagram.xcodeproj/xcuserdata/luise.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/fakestagram.xcodeproj/xcuserdata/luise.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ fakestagram.xcscheme_^#shared#^_ orderHint - 0 + 3 diff --git a/fakestagram.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/fakestagram.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/fakestagram.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/fakestagram/DataSource/RestClient.swift b/fakestagram/DataSource/RestClient.swift index 473fba6..205a86b 100644 --- a/fakestagram/DataSource/RestClient.swift +++ b/fakestagram/DataSource/RestClient.swift @@ -48,15 +48,19 @@ class RestClient { // eg. GET /posts/ // eg. GET /posts/:id - func show(id: String, success: @escaping (T?) -> Void) { // aka read - client.get(path: "\(basePath)/\(id)") { [unowned self] data in + func show(id: String? = nil, success: @escaping (T?) -> Void) { + var path = basePath + if let uid = id { + path += "/\(uid)" + } + client.get(path: path) { [unowned self] data in guard let data = data else { - success(nil) + DispatchQueue.main.async { success(nil) } return } do { let json = try self.decoder.decode(T.self, from: data) - success(json) + DispatchQueue.main.async { success(json) } } catch let err { print("Invalid JSON format: \(err.localizedDescription)") } diff --git a/fakestagramTests/RestClientTest.swift b/fakestagramTests/RestClientTest.swift new file mode 100644 index 0000000..e718a76 --- /dev/null +++ b/fakestagramTests/RestClientTest.swift @@ -0,0 +1,49 @@ +// +// RestClientTest.swift +// fakestagramTests +// +// Created by LuisE on 10/11/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import XCTest +import DVR +@testable import fakestagram + +class RestClientTest: XCTestCase { + + func testShowPosts() { + let session = Session(cassetteName: "posts.successful") + let client = Client(session: session, baseUrl: "https://fakestagram-api.herokuapp.com") + let restClient = RestClient<[Post]>(client: client, basePath: "/api/v1/posts") + let exp = expectation(description: "Successfull index posts") + + restClient.show() { posts in + exp.fulfill() + XCTAssertNotNil(posts) + XCTAssertEqual(posts!.count, 25) + XCTAssertEqual(posts!.first!.id, 228) + XCTAssertEqual(posts!.first!.title, "Example") + } + + waitForExpectations(timeout: 2, handler: nil) + } + + func testShowPost() { + let session = Session(cassetteName: "show_post.successful") + let client = Client(session: session, baseUrl: "https://fakestagram-api.herokuapp.com") + + let restClient = RestClient(client: client, basePath: "/api/v1/posts") + let exp = expectation(description: "Successfull index posts") + + restClient.show(id: "228") { post in + exp.fulfill() + XCTAssertNotNil(post) + XCTAssertEqual(post!.id, 228) + XCTAssertEqual(post!.title, "Example") + } + + waitForExpectations(timeout: 2, handler: nil) + } + +} diff --git a/fakestagramTests/casettes/posts.successful.json b/fakestagramTests/casettes/posts.successful.json new file mode 100644 index 0000000..24d2ccf --- /dev/null +++ b/fakestagramTests/casettes/posts.successful.json @@ -0,0 +1,444 @@ +{ + "interactions" : [ + { + "request" : { + "method" : "GET", + "headers" : { + "Content-Type" : "application\/json", + "Authorization" : "Bearer f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e", + "Accept" : "application\/json" + }, + "url" : "https:\/\/fakestagram-api.herokuapp.com\/api\/v1\/posts" + }, + "recorded_at" : 1570837975.1744719, + "response" : { + "url" : "https:\/\/fakestagram-api.herokuapp.com\/api\/v1\/posts", + "headers" : { + "Etag" : "W\/\"0d7dc5010941ab1928365db038e254f9\"", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains", + "X-Request-Id" : "f9b64a0a-2902-46c5-9355-feffcda2b924", + "Vary" : "Origin", + "X-Download-Options" : "noopen", + "Via" : "1.1 vegur", + "X-Permitted-Cross-Domain-Policies" : "none", + "X-Content-Type-Options" : "nosniff", + "Content-Length" : "0", + "X-Xss-Protection" : "1; mode=block", + "Connection" : "keep-alive", + "Cache-Control" : "max-age=0, private, must-revalidate", + "Content-Type" : "application\/json; charset=utf-8", + "X-Frame-Options" : "SAMEORIGIN", + "X-Runtime" : "0.087793", + "Referrer-Policy" : "strict-origin-when-cross-origin", + "Date" : "Fri, 11 Oct 2019 23:52:54 GMT", + "Transfer-Encoding" : "Identity", + "Server" : "Cowboy" + }, + "body" : [ + { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e", + "name" : "John Carney", + "avatar_url" : null + }, + "id" : 228, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZTA9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b668068c1f6252a77beacbd9313d8f4e078a400f\/4ed83e29-b955-4dc6-b5ee-eafd994e9de8", + "title" : "Example", + "created_at" : "2019-10-04T21:15:42.650Z", + "liked" : true, + "updated_at" : "2019-10-04T21:15:42.738Z", + "comments_count" : 0 + }, + { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e", + "name" : "John Carney", + "avatar_url" : null + }, + "id" : 227, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZWs9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--af591b63753c7a621bbaece3f99c79c9375551b4\/9b13eeaf-3a33-45d8-9f96-09506672ddf4", + "title" : "Example", + "created_at" : "2019-10-04T05:11:50.647Z", + "liked" : true, + "updated_at" : "2019-10-04T05:11:50.701Z", + "comments_count" : 0 + }, + { + "location" : "South San Francisco BART, Bart, South San Francisco, San Mateo County, California, 94014, USA", + "likes_count" : 0, + "author" : { + "id" : "26c0b0a1-6b04-4625-9d08-f8b348b968d6", + "name" : "Gerard Hane", + "avatar_url" : null + }, + "id" : 226, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZVk9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--a89eead659aa964493322d79f9f5cca4db18ff9d\/3340cca1-dd82-4c63-ba8f-3986bddbc500", + "title" : "1566158823894", + "created_at" : "2019-08-18T20:07:04.661Z", + "liked" : false, + "updated_at" : "2019-08-18T20:07:04.686Z", + "comments_count" : 0 + }, + { + "location" : "South San Francisco BART, Bart, South San Francisco, San Mateo County, California, 94014, USA", + "likes_count" : 0, + "author" : { + "id" : "26c0b0a1-6b04-4625-9d08-f8b348b968d6", + "name" : "Gerard Hane", + "avatar_url" : null + }, + "id" : 225, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZVU9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--0e22a6bc1f9e9477762e32356036134efd54eb55\/70bb725c-e86e-4430-b925-11c25718392a", + "title" : "1566158820509", + "created_at" : "2019-08-18T20:07:01.750Z", + "liked" : false, + "updated_at" : "2019-08-18T20:07:01.854Z", + "comments_count" : 0 + }, + { + "location" : "", + "likes_count" : 2, + "author" : { + "id" : "ababf2cd-0eb9-45b6-99e5-90de794f7860", + "name" : "Katelyn Sanford", + "avatar_url" : null + }, + "id" : 224, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZVE9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b927d8cd407bfb7f4e32dff66842cbce798e10a3\/78a88dea-8b8e-4d33-a633-5e492bc14842", + "title" : ":p", + "created_at" : "2019-08-11T20:17:49.826Z", + "liked" : false, + "updated_at" : "2019-08-11T20:17:49.895Z", + "comments_count" : 2 + }, + { + "location" : "", + "likes_count" : 1, + "author" : { + "id" : "9b590ebf-4875-4a83-8249-c6223e0d1a2a", + "name" : "Sammy Beier", + "avatar_url" : null + }, + "id" : 223, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZU09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--5726e694e2d04ec83ee589ff11293f8d4a49daf5\/3c7f898e-ae8d-410c-800d-20c590b8118e", + "title" : "1565393475188", + "created_at" : "2019-08-09T23:31:20.358Z", + "liked" : false, + "updated_at" : "2019-08-09T23:31:20.380Z", + "comments_count" : 1 + }, + { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "f9d53895-93f9-43c2-973e-ce47aadf6239", + "name" : "Arlinda Balistreri", + "avatar_url" : null + }, + "id" : 222, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZUk9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--3d89565f024de56af1b3d510d954b64e11593812\/0314b818-2096-4387-bcee-ed62594b013e", + "title" : "1565392767381", + "created_at" : "2019-08-09T23:19:30.715Z", + "liked" : false, + "updated_at" : "2019-08-09T23:19:30.737Z", + "comments_count" : 1 + }, + { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "f9d53895-93f9-43c2-973e-ce47aadf6239", + "name" : "Arlinda Balistreri", + "avatar_url" : null + }, + "id" : 221, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZUU9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--26a6cfcb28d63275d7d2e38cc19cc318106bc7a1\/74ee9a0c-3fd3-413f-9a05-ed56514f9b4c", + "title" : "1565392624022", + "created_at" : "2019-08-09T23:17:06.162Z", + "liked" : false, + "updated_at" : "2019-08-09T23:17:06.191Z", + "comments_count" : 4 + }, + { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "f9d53895-93f9-43c2-973e-ce47aadf6239", + "name" : "Arlinda Balistreri", + "avatar_url" : null + }, + "id" : 220, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZUE9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--84f7d1d7e2c9624478e486b85ef289101adff64b\/89fe9faf-dafb-4c44-9810-55f9dc1643f7", + "title" : "1565389845416", + "created_at" : "2019-08-09T22:30:45.562Z", + "liked" : false, + "updated_at" : "2019-08-09T22:30:45.589Z", + "comments_count" : 11 + }, + { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "f9d53895-93f9-43c2-973e-ce47aadf6239", + "name" : "Arlinda Balistreri", + "avatar_url" : null + }, + "id" : 219, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZDg9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--aa3dbf1922f86c5ab9f874710541abd83a10aa21\/8d34e2e6-d33d-4ac1-954b-b0c3e1403301", + "title" : "1565389827272", + "created_at" : "2019-08-09T22:30:27.612Z", + "liked" : false, + "updated_at" : "2019-08-09T22:30:27.633Z", + "comments_count" : 0 + }, + { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "f9d53895-93f9-43c2-973e-ce47aadf6239", + "name" : "Arlinda Balistreri", + "avatar_url" : null + }, + "id" : 218, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZDQ9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--9534d1e17eab3138685b2ae633f1fce2b3072fa3\/24f26bae-f215-499a-a985-ad1cca2168e3", + "title" : "1565387654424", + "created_at" : "2019-08-09T21:54:14.782Z", + "liked" : false, + "updated_at" : "2019-08-09T21:54:14.823Z", + "comments_count" : 0 + }, + { + "location" : "", + "likes_count" : 1, + "author" : { + "id" : "cb9a00b1-c23d-4dcd-84a3-0066cc930adc", + "name" : "Melvina DuBuque", + "avatar_url" : null + }, + "id" : 217, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZDA9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--ce6d7e4e61a3bad722d0b1ecc9d9c85a5d443782\/b077e3b9-7abd-4f01-a3d4-baaeaa03d035", + "title" : "1565284409539", + "created_at" : "2019-08-08T17:13:30.621Z", + "liked" : false, + "updated_at" : "2019-08-08T17:13:30.647Z", + "comments_count" : 0 + }, + { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "cb9a00b1-c23d-4dcd-84a3-0066cc930adc", + "name" : "Melvina DuBuque", + "avatar_url" : null + }, + "id" : 216, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZHc9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--5fd762895b481581889f8370850660961ac27ae2\/79075b3f-a2f6-4a28-8478-2b2024361b8f", + "title" : "1565284311613", + "created_at" : "2019-08-08T17:11:51.968Z", + "liked" : false, + "updated_at" : "2019-08-08T17:11:52.041Z", + "comments_count" : 0 + }, + { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "1a11b5ea-b450-478c-b968-6e4bf1724a27", + "name" : "Garth Hartmann", + "avatar_url" : null + }, + "id" : 215, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZHM9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--3aaf6ee04bf6e2e276af0a7542057df4bc859a9d\/b2f6db08-2257-4bd4-9371-e784c7dd3ef5", + "title" : "1565240319353", + "created_at" : "2019-08-08T04:58:39.800Z", + "liked" : false, + "updated_at" : "2019-08-08T04:58:39.871Z", + "comments_count" : 0 + }, + { + "location" : "Powell Street Station, Market Street, Union Square, San Francisco, San Francisco City and County, California, 94103-3124, USA", + "likes_count" : 0, + "author" : { + "id" : "44a51289-6d9e-4e27-8638-6d3102511ad8", + "name" : "Melanie Gaylord", + "avatar_url" : null + }, + "id" : 214, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZG89IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--475805cb649993f55820a95307fc1f7a80db3f4e\/71f1b9e0-f262-4261-ad1d-ece8046151ef", + "title" : "1565064895736", + "created_at" : "2019-08-06T04:14:56.879Z", + "liked" : false, + "updated_at" : "2019-08-06T04:14:56.920Z", + "comments_count" : 0 + }, + { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "90834f94-fd51-420a-b350-30851abf61d5", + "name" : "Belle Douglas", + "avatar_url" : null + }, + "id" : 213, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZGs9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--f5b051063503aadef9f0cd9a0723c12d2d627dde\/bc279b9d-2dce-49c6-9120-4e4b575f7a78", + "title" : "1565028839754", + "created_at" : "2019-08-05T18:14:00.016Z", + "liked" : false, + "updated_at" : "2019-08-05T18:14:00.078Z", + "comments_count" : 0 + }, + { + "location" : "Powell Street Station, Market Street, Union Square, San Francisco, San Francisco City and County, California, 94103-3124, USA", + "likes_count" : 0, + "author" : { + "id" : "44a51289-6d9e-4e27-8638-6d3102511ad8", + "name" : "Melanie Gaylord", + "avatar_url" : null + }, + "id" : 212, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZGc9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--ead89bde0e160956f51b9d5d7637c4ca1b8d5643\/3c16b6e2-838b-453e-87a8-c8e623efee6f", + "title" : "1564953882318", + "created_at" : "2019-08-04T21:24:43.366Z", + "liked" : false, + "updated_at" : "2019-08-04T21:24:43.424Z", + "comments_count" : 0 + }, + { + "location" : "Powell Street Station, Market Street, Union Square, San Francisco, San Francisco City and County, California, 94103-3124, USA", + "likes_count" : 1, + "author" : { + "id" : "44a51289-6d9e-4e27-8638-6d3102511ad8", + "name" : "Melanie Gaylord", + "avatar_url" : null + }, + "id" : 211, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZGM9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--aa53a5c71d2af02eb63f222e8f62666ac020626d\/70601715-1ce5-4886-8647-614a88acdc3e", + "title" : "1564938932927", + "created_at" : "2019-08-04T17:15:34.008Z", + "liked" : false, + "updated_at" : "2019-08-04T17:15:34.072Z", + "comments_count" : 0 + }, + { + "location" : "", + "likes_count" : 1, + "author" : { + "id" : "15e6a545-c5c7-4775-b3b3-f4c08622b7f8", + "name" : "Venessa Prosacco", + "avatar_url" : null + }, + "id" : 209, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZFE9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--677615c8da9ee16d4a2f2d04d71620345dad3dcb\/a37c2b48-53b0-4200-8ca4-0ab3c601c2be", + "title" : "No lo haga compa", + "created_at" : "2019-07-26T22:14:55.445Z", + "liked" : false, + "updated_at" : "2019-07-26T22:14:55.465Z", + "comments_count" : 2 + }, + { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "15e6a545-c5c7-4775-b3b3-f4c08622b7f8", + "name" : "Venessa Prosacco", + "avatar_url" : null + }, + "id" : 208, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZE09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--701845e2a532406662abd63bd9903cfb3d6fa427\/f56ff4ea-21aa-416f-9644-bbcc36c0a489", + "title" : "No lo haga compa", + "created_at" : "2019-07-26T22:14:48.407Z", + "liked" : false, + "updated_at" : "2019-07-26T22:14:48.472Z", + "comments_count" : 2 + }, + { + "location" : "Calle Durango, Condesa, Mexico City, Cuauhtémoc, Mexico City, 06140, Mexico", + "likes_count" : 0, + "author" : { + "id" : "3c06d9f5-9cc0-483e-a089-8bcc4c11c14e", + "name" : "Shenita Champlin", + "avatar_url" : null + }, + "id" : 207, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZEU9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b375a88531fce2fba8301e8f4d9cda92016317f6\/2a6c1b7a-16d8-4155-9825-e92a834f083a", + "title" : "1563810644322", + "created_at" : "2019-07-22T15:50:48.103Z", + "liked" : false, + "updated_at" : "2019-07-22T15:50:48.219Z", + "comments_count" : 1 + }, + { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "10b7accf-1817-4fe5-9674-8f7703220e96", + "name" : "Shonda Hammes", + "avatar_url" : null + }, + "id" : 206, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZEE9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--6b9c9e7a5919fc296349d7e0ba3eb327fab7e28d\/8be5a13a-b703-4e9d-bfa8-640969a1d03b", + "title" : "Las svm son chidas", + "created_at" : "2019-07-11T17:43:09.553Z", + "liked" : false, + "updated_at" : "2019-07-11T17:43:09.600Z", + "comments_count" : 0 + }, + { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "10b7accf-1817-4fe5-9674-8f7703220e96", + "name" : "Shonda Hammes", + "avatar_url" : null + }, + "id" : 205, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBYzg9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--9bd1e3affaa38a100b254bcc0ebfbd34697367ee\/5abbd134-50c2-4529-8474-64ad58de7383", + "title" : "Mr. Bean es mi pastor!", + "created_at" : "2019-07-11T17:40:58.360Z", + "liked" : false, + "updated_at" : "2019-07-11T17:40:58.429Z", + "comments_count" : 0 + }, + { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "10b7accf-1817-4fe5-9674-8f7703220e96", + "name" : "Shonda Hammes", + "avatar_url" : null + }, + "id" : 204, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZEk9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--f0193550348281afd2b2998b93997529e8ca4d16\/9b188868-6f6a-424d-b577-5bd8e99fff4c", + "title" : "Todos los del diplomado en las fiestas jajaja!", + "created_at" : "2019-07-10T23:46:37.725Z", + "liked" : false, + "updated_at" : "2019-07-23T01:22:34.916Z", + "comments_count" : 0 + }, + { + "location" : "", + "likes_count" : 1, + "author" : { + "id" : "519661d9-5f38-45dc-ba4e-ec3522aa128a", + "name" : "Lesley Funk", + "avatar_url" : null + }, + "id" : 203, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBY3M9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--954b1ccc1f0dcb9d061ac38009b43f0bd727b118\/83e80764-2bd6-40e7-b6a8-01c54af1dd84", + "title" : "1562190435299", + "created_at" : "2019-07-03T21:47:15.564Z", + "liked" : false, + "updated_at" : "2019-07-03T21:47:15.623Z", + "comments_count" : 1 + } + ], + "status" : 200 + } + } + ], + "name" : "posts.successful" +} diff --git a/fakestagramTests/casettes/show_post.successful.json b/fakestagramTests/casettes/show_post.successful.json new file mode 100644 index 0000000..03e91e1 --- /dev/null +++ b/fakestagramTests/casettes/show_post.successful.json @@ -0,0 +1,57 @@ +{ + "interactions" : [ + { + "response" : { + "status" : 200, + "body" : { + "location" : "", + "likes_count" : 0, + "author" : { + "id" : "f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e", + "name" : "John Carney", + "avatar_url" : null + }, + "id" : 228, + "image_url" : "https:\/\/fakestagram-api.herokuapp.com\/rails\/active_storage\/blobs\/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZTA9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b668068c1f6252a77beacbd9313d8f4e078a400f\/4ed83e29-b955-4dc6-b5ee-eafd994e9de8", + "title" : "Example", + "created_at" : "2019-10-04T21:15:42.650Z", + "liked" : false, + "updated_at" : "2019-10-04T21:15:42.738Z", + "comments_count" : 0 + }, + "headers" : { + "X-Permitted-Cross-Domain-Policies" : "none", + "Content-Type" : "application\/json; charset=utf-8", + "X-Request-Id" : "c6266b7f-6e74-4fc8-808c-6046b689f67f", + "Via" : "1.1 vegur", + "Cache-Control" : "max-age=0, private, must-revalidate", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains", + "Date" : "Sat, 12 Oct 2019 00:46:20 GMT", + "Transfer-Encoding" : "Identity", + "X-Xss-Protection" : "1; mode=block", + "Referrer-Policy" : "strict-origin-when-cross-origin", + "X-Download-Options" : "noopen", + "Server" : "Cowboy", + "X-Runtime" : "0.063186", + "Connection" : "keep-alive", + "Etag" : "W\/\"819b2d0fa0647c5c452d27fb77a8d11e\"", + "X-Frame-Options" : "SAMEORIGIN", + "Vary" : "Origin", + "X-Content-Type-Options" : "nosniff" + }, + "url" : "https:\/\/fakestagram-api.herokuapp.com\/api\/v1\/posts\/228" + }, + "request" : { + "headers" : { + "Accept" : "application\/json", + "Content-Type" : "application\/json", + "Authorization" : "Bearer f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e" + }, + "method" : "GET", + "url" : "https:\/\/fakestagram-api.herokuapp.com\/api\/v1\/posts\/228" + }, + "recorded_at" : 1570841180.898001 + } + ], + "name" : "show_post.successful" +} From 3f3389d004c3af2361f6e44787d323dd16cc4ec5 Mon Sep 17 00:00:00 2001 From: Ricardo Hernandez Date: Fri, 11 Oct 2019 20:22:58 -0500 Subject: [PATCH 07/28] files for Xcode10 --- .../project.pbxproj | 108 +++++++++++++++++ .../contents.xcworkspacedata | 10 ++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++ .../Fakestagram-Xcode10/Credentials.swift | 24 ++++ .../DataSource/RestClient.swift | 103 ++++++++++++++++ .../Fakestagram-Xcode10/Models/Account.swift | 16 +++ .../Fakestagram-Xcode10/Models/Post.swift | 38 ++++++ .../Fakestagram-Xcode10/Network/Client.swift | 68 +++++++++++ .../Network/HttpResponse.swift | 25 ++++ .../Network/RequestBuilder.swift | 62 ++++++++++ .../Network/StatusCode.swift | 36 ++++++ .../PostViewController.swift | 111 ++++++++++++++++++ Fakestagram-Xcode10/Podfile | 16 +++ Fakestagram-Xcode10/Podfile.lock | 16 +++ 14 files changed, 641 insertions(+) create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10.xcworkspace/contents.xcworkspacedata create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Credentials.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/DataSource/RestClient.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Models/Account.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Models/Post.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Network/Client.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Network/HttpResponse.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Network/RequestBuilder.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Network/StatusCode.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/PostViewController.swift create mode 100644 Fakestagram-Xcode10/Podfile create mode 100644 Fakestagram-Xcode10/Podfile.lock diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj index 01d56d3..4877122 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj @@ -7,12 +7,14 @@ objects = { /* Begin PBXBuildFile section */ + 42ADD56BE4D4255623EA9AEC /* Pods_Fakestagram_Xcode10Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC485714B1528A06F25D0EB3 /* Pods_Fakestagram_Xcode10Tests.framework */; }; 7701BEB1233F1B1B0004C30D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7701BEB0233F1B1B0004C30D /* AppDelegate.swift */; }; 7701BEB6233F1B1B0004C30D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7701BEB4233F1B1B0004C30D /* Main.storyboard */; }; 7701BEB8233F1B1C0004C30D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7701BEB7233F1B1C0004C30D /* Assets.xcassets */; }; 7701BEBB233F1B1C0004C30D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7701BEB9233F1B1C0004C30D /* LaunchScreen.storyboard */; }; 7701BEC6233F1B1C0004C30D /* Fakestagram_Xcode10Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7701BEC5233F1B1C0004C30D /* Fakestagram_Xcode10Tests.swift */; }; 7701BED1233F1B540004C30D /* PostsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7701BED0233F1B540004C30D /* PostsTableViewController.swift */; }; + F2AD903247DD33845EA3C7FB /* Pods_Fakestagram_Xcode10.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F32B394EBB804D9C3E14052 /* Pods_Fakestagram_Xcode10.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -26,6 +28,9 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 0FF38D441F0DD6993050E737 /* Pods-Fakestagram-Xcode10Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fakestagram-Xcode10Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-Fakestagram-Xcode10Tests/Pods-Fakestagram-Xcode10Tests.release.xcconfig"; sourceTree = ""; }; + 4C3E60F528DFC01A73C34495 /* Pods-Fakestagram-Xcode10.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fakestagram-Xcode10.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Fakestagram-Xcode10/Pods-Fakestagram-Xcode10.debug.xcconfig"; sourceTree = ""; }; + 658CC8D2CB4B6BE6E65EE461 /* Pods-Fakestagram-Xcode10.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fakestagram-Xcode10.release.xcconfig"; path = "Pods/Target Support Files/Pods-Fakestagram-Xcode10/Pods-Fakestagram-Xcode10.release.xcconfig"; sourceTree = ""; }; 7701BEAD233F1B1B0004C30D /* Fakestagram-Xcode10.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Fakestagram-Xcode10.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 7701BEB0233F1B1B0004C30D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7701BEB5233F1B1B0004C30D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; @@ -36,6 +41,9 @@ 7701BEC5233F1B1C0004C30D /* Fakestagram_Xcode10Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fakestagram_Xcode10Tests.swift; sourceTree = ""; }; 7701BEC7233F1B1C0004C30D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 7701BED0233F1B540004C30D /* PostsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostsTableViewController.swift; sourceTree = ""; }; + 7F32B394EBB804D9C3E14052 /* Pods_Fakestagram_Xcode10.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Fakestagram_Xcode10.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CC485714B1528A06F25D0EB3 /* Pods_Fakestagram_Xcode10Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Fakestagram_Xcode10Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DCED9AC22B8D6D07928F1A67 /* Pods-Fakestagram-Xcode10Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fakestagram-Xcode10Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Fakestagram-Xcode10Tests/Pods-Fakestagram-Xcode10Tests.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -43,6 +51,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + F2AD903247DD33845EA3C7FB /* Pods_Fakestagram_Xcode10.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -50,18 +59,41 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 42ADD56BE4D4255623EA9AEC /* Pods_Fakestagram_Xcode10Tests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 1E8E3DAADB2EC5DBC6F876A2 /* Pods */ = { + isa = PBXGroup; + children = ( + 4C3E60F528DFC01A73C34495 /* Pods-Fakestagram-Xcode10.debug.xcconfig */, + 658CC8D2CB4B6BE6E65EE461 /* Pods-Fakestagram-Xcode10.release.xcconfig */, + DCED9AC22B8D6D07928F1A67 /* Pods-Fakestagram-Xcode10Tests.debug.xcconfig */, + 0FF38D441F0DD6993050E737 /* Pods-Fakestagram-Xcode10Tests.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; + 669AAED6AAD6DCBC5277E44C /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7F32B394EBB804D9C3E14052 /* Pods_Fakestagram_Xcode10.framework */, + CC485714B1528A06F25D0EB3 /* Pods_Fakestagram_Xcode10Tests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 7701BEA4233F1B1B0004C30D = { isa = PBXGroup; children = ( 7701BEAF233F1B1B0004C30D /* Fakestagram-Xcode10 */, 7701BEC4233F1B1C0004C30D /* Fakestagram-Xcode10Tests */, 7701BEAE233F1B1B0004C30D /* Products */, + 1E8E3DAADB2EC5DBC6F876A2 /* Pods */, + 669AAED6AAD6DCBC5277E44C /* Frameworks */, ); sourceTree = ""; }; @@ -103,6 +135,7 @@ isa = PBXNativeTarget; buildConfigurationList = 7701BECA233F1B1C0004C30D /* Build configuration list for PBXNativeTarget "Fakestagram-Xcode10" */; buildPhases = ( + 02C45B087AA30EC392B7E149 /* [CP] Check Pods Manifest.lock */, 7701BEA9233F1B1B0004C30D /* Sources */, 7701BEAA233F1B1B0004C30D /* Frameworks */, 7701BEAB233F1B1B0004C30D /* Resources */, @@ -120,9 +153,11 @@ isa = PBXNativeTarget; buildConfigurationList = 7701BECD233F1B1C0004C30D /* Build configuration list for PBXNativeTarget "Fakestagram-Xcode10Tests" */; buildPhases = ( + 476D3405109D2C9C30434EAD /* [CP] Check Pods Manifest.lock */, 7701BEBD233F1B1C0004C30D /* Sources */, 7701BEBE233F1B1C0004C30D /* Frameworks */, 7701BEBF233F1B1C0004C30D /* Resources */, + BA0879C76D711A1732B47837 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -192,6 +227,75 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 02C45B087AA30EC392B7E149 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Fakestagram-Xcode10-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 476D3405109D2C9C30434EAD /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Fakestagram-Xcode10Tests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + BA0879C76D711A1732B47837 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-Fakestagram-Xcode10Tests/Pods-Fakestagram-Xcode10Tests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/DVR/DVR.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + ); + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DVR.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Fakestagram-Xcode10Tests/Pods-Fakestagram-Xcode10Tests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 7701BEA9233F1B1B0004C30D /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -358,6 +462,7 @@ }; 7701BECB233F1B1C0004C30D /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 4C3E60F528DFC01A73C34495 /* Pods-Fakestagram-Xcode10.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; @@ -376,6 +481,7 @@ }; 7701BECC233F1B1C0004C30D /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 658CC8D2CB4B6BE6E65EE461 /* Pods-Fakestagram-Xcode10.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; @@ -394,6 +500,7 @@ }; 7701BECE233F1B1C0004C30D /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = DCED9AC22B8D6D07928F1A67 /* Pods-Fakestagram-Xcode10Tests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -415,6 +522,7 @@ }; 7701BECF233F1B1C0004C30D /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 0FF38D441F0DD6993050E737 /* Pods-Fakestagram-Xcode10Tests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcworkspace/contents.xcworkspacedata b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..962f334 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Credentials.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Credentials.swift new file mode 100644 index 0000000..2e81160 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Credentials.swift @@ -0,0 +1,24 @@ +// +// Credentials.swift +// fakestagram +// +// Created by LuisE on 10/4/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +enum Credentials { + case apiToken + + func get() -> String? { + switch self { + case .apiToken: + return "f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e" + } + } + + func set(value: String) -> Bool { + return true + } +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/DataSource/RestClient.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/DataSource/RestClient.swift new file mode 100644 index 0000000..205a86b --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/DataSource/RestClient.swift @@ -0,0 +1,103 @@ +// +// RestClient.swift +// fakestagram +// +// Created by LuisE on 10/5/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +class RestClient { + private let client: Client + let basePath: String + let encoder: JSONEncoder = { + let encoder = JSONEncoder() + encoder.keyEncodingStrategy = .convertToSnakeCase + return encoder + }() + + let decoder: JSONDecoder = { + let decoder = JSONDecoder() + decoder.keyDecodingStrategy = .convertFromSnakeCase + return decoder + }() + + init(client: Client, basePath: String) { + self.client = client + self.basePath = basePath + } + + // eg. POST /posts/ + func create(_ data: T, success: @escaping (T?) -> Void) { + let payload = try? encoder.encode(data) + client.post(path: basePath, body: payload) { [unowned self] data in + guard let data = data else { + success(nil) + return + } + do { + let json = try self.decoder.decode(T.self, from: data) + success(json) + } catch let err { + print("Invalid JSON format: \(err.localizedDescription)") + } + } + + } + + // eg. GET /posts/ + // eg. GET /posts/:id + func show(id: String? = nil, success: @escaping (T?) -> Void) { + var path = basePath + if let uid = id { + path += "/\(uid)" + } + client.get(path: path) { [unowned self] data in + guard let data = data else { + DispatchQueue.main.async { success(nil) } + return + } + do { + let json = try self.decoder.decode(T.self, from: data) + DispatchQueue.main.async { success(json) } + } catch let err { + print("Invalid JSON format: \(err.localizedDescription)") + } + } + } + // eg. PUT /posts/:id + func update(id: String, data: T, success: @escaping (T?) -> Void) { + let payload = try? encoder.encode(data) + client.put(path: "\(basePath)/\(id)", body: payload) { [unowned self] data in + guard let data = data else { + success(nil) + return + } + do { + let json = try self.decoder.decode(T.self, from: data) + success(json) + } catch let err { + print("Invalid JSON format: \(err.localizedDescription)") + } + } + } + + + // eg. DELETE /posts/:id + func delete(id: String, success: @escaping (T?) -> Void) { + client.delete(path: "\(basePath)/\(id)") { [unowned self] data in + guard let data = data else { + success(nil) + return + } + do { + let json = try self.decoder.decode(T.self, from: data) + success(json) + } catch let err { + print("Invalid JSON format: \(err.localizedDescription)") + } + } + } + +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Models/Account.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Models/Account.swift new file mode 100644 index 0000000..bb66fde --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Models/Account.swift @@ -0,0 +1,16 @@ +// +// Account.swift +// fakestagram +// +// Created by LuisE on 10/5/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +struct Account: Codable { + let id: String? + let name: String + let deviceNumber: String + let deviceModel: String +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Models/Post.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Models/Post.swift new file mode 100644 index 0000000..c7e6397 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Models/Post.swift @@ -0,0 +1,38 @@ +// +// Post.swift +// fakestagram +// +// Created by LuisE on 10/5/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation +import UIKit + +struct Post: Codable { + let id: Int? + let title: String + let imageUrl: String? + var likesCount: Int + var commentsCount: Int + let createdAt: String + var liked: Bool + let location: String + + func likesCountText() -> String { + return "\(likesCount) likes" + } + + func commentsCountText() -> String { + return "\(commentsCount) comments" + } + + func load(_ image: @escaping (UIImage) -> Void) { + guard let urlString = imageUrl, let url = URL(string: urlString) else { return } + DispatchQueue.global(qos: .background).async { + if let data = try? Data(contentsOf: url), let img = UIImage(data: data) { + DispatchQueue.main.async { image(img) } + } + } + } +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/Client.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/Client.swift new file mode 100644 index 0000000..2b9852a --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/Client.swift @@ -0,0 +1,68 @@ +// +// Client.swift +// fakestagram +// +// Created by LuisE on 10/4/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +class Client { + static let fakestagram = Client(session: URLSession.shared, baseUrl: "https://fakestagram-api.herokuapp.com") + let session: URLSession + let baseUrl: String + + init(session: URLSession, baseUrl: String) { + self.session = session + self.baseUrl = baseUrl + } + + typealias successfulResponse = (Data?) -> Void + + func get(path: String, success: @escaping successfulResponse) { + request(method: "get", path: path, body: nil, success: success) + } + + func post(path: String, body: Data?, success: @escaping successfulResponse) { + request(method: "post", path: path, body: body, success: success) + } + + func put(path: String, body: Data?, success: @escaping successfulResponse) { + request(method: "put", path: path, body: body, success: success) + } + + func delete(path: String, success: @escaping successfulResponse) { + request(method: "delete", path: path, body: nil, success: success) + } + + private func request(method: String, path: String, body: Data?, success: @escaping successfulResponse) { + guard let req = buildRequest(method: method, path: path, body: body) else { + debugPrint("Invalid request") + return + } + + session.dataTask(with: req) { (data, response, error) in + if let error = error { + debugPrint(error) + return + } + + let response = HttpResponse(response: response) + if response.isSuccessful() { + success(data) + } + }.resume() + } + + private func buildRequest(method: String, path: String, body: Data?) -> URLRequest? { + var builder = RequestBuilder(baseUrl: self.baseUrl) + builder.method = method + builder.path = path + builder.body = body + if let token = Credentials.apiToken.get() { + builder.headers = ["Authorization": "Bearer \(token)"] + } + return builder.request() + } +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/HttpResponse.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/HttpResponse.swift new file mode 100644 index 0000000..cd7b4aa --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/HttpResponse.swift @@ -0,0 +1,25 @@ +// +// HttpResponse.swift +// fakestagram +// +// Created by LuisE on 10/4/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +class HttpResponse { + let httpUrlResponse: HTTPURLResponse + + init(response: URLResponse?) { + self.httpUrlResponse = response as! HTTPURLResponse + } + + lazy var status: StatusCode = { + return StatusCode(rawValue: self.httpUrlResponse.statusCode) + }() + + func isSuccessful() -> Bool { + return status == StatusCode.success + } +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/RequestBuilder.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/RequestBuilder.swift new file mode 100644 index 0000000..0fb17dd --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/RequestBuilder.swift @@ -0,0 +1,62 @@ +// +// RequestBuilder.swift +// fakestagram +// +// Created by LuisE on 10/4/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +struct RequestBuilder { + enum ContentMode { + case jsonApp + + func accept() -> String { + switch self { + case .jsonApp: + return "application/json" + } + } + + func contentType() -> String { + switch self { + case .jsonApp: + return "application/json" + } + } + } + private let urlComponents: URLComponents + public var scheme: String = "https" + public var method: String = "get" + public var path: String = "/" + public var body: Data? + public var headers: [String: String]? + public var contentMode: ContentMode = .jsonApp + + init(baseUrl: String) { + self.urlComponents = URLComponents(string: baseUrl)! + } + + func url() -> URL? { + var comps = self.urlComponents + comps.scheme = scheme + comps.path = path + return comps.url + } + + func request() -> URLRequest? { + guard let url = url() else { return nil } + var req = URLRequest(url: url) + req.httpMethod = method + req.httpBody = body + req.addValue(contentMode.accept(), forHTTPHeaderField: "Accept") + req.addValue(contentMode.contentType(), forHTTPHeaderField: "Content-Type") + if let headers = self.headers { + for (key, value) in headers { + req.addValue(value, forHTTPHeaderField: key) + } + } + return req + } +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/StatusCode.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/StatusCode.swift new file mode 100644 index 0000000..cdc5e29 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/StatusCode.swift @@ -0,0 +1,36 @@ +// +// StatusCode.swift +// fakestagram +// +// Created by LuisE on 10/4/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +enum StatusCode: Int { + case unkown = 0 + case info + case success + case redirection + case clientError + case serverError + + public init(rawValue: Int) { + switch rawValue { + case 100, 101, 102: + self = .info + case 200, 201, 202, 203, 204, 205, 206, 207, 208, 226: + self = .success + case 300, 301, 302, 303, 304, 305, 306, 307, 308: + self = .redirection + case 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 426, 428, 429, 431, 451: + self = .clientError + case 500, 501, 502, 503, 504, 505, 506, 507, 510, 511: + self = .serverError + default: + self = .unkown + } + } +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/PostViewController.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostViewController.swift new file mode 100644 index 0000000..dc0887e --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostViewController.swift @@ -0,0 +1,111 @@ +// +// PostViewController.swift +// fakestagram +// +// Created by LuisE on 9/28/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import UIKit + +struct Author: Codable { + let name: String +} +struct Comment: Codable { + let content: String + let author: Author? +} +struct Like: Codable { + let author: Author +} + +class PostViewController: UIViewController { + var post: Post? { + didSet { + updatePostView() + } + } + @IBOutlet weak var imageView: UIImageView! + + override func viewDidLoad() { + super.viewDidLoad() + updatePostView() + loadComments { comments in + debugPrint(comments) + } + + // Do any additional setup after loading the view. + } + + func updatePostView() { + guard let post = post else { return } + post.load { img in + DispatchQueue.main.async { + self.imageView.image = img + } + } + } + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + func loadComments(successful: @escaping ([Comment]) -> Void) { + guard let uwrappedPost = post, let postId = uwrappedPost.id else { return } + let url = URL(string: "https://fakestagram-api.herokuapp.com/api/v1/posts/\(postId)/comments")! + var request = URLRequest(url: url) + request.setValue("application/json", forHTTPHeaderField: "Accept") + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpMethod = "get" + request.addValue("Bearer f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e", forHTTPHeaderField: "Authorization") + + let task = URLSession.shared.dataTask(with: request) { (data, _, error) in + if error != nil || data == nil { + return + } + // get status code + + let decoder = JSONDecoder() + decoder.keyDecodingStrategy = .convertFromSnakeCase + do { + guard let data = data else { print("Empty response"); return } + let json = try decoder.decode([Comment].self, from: data) + successful(json) + } catch let err { + print("Unable to parse successfull response: \(err.localizedDescription)") + } + } + task.resume() + } + + func loadLikes(successful: @escaping ([Like]) -> Void) { + guard let uwrappedPost = post, let postId = uwrappedPost.id else { return } + let url = URL(string: "https://fakestagram-api.herokuapp.com/api/v1/posts/\(postId)/likes")! + var request = URLRequest(url: url) + request.setValue("application/json", forHTTPHeaderField: "Accept") + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpMethod = "get" + request.addValue("Bearer f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e", forHTTPHeaderField: "Authorization") + + let task = URLSession.shared.dataTask(with: request) { (data, _, error) in + if error != nil || data == nil { + return + } + let decoder = JSONDecoder() + decoder.keyDecodingStrategy = .convertFromSnakeCase + do { + guard let data = data else { print("Empty response"); return } + let json = try decoder.decode([Like].self, from: data) + successful(json) + } catch let err { + print("Unable to parse successfull response: \(err.localizedDescription)") + } + } + task.resume() + } +} diff --git a/Fakestagram-Xcode10/Podfile b/Fakestagram-Xcode10/Podfile new file mode 100644 index 0000000..84483e5 --- /dev/null +++ b/Fakestagram-Xcode10/Podfile @@ -0,0 +1,16 @@ +# Uncomment the next line to define a global platform for your project +# platform :ios, '9.0' + +target 'Fakestagram-Xcode10' do + # Comment the next line if you're not using Swift and don't want to use dynamic frameworks + use_frameworks! + + # Pods for Fakestagram-Xcode10 + + target 'Fakestagram-Xcode10Tests' do + inherit! :search_paths + # Pods for testing +pod 'DVR' + end + +end diff --git a/Fakestagram-Xcode10/Podfile.lock b/Fakestagram-Xcode10/Podfile.lock new file mode 100644 index 0000000..1e8c881 --- /dev/null +++ b/Fakestagram-Xcode10/Podfile.lock @@ -0,0 +1,16 @@ +PODS: + - DVR (2.0.0) + +DEPENDENCIES: + - DVR + +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - DVR + +SPEC CHECKSUMS: + DVR: 062c287b9dc613a84120e44640176e4ef3ecf943 + +PODFILE CHECKSUM: d9d5d9d01e457a56ba65f895a35d12a493621452 + +COCOAPODS: 1.5.3 From 5335fa498cc5495b7616c163b10ca95d4e49a932 Mon Sep 17 00:00:00 2001 From: Luis Ezcurdia Razo Date: Fri, 11 Oct 2019 20:24:58 -0500 Subject: [PATCH 08/28] Refactor by implementing serializer --- fakestagram.xcodeproj/project.pbxproj | 4 ++ .../DataSource/CodableSerializer.swift | 35 ++++++++++ fakestagram/DataSource/RestClient.swift | 65 +++---------------- fakestagramTests/RestClientTest.swift | 10 ++- 4 files changed, 53 insertions(+), 61 deletions(-) create mode 100644 fakestagram/DataSource/CodableSerializer.swift diff --git a/fakestagram.xcodeproj/project.pbxproj b/fakestagram.xcodeproj/project.pbxproj index 88fcd16..53113d8 100644 --- a/fakestagram.xcodeproj/project.pbxproj +++ b/fakestagram.xcodeproj/project.pbxproj @@ -20,6 +20,7 @@ E0C93E942351435100FD330C /* RestClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93E932351435100FD330C /* RestClientTest.swift */; }; E0C93E9923514D8800FD330C /* posts.successful.json in Resources */ = {isa = PBXBuildFile; fileRef = E0C93E9823514D8800FD330C /* posts.successful.json */; }; E0C93E9B23515A0400FD330C /* show_post.successful.json in Resources */ = {isa = PBXBuildFile; fileRef = E0C93E9A23515A0400FD330C /* show_post.successful.json */; }; + E0C93E9D23515CEE00FD330C /* CodableSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93E9C23515CEE00FD330C /* CodableSerializer.swift */; }; E0E8B9652348018200DA9D1A /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9642348018200DA9D1A /* Credentials.swift */; }; E0E8B9682348036D00DA9D1A /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9672348036D00DA9D1A /* Client.swift */; }; E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B96923481D5A00DA9D1A /* StatusCode.swift */; }; @@ -60,6 +61,7 @@ E0C93E932351435100FD330C /* RestClientTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestClientTest.swift; sourceTree = ""; }; E0C93E9823514D8800FD330C /* posts.successful.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = posts.successful.json; sourceTree = ""; }; E0C93E9A23515A0400FD330C /* show_post.successful.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = show_post.successful.json; sourceTree = ""; }; + E0C93E9C23515CEE00FD330C /* CodableSerializer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodableSerializer.swift; sourceTree = ""; }; E0E8B9642348018200DA9D1A /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; E0E8B9672348036D00DA9D1A /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = ""; }; E0E8B96923481D5A00DA9D1A /* StatusCode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusCode.swift; sourceTree = ""; }; @@ -166,6 +168,7 @@ isa = PBXGroup; children = ( E0E8B970234916D100DA9D1A /* RestClient.swift */, + E0C93E9C23515CEE00FD330C /* CodableSerializer.swift */, ); path = DataSource; sourceTree = ""; @@ -372,6 +375,7 @@ E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */, E0E8B974234918FF00DA9D1A /* Account.swift in Sources */, E038FCED233FC78600E28571 /* PostViewController.swift in Sources */, + E0C93E9D23515CEE00FD330C /* CodableSerializer.swift in Sources */, E0E8B9762349197100DA9D1A /* Post.swift in Sources */, E084FADA233A8734009AC50D /* AppDelegate.swift in Sources */, E0E8B96E2348203B00DA9D1A /* RequestBuilder.swift in Sources */, diff --git a/fakestagram/DataSource/CodableSerializer.swift b/fakestagram/DataSource/CodableSerializer.swift new file mode 100644 index 0000000..a6aedf1 --- /dev/null +++ b/fakestagram/DataSource/CodableSerializer.swift @@ -0,0 +1,35 @@ +// +// CodableSerializer.swift +// fakestagram +// +// Created by LuisE on 10/11/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +class CodableSerializer { + let data: Data? + let decoder: JSONDecoder = { + let decoder = JSONDecoder() + decoder.keyDecodingStrategy = .convertFromSnakeCase + return decoder + }() + + init(data: Data?) { + self.data = data + } + + func async(result: @escaping (T?) -> Void) { + guard let data = data else { + DispatchQueue.main.async { result(nil) } + return + } + do { + let json = try decoder.decode(T.self, from: data) + DispatchQueue.main.async { result(json) } + } catch let err { + print("Invalid JSON format: \(err.localizedDescription)") + } + } +} diff --git a/fakestagram/DataSource/RestClient.swift b/fakestagram/DataSource/RestClient.swift index 205a86b..f22198a 100644 --- a/fakestagram/DataSource/RestClient.swift +++ b/fakestagram/DataSource/RestClient.swift @@ -17,12 +17,6 @@ class RestClient { return encoder }() - let decoder: JSONDecoder = { - let decoder = JSONDecoder() - decoder.keyDecodingStrategy = .convertFromSnakeCase - return decoder - }() - init(client: Client, basePath: String) { self.client = client self.basePath = basePath @@ -31,19 +25,9 @@ class RestClient { // eg. POST /posts/ func create(_ data: T, success: @escaping (T?) -> Void) { let payload = try? encoder.encode(data) - client.post(path: basePath, body: payload) { [unowned self] data in - guard let data = data else { - success(nil) - return - } - do { - let json = try self.decoder.decode(T.self, from: data) - success(json) - } catch let err { - print("Invalid JSON format: \(err.localizedDescription)") - } - } - + client.post(path: basePath, body: payload) { data in + CodableSerializer(data: data).async(result: success) + } } // eg. GET /posts/ @@ -53,51 +37,22 @@ class RestClient { if let uid = id { path += "/\(uid)" } - client.get(path: path) { [unowned self] data in - guard let data = data else { - DispatchQueue.main.async { success(nil) } - return - } - do { - let json = try self.decoder.decode(T.self, from: data) - DispatchQueue.main.async { success(json) } - } catch let err { - print("Invalid JSON format: \(err.localizedDescription)") - } + client.get(path: path) { data in + CodableSerializer(data: data).async(result: success) } } // eg. PUT /posts/:id func update(id: String, data: T, success: @escaping (T?) -> Void) { let payload = try? encoder.encode(data) - client.put(path: "\(basePath)/\(id)", body: payload) { [unowned self] data in - guard let data = data else { - success(nil) - return - } - do { - let json = try self.decoder.decode(T.self, from: data) - success(json) - } catch let err { - print("Invalid JSON format: \(err.localizedDescription)") - } + client.put(path: "\(basePath)/\(id)", body: payload) { data in + CodableSerializer(data: data).async(result: success) } } - // eg. DELETE /posts/:id func delete(id: String, success: @escaping (T?) -> Void) { - client.delete(path: "\(basePath)/\(id)") { [unowned self] data in - guard let data = data else { - success(nil) - return - } - do { - let json = try self.decoder.decode(T.self, from: data) - success(json) - } catch let err { - print("Invalid JSON format: \(err.localizedDescription)") - } - } + client.delete(path: "\(basePath)/\(id)") { data in + CodableSerializer(data: data).async(result: success) + } } - } diff --git a/fakestagramTests/RestClientTest.swift b/fakestagramTests/RestClientTest.swift index e718a76..9ed3fc0 100644 --- a/fakestagramTests/RestClientTest.swift +++ b/fakestagramTests/RestClientTest.swift @@ -11,14 +11,13 @@ import DVR @testable import fakestagram class RestClientTest: XCTestCase { - func testShowPosts() { let session = Session(cassetteName: "posts.successful") let client = Client(session: session, baseUrl: "https://fakestagram-api.herokuapp.com") let restClient = RestClient<[Post]>(client: client, basePath: "/api/v1/posts") let exp = expectation(description: "Successfull index posts") - - restClient.show() { posts in + + restClient.show { posts in exp.fulfill() XCTAssertNotNil(posts) XCTAssertEqual(posts!.count, 25) @@ -32,10 +31,10 @@ class RestClientTest: XCTestCase { func testShowPost() { let session = Session(cassetteName: "show_post.successful") let client = Client(session: session, baseUrl: "https://fakestagram-api.herokuapp.com") - + let restClient = RestClient(client: client, basePath: "/api/v1/posts") let exp = expectation(description: "Successfull index posts") - + restClient.show(id: "228") { post in exp.fulfill() XCTAssertNotNil(post) @@ -45,5 +44,4 @@ class RestClientTest: XCTestCase { waitForExpectations(timeout: 2, handler: nil) } - } From 378530dd6f9390b59bd3d1528342b906e47ef1fb Mon Sep 17 00:00:00 2001 From: Ricardo Hernandez Date: Sat, 12 Oct 2019 10:07:09 -0500 Subject: [PATCH 09/28] Uploading --- .../Fakestagram-Xcode10/Credentials.swift | 10 +-- .../DataSource/CodableSerializer.swift | 35 ++++++++ .../DataSource/RestClient.swift | 79 ++++-------------- .../{Models => Model}/Account.swift | 6 +- .../{Models => Model}/Post.swift | 12 +-- .../Fakestagram-Xcode10/Network/Client.swift | 28 +++---- .../Network/HttpResponse.swift | 12 +-- .../Network/RequestBuilder.swift | 16 ++-- .../Fakestagram-Xcode10/Network/Sat.swift | 10 +++ .../Network/StatusCode.swift | 34 ++++---- .../PostViewController.swift | 36 ++++----- .../PostsTableViewController.swift | 80 ++++++------------- .../RequestBuilderTest.swift | 33 ++++++++ .../RestClientTest.swift | 33 ++++++++ 14 files changed, 230 insertions(+), 194 deletions(-) create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/DataSource/CodableSerializer.swift rename Fakestagram-Xcode10/Fakestagram-Xcode10/{Models => Model}/Account.swift (58%) rename Fakestagram-Xcode10/Fakestagram-Xcode10/{Models => Model}/Post.swift (85%) create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Network/Sat.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RequestBuilderTest.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RestClientTest.swift diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Credentials.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Credentials.swift index 2e81160..8e1f642 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/Credentials.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Credentials.swift @@ -1,23 +1,23 @@ // // Credentials.swift -// fakestagram +// Fakestagram-Xcode10 // -// Created by LuisE on 10/4/19. -// Copyright © 2019 3zcurdia. All rights reserved. +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. // import Foundation enum Credentials { case apiToken - + func get() -> String? { switch self { case .apiToken: return "f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e" } } - + func set(value: String) -> Bool { return true } diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/DataSource/CodableSerializer.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/DataSource/CodableSerializer.swift new file mode 100644 index 0000000..afe03d7 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/DataSource/CodableSerializer.swift @@ -0,0 +1,35 @@ +// +// CodableSerializer.swift +// Fakestagram-Xcode10 +// +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. +// + +import Foundation + +class CodableSerializer { + let data: Data? + let decoder: JSONDecoder = { + let decoder = JSONDecoder() + decoder.keyDecodingStrategy = .convertFromSnakeCase + return decoder + }() + + init(data: Data?) { + self.data = data + } + + func async(result: @escaping (T?) -> Void) { + guard let data = data else { + DispatchQueue.main.async { result(nil) } + return + } + do { + let json = try decoder.decode(T.self, from: data) + DispatchQueue.main.async { result(json) } + } catch let err { + print("Invalid JSON format: \(err.localizedDescription)") + } + } +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/DataSource/RestClient.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/DataSource/RestClient.swift index 205a86b..2e9b6b2 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/DataSource/RestClient.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/DataSource/RestClient.swift @@ -1,9 +1,9 @@ // // RestClient.swift -// fakestagram +// Fakestagram-Xcode10 // -// Created by LuisE on 10/5/19. -// Copyright © 2019 3zcurdia. All rights reserved. +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. // import Foundation @@ -16,36 +16,20 @@ class RestClient { encoder.keyEncodingStrategy = .convertToSnakeCase return encoder }() - - let decoder: JSONDecoder = { - let decoder = JSONDecoder() - decoder.keyDecodingStrategy = .convertFromSnakeCase - return decoder - }() - + init(client: Client, basePath: String) { self.client = client self.basePath = basePath } - + // eg. POST /posts/ func create(_ data: T, success: @escaping (T?) -> Void) { let payload = try? encoder.encode(data) - client.post(path: basePath, body: payload) { [unowned self] data in - guard let data = data else { - success(nil) - return - } - do { - let json = try self.decoder.decode(T.self, from: data) - success(json) - } catch let err { - print("Invalid JSON format: \(err.localizedDescription)") - } - } - + client.post(path: basePath, body: payload) { data in + CodableSerializer(data: data).async(result: success) + } } - + // eg. GET /posts/ // eg. GET /posts/:id func show(id: String? = nil, success: @escaping (T?) -> Void) { @@ -53,51 +37,22 @@ class RestClient { if let uid = id { path += "/\(uid)" } - client.get(path: path) { [unowned self] data in - guard let data = data else { - DispatchQueue.main.async { success(nil) } - return - } - do { - let json = try self.decoder.decode(T.self, from: data) - DispatchQueue.main.async { success(json) } - } catch let err { - print("Invalid JSON format: \(err.localizedDescription)") - } + client.get(path: path) { data in + CodableSerializer(data: data).async(result: success) } } // eg. PUT /posts/:id func update(id: String, data: T, success: @escaping (T?) -> Void) { let payload = try? encoder.encode(data) - client.put(path: "\(basePath)/\(id)", body: payload) { [unowned self] data in - guard let data = data else { - success(nil) - return - } - do { - let json = try self.decoder.decode(T.self, from: data) - success(json) - } catch let err { - print("Invalid JSON format: \(err.localizedDescription)") - } + client.put(path: "\(basePath)/\(id)", body: payload) { data in + CodableSerializer(data: data).async(result: success) } } - - + // eg. DELETE /posts/:id func delete(id: String, success: @escaping (T?) -> Void) { - client.delete(path: "\(basePath)/\(id)") { [unowned self] data in - guard let data = data else { - success(nil) - return - } - do { - let json = try self.decoder.decode(T.self, from: data) - success(json) - } catch let err { - print("Invalid JSON format: \(err.localizedDescription)") - } - } + client.delete(path: "\(basePath)/\(id)") { data in + CodableSerializer(data: data).async(result: success) + } } - } diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Models/Account.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Account.swift similarity index 58% rename from Fakestagram-Xcode10/Fakestagram-Xcode10/Models/Account.swift rename to Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Account.swift index bb66fde..e5f806d 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/Models/Account.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Account.swift @@ -1,9 +1,9 @@ // // Account.swift -// fakestagram +// Fakestagram-Xcode10 // -// Created by LuisE on 10/5/19. -// Copyright © 2019 3zcurdia. All rights reserved. +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. // import Foundation diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Models/Post.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Post.swift similarity index 85% rename from Fakestagram-Xcode10/Fakestagram-Xcode10/Models/Post.swift rename to Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Post.swift index c7e6397..9e6a597 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/Models/Post.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Post.swift @@ -1,9 +1,9 @@ // // Post.swift -// fakestagram +// Fakestagram-Xcode10 // -// Created by LuisE on 10/5/19. -// Copyright © 2019 3zcurdia. All rights reserved. +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. // import Foundation @@ -18,15 +18,15 @@ struct Post: Codable { let createdAt: String var liked: Bool let location: String - + func likesCountText() -> String { return "\(likesCount) likes" } - + func commentsCountText() -> String { return "\(commentsCount) comments" } - + func load(_ image: @escaping (UIImage) -> Void) { guard let urlString = imageUrl, let url = URL(string: urlString) else { return } DispatchQueue.global(qos: .background).async { diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/Client.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/Client.swift index 2b9852a..b248b6b 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/Client.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/Client.swift @@ -1,9 +1,9 @@ // // Client.swift -// fakestagram +// Fakestagram-Xcode10 // -// Created by LuisE on 10/4/19. -// Copyright © 2019 3zcurdia. All rights reserved. +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. // import Foundation @@ -12,49 +12,49 @@ class Client { static let fakestagram = Client(session: URLSession.shared, baseUrl: "https://fakestagram-api.herokuapp.com") let session: URLSession let baseUrl: String - + init(session: URLSession, baseUrl: String) { self.session = session self.baseUrl = baseUrl } - + typealias successfulResponse = (Data?) -> Void - + func get(path: String, success: @escaping successfulResponse) { request(method: "get", path: path, body: nil, success: success) } - + func post(path: String, body: Data?, success: @escaping successfulResponse) { request(method: "post", path: path, body: body, success: success) } - + func put(path: String, body: Data?, success: @escaping successfulResponse) { request(method: "put", path: path, body: body, success: success) } - + func delete(path: String, success: @escaping successfulResponse) { request(method: "delete", path: path, body: nil, success: success) } - + private func request(method: String, path: String, body: Data?, success: @escaping successfulResponse) { guard let req = buildRequest(method: method, path: path, body: body) else { debugPrint("Invalid request") return } - + session.dataTask(with: req) { (data, response, error) in if let error = error { debugPrint(error) return } - + let response = HttpResponse(response: response) if response.isSuccessful() { success(data) } - }.resume() + }.resume() } - + private func buildRequest(method: String, path: String, body: Data?) -> URLRequest? { var builder = RequestBuilder(baseUrl: self.baseUrl) builder.method = method diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/HttpResponse.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/HttpResponse.swift index cd7b4aa..d8d6f32 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/HttpResponse.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/HttpResponse.swift @@ -1,24 +1,24 @@ // // HttpResponse.swift -// fakestagram +// Fakestagram-Xcode10 // -// Created by LuisE on 10/4/19. -// Copyright © 2019 3zcurdia. All rights reserved. +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. // import Foundation class HttpResponse { let httpUrlResponse: HTTPURLResponse - + init(response: URLResponse?) { self.httpUrlResponse = response as! HTTPURLResponse } - + lazy var status: StatusCode = { return StatusCode(rawValue: self.httpUrlResponse.statusCode) }() - + func isSuccessful() -> Bool { return status == StatusCode.success } diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/RequestBuilder.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/RequestBuilder.swift index 0fb17dd..32f5f22 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/RequestBuilder.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/RequestBuilder.swift @@ -1,9 +1,9 @@ // // RequestBuilder.swift -// fakestagram +// Fakestagram-Xcode10 // -// Created by LuisE on 10/4/19. -// Copyright © 2019 3zcurdia. All rights reserved. +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. // import Foundation @@ -11,14 +11,14 @@ import Foundation struct RequestBuilder { enum ContentMode { case jsonApp - + func accept() -> String { switch self { case .jsonApp: return "application/json" } } - + func contentType() -> String { switch self { case .jsonApp: @@ -33,18 +33,18 @@ struct RequestBuilder { public var body: Data? public var headers: [String: String]? public var contentMode: ContentMode = .jsonApp - + init(baseUrl: String) { self.urlComponents = URLComponents(string: baseUrl)! } - + func url() -> URL? { var comps = self.urlComponents comps.scheme = scheme comps.path = path return comps.url } - + func request() -> URLRequest? { guard let url = url() else { return nil } var req = URLRequest(url: url) diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/Sat.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/Sat.swift new file mode 100644 index 0000000..b1f3686 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/Sat.swift @@ -0,0 +1,10 @@ + +// +// Sat.swift +// Fakestagram-Xcode10 +// +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. +// + +import Foundation diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/StatusCode.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/StatusCode.swift index cdc5e29..87b9b12 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/StatusCode.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Network/StatusCode.swift @@ -1,9 +1,9 @@ // // StatusCode.swift -// fakestagram +// Fakestagram-Xcode10 // -// Created by LuisE on 10/4/19. -// Copyright © 2019 3zcurdia. All rights reserved. +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. // import Foundation @@ -15,22 +15,22 @@ enum StatusCode: Int { case redirection case clientError case serverError - + public init(rawValue: Int) { switch rawValue { - case 100, 101, 102: - self = .info - case 200, 201, 202, 203, 204, 205, 206, 207, 208, 226: - self = .success - case 300, 301, 302, 303, 304, 305, 306, 307, 308: - self = .redirection - case 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 426, 428, 429, 431, 451: - self = .clientError - case 500, 501, 502, 503, 504, 505, 506, 507, 510, 511: - self = .serverError - default: - self = .unkown + case 100, 101, 102: + self = .info + case 200, 201, 202, 203, 204, 205, 206, 207, 208, 226: + self = .success + case 300, 301, 302, 303, 304, 305, 306, 307, 308: + self = .redirection + case 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 426, 428, 429, 431, 451: + self = .clientError + case 500, 501, 502, 503, 504, 505, 506, 507, 510, 511: + self = .serverError + default: + self = .unkown } } } diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/PostViewController.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostViewController.swift index dc0887e..a6e611e 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/PostViewController.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostViewController.swift @@ -1,9 +1,9 @@ // // PostViewController.swift -// fakestagram +// Fakestagram-Xcode10 // -// Created by LuisE on 9/28/19. -// Copyright © 2019 3zcurdia. All rights reserved. +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. // import UIKit @@ -26,17 +26,17 @@ class PostViewController: UIViewController { } } @IBOutlet weak var imageView: UIImageView! - + override func viewDidLoad() { super.viewDidLoad() updatePostView() loadComments { comments in debugPrint(comments) } - + // Do any additional setup after loading the view. } - + func updatePostView() { guard let post = post else { return } post.load { img in @@ -45,16 +45,15 @@ class PostViewController: UIViewController { } } } - + /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. - } - */ + // MARK: - Navigation + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ func loadComments(successful: @escaping ([Comment]) -> Void) { guard let uwrappedPost = post, let postId = uwrappedPost.id else { return } let url = URL(string: "https://fakestagram-api.herokuapp.com/api/v1/posts/\(postId)/comments")! @@ -63,13 +62,12 @@ class PostViewController: UIViewController { request.setValue("application/json", forHTTPHeaderField: "Content-Type") request.httpMethod = "get" request.addValue("Bearer f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e", forHTTPHeaderField: "Authorization") - + let task = URLSession.shared.dataTask(with: request) { (data, _, error) in if error != nil || data == nil { return } // get status code - let decoder = JSONDecoder() decoder.keyDecodingStrategy = .convertFromSnakeCase do { @@ -82,7 +80,7 @@ class PostViewController: UIViewController { } task.resume() } - + func loadLikes(successful: @escaping ([Like]) -> Void) { guard let uwrappedPost = post, let postId = uwrappedPost.id else { return } let url = URL(string: "https://fakestagram-api.herokuapp.com/api/v1/posts/\(postId)/likes")! @@ -91,7 +89,7 @@ class PostViewController: UIViewController { request.setValue("application/json", forHTTPHeaderField: "Content-Type") request.httpMethod = "get" request.addValue("Bearer f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e", forHTTPHeaderField: "Authorization") - + let task = URLSession.shared.dataTask(with: request) { (data, _, error) in if error != nil || data == nil { return diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsTableViewController.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsTableViewController.swift index a54149b..1932e44 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsTableViewController.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsTableViewController.swift @@ -8,38 +8,10 @@ import UIKit -struct Post: Codable { - let id: Int? - let title: String - let imageUrl: String? - var likesCount: Int - var commentsCount: Int - let createdAt: String - var liked: Bool - let location: String - - func likesCountText() -> String { - return "\(likesCount) likes" - } - - func commentsCountText() -> String { - return "\(commentsCount) comments" - } - - func load(_ image: @escaping (UIImage) -> Void) { - guard let urlString = imageUrl, let url = URL(string: urlString) else { return } - DispatchQueue.global(qos: .background).async { - if let data = try? Data(contentsOf: url), let img = UIImage(data: data) { - DispatchQueue.main.async { image(img) } - } - } - } -} - class PostsTableViewController: UITableViewController { static let cellId = "PostCell" var posts = [Post]() - + override func viewDidLoad() { super.viewDidLoad() loadPosts { data in @@ -48,24 +20,22 @@ class PostsTableViewController: UITableViewController { self.tableView.reloadData() } } - + // Uncomment the following line to preserve selection between presentations // self.clearsSelectionOnViewWillAppear = false - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. // self.navigationItem.rightBarButtonItem = self.editButtonItem } - + // MARK: - Table view data source - override func numberOfSections(in tableView: UITableView) -> Int { return 1 } - + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return posts.count } - + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: PostsTableViewController.cellId, for: indexPath) posts[indexPath.row].load { img in @@ -74,10 +44,10 @@ class PostsTableViewController: UITableViewController { } cell.textLabel?.text = posts[indexPath.row].title cell.detailTextLabel?.text = posts[indexPath.row].location - + return cell } - + /* // Override to support conditional editing of the table view. override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { @@ -85,7 +55,7 @@ class PostsTableViewController: UITableViewController { return true } */ - + /* // Override to support editing the table view. override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { @@ -97,14 +67,13 @@ class PostsTableViewController: UITableViewController { } } */ - + /* // Override to support rearranging the table view. override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) { - } */ - + /* // Override to support conditional rearranging of the table view. override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool { @@ -112,24 +81,27 @@ class PostsTableViewController: UITableViewController { return true } */ - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. - } - */ - + + // MARK: - Navigation + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + if segue.identifier == "showPostSegue" { + let dest = segue.destination as! PostViewController + let idx = self.tableView.indexPathForSelectedRow?.row ?? 0 + dest.post = posts[idx] + } + } + func loadPosts(successful: @escaping ([Post]) -> Void) { - var request = URLRequest(url: URL(string: "https://fakestagram-api.herokuapp.com/api/v1/posts")!) + let url = URL(string: "https://fakestagram-api.herokuapp.com/api/v1/posts")! + var request = URLRequest(url: url) request.setValue("application/json", forHTTPHeaderField: "Accept") request.setValue("application/json", forHTTPHeaderField: "Content-Type") request.httpMethod = "get" request.addValue("Bearer f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e", forHTTPHeaderField: "Authorization") - + let task = URLSession.shared.dataTask(with: request) { (data, _, error) in if error != nil || data == nil { return diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RequestBuilderTest.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RequestBuilderTest.swift new file mode 100644 index 0000000..2f625ec --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RequestBuilderTest.swift @@ -0,0 +1,33 @@ +// +// RequestBuilderTest.swift +// Fakestagram-Xcode10Tests +// +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. +// + +import XCTest + +class RequestBuilderTest: XCTestCase { + + override func setUp() { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RestClientTest.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RestClientTest.swift new file mode 100644 index 0000000..2647455 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RestClientTest.swift @@ -0,0 +1,33 @@ +// +// RestClientTest.swift +// Fakestagram-Xcode10Tests +// +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. +// + +import XCTest + +class RestClientTest: XCTestCase { + + override func setUp() { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} From cd473a9416fa22450cab22eea6253a83e09059aa Mon Sep 17 00:00:00 2001 From: Ricardo Hernandez Date: Sat, 12 Oct 2019 10:15:14 -0500 Subject: [PATCH 10/28] test succeeded --- .../project.pbxproj | 96 ++++++++++++++++++- .../RequestBuilderTest.swift | 68 +++++++++---- .../RestClientTest.swift | 50 ++++++---- 3 files changed, 174 insertions(+), 40 deletions(-) diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj index 4877122..01b521f 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj @@ -14,6 +14,20 @@ 7701BEBB233F1B1C0004C30D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7701BEB9233F1B1C0004C30D /* LaunchScreen.storyboard */; }; 7701BEC6233F1B1C0004C30D /* Fakestagram_Xcode10Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7701BEC5233F1B1C0004C30D /* Fakestagram_Xcode10Tests.swift */; }; 7701BED1233F1B540004C30D /* PostsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7701BED0233F1B540004C30D /* PostsTableViewController.swift */; }; + 7909C65A23521FEC000B0380 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C65923521FEC000B0380 /* Credentials.swift */; }; + 7909C65C23522002000B0380 /* PostViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C65B23522002000B0380 /* PostViewController.swift */; }; + 7909C65E23522061000B0380 /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C65D23522061000B0380 /* Client.swift */; }; + 7909C66023522082000B0380 /* HttpResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C65F23522082000B0380 /* HttpResponse.swift */; }; + 7909C66223522091000B0380 /* RequestBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C66123522091000B0380 /* RequestBuilder.swift */; }; + 7909C666235220BC000B0380 /* StatusCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C665235220BC000B0380 /* StatusCode.swift */; }; + 7909C6682352214C000B0380 /* CodableSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C6672352214C000B0380 /* CodableSerializer.swift */; }; + 7909C66A2352216E000B0380 /* RestClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C6692352216E000B0380 /* RestClient.swift */; }; + 7909C66C2352218A000B0380 /* Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C66B2352218A000B0380 /* Account.swift */; }; + 7909C66E235221A3000B0380 /* Post.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C66D235221A3000B0380 /* Post.swift */; }; + 7909C67023522287000B0380 /* RequestBuilderTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C66F23522287000B0380 /* RequestBuilderTest.swift */; }; + 7909C672235222CC000B0380 /* RestClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C671235222CC000B0380 /* RestClientTest.swift */; }; + 7909C6752352232F000B0380 /* posts.successful.json in Resources */ = {isa = PBXBuildFile; fileRef = 7909C6742352232F000B0380 /* posts.successful.json */; }; + 7909C67723522339000B0380 /* show_post.successful.json in Resources */ = {isa = PBXBuildFile; fileRef = 7909C67623522339000B0380 /* show_post.successful.json */; }; F2AD903247DD33845EA3C7FB /* Pods_Fakestagram_Xcode10.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F32B394EBB804D9C3E14052 /* Pods_Fakestagram_Xcode10.framework */; }; /* End PBXBuildFile section */ @@ -41,6 +55,20 @@ 7701BEC5233F1B1C0004C30D /* Fakestagram_Xcode10Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fakestagram_Xcode10Tests.swift; sourceTree = ""; }; 7701BEC7233F1B1C0004C30D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 7701BED0233F1B540004C30D /* PostsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostsTableViewController.swift; sourceTree = ""; }; + 7909C65923521FEC000B0380 /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; + 7909C65B23522002000B0380 /* PostViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostViewController.swift; sourceTree = ""; }; + 7909C65D23522061000B0380 /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = ""; }; + 7909C65F23522082000B0380 /* HttpResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HttpResponse.swift; sourceTree = ""; }; + 7909C66123522091000B0380 /* RequestBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestBuilder.swift; sourceTree = ""; }; + 7909C665235220BC000B0380 /* StatusCode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusCode.swift; sourceTree = ""; }; + 7909C6672352214C000B0380 /* CodableSerializer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodableSerializer.swift; sourceTree = ""; }; + 7909C6692352216E000B0380 /* RestClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestClient.swift; sourceTree = ""; }; + 7909C66B2352218A000B0380 /* Account.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Account.swift; sourceTree = ""; }; + 7909C66D235221A3000B0380 /* Post.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Post.swift; sourceTree = ""; }; + 7909C66F23522287000B0380 /* RequestBuilderTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestBuilderTest.swift; sourceTree = ""; }; + 7909C671235222CC000B0380 /* RestClientTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestClientTest.swift; sourceTree = ""; }; + 7909C6742352232F000B0380 /* posts.successful.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = posts.successful.json; path = ../../../fakestagramTests/casettes/posts.successful.json; sourceTree = ""; }; + 7909C67623522339000B0380 /* show_post.successful.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = show_post.successful.json; path = ../../../fakestagramTests/casettes/show_post.successful.json; sourceTree = ""; }; 7F32B394EBB804D9C3E14052 /* Pods_Fakestagram_Xcode10.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Fakestagram_Xcode10.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CC485714B1528A06F25D0EB3 /* Pods_Fakestagram_Xcode10Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Fakestagram_Xcode10Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; DCED9AC22B8D6D07928F1A67 /* Pods-Fakestagram-Xcode10Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fakestagram-Xcode10Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Fakestagram-Xcode10Tests/Pods-Fakestagram-Xcode10Tests.debug.xcconfig"; sourceTree = ""; }; @@ -109,12 +137,17 @@ 7701BEAF233F1B1B0004C30D /* Fakestagram-Xcode10 */ = { isa = PBXGroup; children = ( + 7909C65823521FD9000B0380 /* Network */, + 7909C65723521FD3000B0380 /* DataSource */, + 7909C65623521FCD000B0380 /* Model */, 7701BEB0233F1B1B0004C30D /* AppDelegate.swift */, 7701BED0233F1B540004C30D /* PostsTableViewController.swift */, 7701BEB4233F1B1B0004C30D /* Main.storyboard */, 7701BEB7233F1B1C0004C30D /* Assets.xcassets */, 7701BEB9233F1B1C0004C30D /* LaunchScreen.storyboard */, 7701BEBC233F1B1C0004C30D /* Info.plist */, + 7909C65923521FEC000B0380 /* Credentials.swift */, + 7909C65B23522002000B0380 /* PostViewController.swift */, ); path = "Fakestagram-Xcode10"; sourceTree = ""; @@ -122,12 +155,53 @@ 7701BEC4233F1B1C0004C30D /* Fakestagram-Xcode10Tests */ = { isa = PBXGroup; children = ( + 7909C673235222E9000B0380 /* casettes */, 7701BEC5233F1B1C0004C30D /* Fakestagram_Xcode10Tests.swift */, 7701BEC7233F1B1C0004C30D /* Info.plist */, + 7909C66F23522287000B0380 /* RequestBuilderTest.swift */, + 7909C671235222CC000B0380 /* RestClientTest.swift */, ); path = "Fakestagram-Xcode10Tests"; sourceTree = ""; }; + 7909C65623521FCD000B0380 /* Model */ = { + isa = PBXGroup; + children = ( + 7909C66B2352218A000B0380 /* Account.swift */, + 7909C66D235221A3000B0380 /* Post.swift */, + ); + path = Model; + sourceTree = ""; + }; + 7909C65723521FD3000B0380 /* DataSource */ = { + isa = PBXGroup; + children = ( + 7909C6672352214C000B0380 /* CodableSerializer.swift */, + 7909C6692352216E000B0380 /* RestClient.swift */, + ); + path = DataSource; + sourceTree = ""; + }; + 7909C65823521FD9000B0380 /* Network */ = { + isa = PBXGroup; + children = ( + 7909C65D23522061000B0380 /* Client.swift */, + 7909C65F23522082000B0380 /* HttpResponse.swift */, + 7909C66123522091000B0380 /* RequestBuilder.swift */, + 7909C665235220BC000B0380 /* StatusCode.swift */, + ); + path = Network; + sourceTree = ""; + }; + 7909C673235222E9000B0380 /* casettes */ = { + isa = PBXGroup; + children = ( + 7909C67623522339000B0380 /* show_post.successful.json */, + 7909C6742352232F000B0380 /* posts.successful.json */, + ); + path = casettes; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -222,6 +296,8 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 7909C6752352232F000B0380 /* posts.successful.json in Resources */, + 7909C67723522339000B0380 /* show_post.successful.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -301,7 +377,17 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 7909C66223522091000B0380 /* RequestBuilder.swift in Sources */, + 7909C66C2352218A000B0380 /* Account.swift in Sources */, + 7909C66023522082000B0380 /* HttpResponse.swift in Sources */, + 7909C66E235221A3000B0380 /* Post.swift in Sources */, + 7909C666235220BC000B0380 /* StatusCode.swift in Sources */, + 7909C65C23522002000B0380 /* PostViewController.swift in Sources */, + 7909C65A23521FEC000B0380 /* Credentials.swift in Sources */, 7701BED1233F1B540004C30D /* PostsTableViewController.swift in Sources */, + 7909C65E23522061000B0380 /* Client.swift in Sources */, + 7909C6682352214C000B0380 /* CodableSerializer.swift in Sources */, + 7909C66A2352216E000B0380 /* RestClient.swift in Sources */, 7701BEB1233F1B1B0004C30D /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -311,6 +397,8 @@ buildActionMask = 2147483647; files = ( 7701BEC6233F1B1C0004C30D /* Fakestagram_Xcode10Tests.swift in Sources */, + 7909C672235222CC000B0380 /* RestClientTest.swift in Sources */, + 7909C67023522287000B0380 /* RequestBuilderTest.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -466,13 +554,13 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = F2BL68NTA5; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = "Fakestagram-Xcode10/Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "unam.Fakestagram-Xcode10"; + PRODUCT_BUNDLE_IDENTIFIER = unam.Fakestagram; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -485,13 +573,13 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = F2BL68NTA5; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = "Fakestagram-Xcode10/Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "unam.Fakestagram-Xcode10"; + PRODUCT_BUNDLE_IDENTIFIER = unam.Fakestagram; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RequestBuilderTest.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RequestBuilderTest.swift index 2f625ec..3d9229c 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RequestBuilderTest.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RequestBuilderTest.swift @@ -7,27 +7,59 @@ // import XCTest +@testable import Fakestagram_Xcode10 -class RequestBuilderTest: XCTestCase { - - override func setUp() { - // Put setup code here. This method is called before the invocation of each test method in the class. +class RequestBuilderTests: XCTestCase { + func testBuildValidURL() { + var builder = RequestBuilder(baseUrl: "https://example.com/") + builder.path = "/api/v1/accounts" + XCTAssertEqual(builder.scheme, "https") + XCTAssertEqual(builder.method, "get") + XCTAssertEqual(builder.url(), URL(string: "https://example.com/api/v1/accounts")!) } - - override func tearDown() { - // Put teardown code here. This method is called after the invocation of each test method in the class. + + func testBuildInvalidURL() { + var builder = RequestBuilder(baseUrl: "example.com") + builder.path = "//@3`-" + XCTAssertNil(builder.url()) } - - func testExample() { - // This is an example of a functional test case. - // Use XCTAssert and related functions to verify your tests produce the correct results. + + func testBuildForceSchemeURL() { + let builder = RequestBuilder(baseUrl: "http://example.com/") + XCTAssertEqual(builder.url(), URL(string: "https://example.com/")!) } - - func testPerformanceExample() { - // This is an example of a performance test case. - self.measure { - // Put the code you want to measure the time of here. - } + + func testBuildOverrideSchemeURL() { + var builder = RequestBuilder(baseUrl: "http://example.com/") + builder.scheme = "ftp" + XCTAssertEqual(builder.url(), URL(string: "ftp://example.com/")!) + } + + func testBuildInvalidRequest() { + var builder = RequestBuilder(baseUrl: "example.com") + builder.path = "//@3`-" + XCTAssertNil(builder.request()) + } + + func testBuildValidRequest() { + var builder = RequestBuilder(baseUrl: "https://example.com/") + builder.path = "/api/v1/accounts" + builder.method = "post" + builder.body = "{\"a\": 1}".data(using: .utf8) + builder.headers = ["test": "example"] + + let result = builder.request() + XCTAssertNotNil(result) + XCTAssertEqual(result!.httpMethod!, "POST") + XCTAssertEqual(result!.httpBody!, "{\"a\": 1}".data(using: .utf8)) + XCTAssertEqual(result!.allHTTPHeaderFields!, ["Accept": "application/json", "Content-Type": "application/json", "test": "example"]) + } + + func testBuildValidRequestWithDefaults() { + let result = RequestBuilder(baseUrl: "https://example.com/").request() + XCTAssertNotNil(result) + XCTAssertEqual(result!.httpMethod!, "GET") + XCTAssertNil(result!.httpBody) + XCTAssertEqual(result!.allHTTPHeaderFields!, ["Accept": "application/json", "Content-Type": "application/json"]) } - } diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RestClientTest.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RestClientTest.swift index 2647455..d6a9aaf 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RestClientTest.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10Tests/RestClientTest.swift @@ -7,27 +7,41 @@ // import XCTest +import DVR +@testable import Fakestagram_Xcode10 class RestClientTest: XCTestCase { - - override func setUp() { - // Put setup code here. This method is called before the invocation of each test method in the class. - } - - override func tearDown() { - // Put teardown code here. This method is called after the invocation of each test method in the class. - } - - func testExample() { - // This is an example of a functional test case. - // Use XCTAssert and related functions to verify your tests produce the correct results. + func testShowPosts() { + let session = Session(cassetteName: "posts.successful") + let client = Client(session: session, baseUrl: "https://fakestagram-api.herokuapp.com") + let restClient = RestClient<[Post]>(client: client, basePath: "/api/v1/posts") + let exp = expectation(description: "Successfull index posts") + + restClient.show { posts in + exp.fulfill() + XCTAssertNotNil(posts) + XCTAssertEqual(posts!.count, 25) + XCTAssertEqual(posts!.first!.id, 228) + XCTAssertEqual(posts!.first!.title, "Example") + } + + waitForExpectations(timeout: 2, handler: nil) } - - func testPerformanceExample() { - // This is an example of a performance test case. - self.measure { - // Put the code you want to measure the time of here. + + func testShowPost() { + let session = Session(cassetteName: "show_post.successful") + let client = Client(session: session, baseUrl: "https://fakestagram-api.herokuapp.com") + + let restClient = RestClient(client: client, basePath: "/api/v1/posts") + let exp = expectation(description: "Successfull index posts") + + restClient.show(id: "228") { post in + exp.fulfill() + XCTAssertNotNil(post) + XCTAssertEqual(post!.id, 228) + XCTAssertEqual(post!.title, "Example") } + + waitForExpectations(timeout: 2, handler: nil) } - } From 34be483e899a0760840fb57ebfb5a10b4a9d05c2 Mon Sep 17 00:00:00 2001 From: Ricardo Hernandez Date: Sat, 12 Oct 2019 13:42:18 -0500 Subject: [PATCH 11/28] Vistas programaticas y XIB --- .../project.pbxproj | 32 ++++++ .../Fakestagram-Xcode10/Model/Author.swift | 13 +++ .../Fakestagram-Xcode10/Model/Comment.swift | 14 +++ .../Fakestagram-Xcode10/Model/Like.swift | 13 +++ .../PostViewController.swift | 11 -- .../Views/AuthorView.swift | 58 ++++++++++ .../Fakestagram-Xcode10/Views/File.swift | 9 ++ .../Views/PostXIBViewController.swift | 47 ++++++++ .../Views/PostXIBViewController.xib | 101 ++++++++++++++++++ 9 files changed, 287 insertions(+), 11 deletions(-) create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Author.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Comment.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Like.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Views/AuthorView.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Views/File.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostXIBViewController.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostXIBViewController.xib diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj index 01b521f..4a4dbf0 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj @@ -28,6 +28,12 @@ 7909C672235222CC000B0380 /* RestClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C671235222CC000B0380 /* RestClientTest.swift */; }; 7909C6752352232F000B0380 /* posts.successful.json in Resources */ = {isa = PBXBuildFile; fileRef = 7909C6742352232F000B0380 /* posts.successful.json */; }; 7909C67723522339000B0380 /* show_post.successful.json in Resources */ = {isa = PBXBuildFile; fileRef = 7909C67623522339000B0380 /* show_post.successful.json */; }; + 7909C67B23523BE3000B0380 /* PostXIBViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C67923523BE3000B0380 /* PostXIBViewController.swift */; }; + 7909C67C23523BE3000B0380 /* PostXIBViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7909C67A23523BE3000B0380 /* PostXIBViewController.xib */; }; + 7909C67E23524566000B0380 /* Comment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C67D23524566000B0380 /* Comment.swift */; }; + 7909C68023524576000B0380 /* Like.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C67F23524576000B0380 /* Like.swift */; }; + 7909C6822352458A000B0380 /* Author.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C6812352458A000B0380 /* Author.swift */; }; + 7909C686235246FE000B0380 /* AuthorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C685235246FE000B0380 /* AuthorView.swift */; }; F2AD903247DD33845EA3C7FB /* Pods_Fakestagram_Xcode10.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F32B394EBB804D9C3E14052 /* Pods_Fakestagram_Xcode10.framework */; }; /* End PBXBuildFile section */ @@ -69,6 +75,12 @@ 7909C671235222CC000B0380 /* RestClientTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestClientTest.swift; sourceTree = ""; }; 7909C6742352232F000B0380 /* posts.successful.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = posts.successful.json; path = ../../../fakestagramTests/casettes/posts.successful.json; sourceTree = ""; }; 7909C67623522339000B0380 /* show_post.successful.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = show_post.successful.json; path = ../../../fakestagramTests/casettes/show_post.successful.json; sourceTree = ""; }; + 7909C67923523BE3000B0380 /* PostXIBViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostXIBViewController.swift; sourceTree = ""; }; + 7909C67A23523BE3000B0380 /* PostXIBViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PostXIBViewController.xib; sourceTree = ""; }; + 7909C67D23524566000B0380 /* Comment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Comment.swift; sourceTree = ""; }; + 7909C67F23524576000B0380 /* Like.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Like.swift; sourceTree = ""; }; + 7909C6812352458A000B0380 /* Author.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Author.swift; sourceTree = ""; }; + 7909C685235246FE000B0380 /* AuthorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorView.swift; sourceTree = ""; }; 7F32B394EBB804D9C3E14052 /* Pods_Fakestagram_Xcode10.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Fakestagram_Xcode10.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CC485714B1528A06F25D0EB3 /* Pods_Fakestagram_Xcode10Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Fakestagram_Xcode10Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; DCED9AC22B8D6D07928F1A67 /* Pods-Fakestagram-Xcode10Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fakestagram-Xcode10Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Fakestagram-Xcode10Tests/Pods-Fakestagram-Xcode10Tests.debug.xcconfig"; sourceTree = ""; }; @@ -137,6 +149,7 @@ 7701BEAF233F1B1B0004C30D /* Fakestagram-Xcode10 */ = { isa = PBXGroup; children = ( + 7909C67823523B52000B0380 /* Views */, 7909C65823521FD9000B0380 /* Network */, 7909C65723521FD3000B0380 /* DataSource */, 7909C65623521FCD000B0380 /* Model */, @@ -169,6 +182,9 @@ children = ( 7909C66B2352218A000B0380 /* Account.swift */, 7909C66D235221A3000B0380 /* Post.swift */, + 7909C67D23524566000B0380 /* Comment.swift */, + 7909C67F23524576000B0380 /* Like.swift */, + 7909C6812352458A000B0380 /* Author.swift */, ); path = Model; sourceTree = ""; @@ -202,6 +218,16 @@ path = casettes; sourceTree = ""; }; + 7909C67823523B52000B0380 /* Views */ = { + isa = PBXGroup; + children = ( + 7909C67923523BE3000B0380 /* PostXIBViewController.swift */, + 7909C67A23523BE3000B0380 /* PostXIBViewController.xib */, + 7909C685235246FE000B0380 /* AuthorView.swift */, + ); + path = Views; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -288,6 +314,7 @@ files = ( 7701BEBB233F1B1C0004C30D /* LaunchScreen.storyboard in Resources */, 7701BEB8233F1B1C0004C30D /* Assets.xcassets in Resources */, + 7909C67C23523BE3000B0380 /* PostXIBViewController.xib in Resources */, 7701BEB6233F1B1B0004C30D /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -380,13 +407,18 @@ 7909C66223522091000B0380 /* RequestBuilder.swift in Sources */, 7909C66C2352218A000B0380 /* Account.swift in Sources */, 7909C66023522082000B0380 /* HttpResponse.swift in Sources */, + 7909C67E23524566000B0380 /* Comment.swift in Sources */, + 7909C67B23523BE3000B0380 /* PostXIBViewController.swift in Sources */, 7909C66E235221A3000B0380 /* Post.swift in Sources */, 7909C666235220BC000B0380 /* StatusCode.swift in Sources */, 7909C65C23522002000B0380 /* PostViewController.swift in Sources */, 7909C65A23521FEC000B0380 /* Credentials.swift in Sources */, + 7909C68023524576000B0380 /* Like.swift in Sources */, + 7909C6822352458A000B0380 /* Author.swift in Sources */, 7701BED1233F1B540004C30D /* PostsTableViewController.swift in Sources */, 7909C65E23522061000B0380 /* Client.swift in Sources */, 7909C6682352214C000B0380 /* CodableSerializer.swift in Sources */, + 7909C686235246FE000B0380 /* AuthorView.swift in Sources */, 7909C66A2352216E000B0380 /* RestClient.swift in Sources */, 7701BEB1233F1B1B0004C30D /* AppDelegate.swift in Sources */, ); diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Author.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Author.swift new file mode 100644 index 0000000..072a4ce --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Author.swift @@ -0,0 +1,13 @@ +// +// Author.swift +// Fakestagram-Xcode10 +// +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. +// + +import Foundation + +struct Author: Codable { + let name: String +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Comment.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Comment.swift new file mode 100644 index 0000000..9bc5a31 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Comment.swift @@ -0,0 +1,14 @@ +// +// Comment.swift +// Fakestagram-Xcode10 +// +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. +// + +import Foundation + +struct Comment: Codable { + let content: String + let author: Author? +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Like.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Like.swift new file mode 100644 index 0000000..e259cff --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Like.swift @@ -0,0 +1,13 @@ +// +// Like.swift +// Fakestagram-Xcode10 +// +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. +// + +import Foundation + +struct Like: Codable { + let author: Author +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/PostViewController.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostViewController.swift index a6e611e..da9ee7f 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/PostViewController.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostViewController.swift @@ -8,17 +8,6 @@ import UIKit -struct Author: Codable { - let name: String -} -struct Comment: Codable { - let content: String - let author: Author? -} -struct Like: Codable { - let author: Author -} - class PostViewController: UIViewController { var post: Post? { didSet { diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/AuthorView.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/AuthorView.swift new file mode 100644 index 0000000..b31ef60 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/AuthorView.swift @@ -0,0 +1,58 @@ +// +// AuthorView.swift +// Fakestagram-Xcode10 +// +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. +// + +import UIKit + +class AuthorView: UIView{ + let avatar: UIImageView = { + let iv = UIImageView() + iv.image = UIImage(named: "") + iv.contentMode = .scaleAspectFill + iv.translatesAutoresizingMaskIntoConstraints = false + return iv + }() + + let nameLbl: UILabel = { + let lbl = UILabel() + lbl.text = "Lorem ipsum" + return lbl + }() + + convenience init() { + self.init(frame: .zero) + } + + override init(frame: CGRect) { + super.init(frame: frame) + setupConstraints() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + setupConstraints() + } + + func setupConstraints(){ + addSubview(avatar) +// avatar.topAnchor.constraint(equalTo: self.topAnchor, constant: 3).isActive = true +// Para evitar estar haciendo isActive por cada constraint utilizamos NSLayoutConstraint.activate + NSLayoutConstraint.activate([ + avatar.topAnchor.constraint(equalTo: self.topAnchor, constant: 3), + avatar.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 3), + avatar.bottomAnchor.constraint(equalTo: self.bottomAnchor), +// avatar.heightAnchor.constraint(equalToConstant: self.frame.height-6) + ]) + + addSubview(nameLbl) + NSLayoutConstraint.activate([ + nameLbl.leadingAnchor.constraint(equalTo: avatar.trailingAnchor, constant: 5), + nameLbl.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: 3), + nameLbl.centerYAnchor.constraint(equalTo: self.centerYAnchor) + ]) + } +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/File.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/File.swift new file mode 100644 index 0000000..d9cb0c6 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/File.swift @@ -0,0 +1,9 @@ +// +// File.swift +// Fakestagram-Xcode10 +// +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. +// + +import Foundation diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostXIBViewController.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostXIBViewController.swift new file mode 100644 index 0000000..50d81d9 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostXIBViewController.swift @@ -0,0 +1,47 @@ +// +// PostXIBViewController.swift +// Fakestagram-Xcode10 +// +// Created by Ricardo Hernandez D4 on 10/12/19. +// Copyright © 2019 unam. All rights reserved. +// + +import UIKit + +class PostXIBViewController: UIViewController { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var likeCounter: UILabel! + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var likeBttn: UIButton! + @IBOutlet weak var commentBttn: UIButton! + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + @IBAction func onTapLike(_ sender: Any){ + print("Like") + } + + @IBAction func onTapCreateComment(_ sender: Any){ + print("Comment") + } + + @IBAction func onTapShowComments(_ sender: Any){ + print("Show comment") + } + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostXIBViewController.xib b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostXIBViewController.xib new file mode 100644 index 0000000..66f188b --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostXIBViewController.xib @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 585b87bbc23b6ddfef51e58f7ade0711b68704c5 Mon Sep 17 00:00:00 2001 From: Luis Ezcurdia Razo Date: Sat, 12 Oct 2019 14:03:44 -0500 Subject: [PATCH 12/28] Implement views with XIB and programatic views --- fakestagram.xcodeproj/project.pbxproj | 32 +++++ fakestagram/Base.lproj/Main.storyboard | 10 +- fakestagram/Models/Author.swift | 14 +++ fakestagram/Models/Comment.swift | 14 +++ fakestagram/Models/Like.swift | 13 ++ fakestagram/PostViewController.swift | 11 -- fakestagram/View/AuthorView.swift | 62 ++++++++++ fakestagram/View/ShowPostViewController.swift | 48 ++++++++ fakestagram/View/ShowPostViewController.xib | 111 ++++++++++++++++++ 9 files changed, 299 insertions(+), 16 deletions(-) create mode 100644 fakestagram/Models/Author.swift create mode 100644 fakestagram/Models/Comment.swift create mode 100644 fakestagram/Models/Like.swift create mode 100644 fakestagram/View/AuthorView.swift create mode 100644 fakestagram/View/ShowPostViewController.swift create mode 100644 fakestagram/View/ShowPostViewController.xib diff --git a/fakestagram.xcodeproj/project.pbxproj b/fakestagram.xcodeproj/project.pbxproj index 53113d8..2ec7aa6 100644 --- a/fakestagram.xcodeproj/project.pbxproj +++ b/fakestagram.xcodeproj/project.pbxproj @@ -21,6 +21,12 @@ E0C93E9923514D8800FD330C /* posts.successful.json in Resources */ = {isa = PBXBuildFile; fileRef = E0C93E9823514D8800FD330C /* posts.successful.json */; }; E0C93E9B23515A0400FD330C /* show_post.successful.json in Resources */ = {isa = PBXBuildFile; fileRef = E0C93E9A23515A0400FD330C /* show_post.successful.json */; }; E0C93E9D23515CEE00FD330C /* CodableSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93E9C23515CEE00FD330C /* CodableSerializer.swift */; }; + E0C93EA123523B7C00FD330C /* ShowPostViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93E9F23523B7C00FD330C /* ShowPostViewController.swift */; }; + E0C93EA223523B7C00FD330C /* ShowPostViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E0C93EA023523B7C00FD330C /* ShowPostViewController.xib */; }; + E0C93EA42352452900FD330C /* AuthorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93EA32352452900FD330C /* AuthorView.swift */; }; + E0C93EA62352454E00FD330C /* Author.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93EA52352454E00FD330C /* Author.swift */; }; + E0C93EA82352455C00FD330C /* Comment.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93EA72352455C00FD330C /* Comment.swift */; }; + E0C93EAA2352457200FD330C /* Like.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93EA92352457200FD330C /* Like.swift */; }; E0E8B9652348018200DA9D1A /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9642348018200DA9D1A /* Credentials.swift */; }; E0E8B9682348036D00DA9D1A /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9672348036D00DA9D1A /* Client.swift */; }; E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B96923481D5A00DA9D1A /* StatusCode.swift */; }; @@ -62,6 +68,12 @@ E0C93E9823514D8800FD330C /* posts.successful.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = posts.successful.json; sourceTree = ""; }; E0C93E9A23515A0400FD330C /* show_post.successful.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = show_post.successful.json; sourceTree = ""; }; E0C93E9C23515CEE00FD330C /* CodableSerializer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodableSerializer.swift; sourceTree = ""; }; + E0C93E9F23523B7C00FD330C /* ShowPostViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShowPostViewController.swift; sourceTree = ""; }; + E0C93EA023523B7C00FD330C /* ShowPostViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ShowPostViewController.xib; sourceTree = ""; }; + E0C93EA32352452900FD330C /* AuthorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorView.swift; sourceTree = ""; }; + E0C93EA52352454E00FD330C /* Author.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Author.swift; sourceTree = ""; }; + E0C93EA72352455C00FD330C /* Comment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Comment.swift; sourceTree = ""; }; + E0C93EA92352457200FD330C /* Like.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Like.swift; sourceTree = ""; }; E0E8B9642348018200DA9D1A /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; E0E8B9672348036D00DA9D1A /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = ""; }; E0E8B96923481D5A00DA9D1A /* StatusCode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusCode.swift; sourceTree = ""; }; @@ -128,6 +140,7 @@ E084FAD8233A8734009AC50D /* fakestagram */ = { isa = PBXGroup; children = ( + E0C93E9E23523B4700FD330C /* View */, E0E8B972234918ED00DA9D1A /* Models */, E0E8B96F234916AA00DA9D1A /* Network */, E0E8B9662348035800DA9D1A /* DataSource */, @@ -164,6 +177,16 @@ path = casettes; sourceTree = ""; }; + E0C93E9E23523B4700FD330C /* View */ = { + isa = PBXGroup; + children = ( + E0C93E9F23523B7C00FD330C /* ShowPostViewController.swift */, + E0C93EA023523B7C00FD330C /* ShowPostViewController.xib */, + E0C93EA32352452900FD330C /* AuthorView.swift */, + ); + path = View; + sourceTree = ""; + }; E0E8B9662348035800DA9D1A /* DataSource */ = { isa = PBXGroup; children = ( @@ -189,6 +212,9 @@ children = ( E0E8B973234918FF00DA9D1A /* Account.swift */, E0E8B9752349197100DA9D1A /* Post.swift */, + E0C93EA52352454E00FD330C /* Author.swift */, + E0C93EA72352455C00FD330C /* Comment.swift */, + E0C93EA92352457200FD330C /* Like.swift */, ); path = Models; sourceTree = ""; @@ -286,6 +312,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + E0C93EA223523B7C00FD330C /* ShowPostViewController.xib in Resources */, E084FAE6233A8735009AC50D /* LaunchScreen.storyboard in Resources */, E084FAE3233A8735009AC50D /* Assets.xcassets in Resources */, E084FAE1233A8734009AC50D /* Main.storyboard in Resources */, @@ -372,14 +399,19 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + E0C93EA42352452900FD330C /* AuthorView.swift in Sources */, E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */, E0E8B974234918FF00DA9D1A /* Account.swift in Sources */, + E0C93EA123523B7C00FD330C /* ShowPostViewController.swift in Sources */, E038FCED233FC78600E28571 /* PostViewController.swift in Sources */, + E0C93EA82352455C00FD330C /* Comment.swift in Sources */, + E0C93EAA2352457200FD330C /* Like.swift in Sources */, E0C93E9D23515CEE00FD330C /* CodableSerializer.swift in Sources */, E0E8B9762349197100DA9D1A /* Post.swift in Sources */, E084FADA233A8734009AC50D /* AppDelegate.swift in Sources */, E0E8B96E2348203B00DA9D1A /* RequestBuilder.swift in Sources */, E0E8B9682348036D00DA9D1A /* Client.swift in Sources */, + E0C93EA62352454E00FD330C /* Author.swift in Sources */, E0E8B96C23481E1700DA9D1A /* HttpResponse.swift in Sources */, E0E8B9652348018200DA9D1A /* Credentials.swift in Sources */, E084FAFC233A8888009AC50D /* PostsTableViewController.swift in Sources */, diff --git a/fakestagram/Base.lproj/Main.storyboard b/fakestagram/Base.lproj/Main.storyboard index 27e1b7e..ab43aeb 100644 --- a/fakestagram/Base.lproj/Main.storyboard +++ b/fakestagram/Base.lproj/Main.storyboard @@ -1,8 +1,8 @@ - + - + @@ -20,7 +20,7 @@ - + diff --git a/fakestagram/Models/Author.swift b/fakestagram/Models/Author.swift new file mode 100644 index 0000000..9ca5efe --- /dev/null +++ b/fakestagram/Models/Author.swift @@ -0,0 +1,14 @@ +// +// Author.swift +// fakestagram +// +// Created by LuisE on 10/12/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +struct Author: Codable { + let name: String +} + diff --git a/fakestagram/Models/Comment.swift b/fakestagram/Models/Comment.swift new file mode 100644 index 0000000..12db31e --- /dev/null +++ b/fakestagram/Models/Comment.swift @@ -0,0 +1,14 @@ +// +// Comment.swift +// fakestagram +// +// Created by LuisE on 10/12/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +struct Comment: Codable { + let content: String + let author: Author? +} diff --git a/fakestagram/Models/Like.swift b/fakestagram/Models/Like.swift new file mode 100644 index 0000000..5b2ba6f --- /dev/null +++ b/fakestagram/Models/Like.swift @@ -0,0 +1,13 @@ +// +// Like.swift +// fakestagram +// +// Created by LuisE on 10/12/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import Foundation + +struct Like: Codable { + let author: Author +} diff --git a/fakestagram/PostViewController.swift b/fakestagram/PostViewController.swift index dc0887e..f18ad1d 100644 --- a/fakestagram/PostViewController.swift +++ b/fakestagram/PostViewController.swift @@ -8,17 +8,6 @@ import UIKit -struct Author: Codable { - let name: String -} -struct Comment: Codable { - let content: String - let author: Author? -} -struct Like: Codable { - let author: Author -} - class PostViewController: UIViewController { var post: Post? { didSet { diff --git a/fakestagram/View/AuthorView.swift b/fakestagram/View/AuthorView.swift new file mode 100644 index 0000000..15ec4be --- /dev/null +++ b/fakestagram/View/AuthorView.swift @@ -0,0 +1,62 @@ +// +// AuthorView.swift +// fakestagram +// +// Created by LuisE on 10/12/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import UIKit + +class AuthorView: UIView { + var author: Author? { + didSet { updateContent() } + } + + private let avatar: UIImageView = { + let iv = UIImageView() + iv.image = UIImage(systemName: "profile.circle.fill") + iv.contentMode = .scaleAspectFill + iv.translatesAutoresizingMaskIntoConstraints = false + return iv + }() + private let nameLbl: UILabel = { + let lbl = UILabel() + lbl.text = "Lorem ipsum" + return lbl + }() + + convenience init() { + self.init(frame: .zero) + } + + override init(frame: CGRect) { + super.init(frame: frame) + setupConstraints() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + setupConstraints() + } + + private func setupConstraints() { + addSubview(avatar) + NSLayoutConstraint.activate([ + avatar.topAnchor.constraint(equalTo: self.topAnchor, constant: 3), + avatar.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 3), + avatar.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 3) + ]) + addSubview(nameLbl) + NSLayoutConstraint.activate([ + nameLbl.leadingAnchor.constraint(equalTo: avatar.trailingAnchor, constant: 5), + nameLbl.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: 3), + nameLbl.centerYAnchor.constraint(equalTo: self.centerYAnchor) + ]) + } + + func updateContent() { + guard let uauthor = author else { return } + nameLbl.text = uauthor.name + } +} diff --git a/fakestagram/View/ShowPostViewController.swift b/fakestagram/View/ShowPostViewController.swift new file mode 100644 index 0000000..c472c43 --- /dev/null +++ b/fakestagram/View/ShowPostViewController.swift @@ -0,0 +1,48 @@ +// +// PostViewController.swift +// fakestagram +// +// Created by LuisE on 10/12/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import UIKit + +class ShowPostViewController: UIViewController { + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var likeCounter: UILabel! + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var likeBttn: UIButton! + @IBOutlet weak var commentBttn: UIButton! + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + @IBAction + func onTapLike(_ sender: Any) { + print("like") + } + + @IBAction + func onTapCreateComment(_ sender: Any) { + print("to comment") + } + + @IBAction + func onTapShowComments(_ sender: Any) { + print("to show comment") + } + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/fakestagram/View/ShowPostViewController.xib b/fakestagram/View/ShowPostViewController.xib new file mode 100644 index 0000000..9d91849 --- /dev/null +++ b/fakestagram/View/ShowPostViewController.xib @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From acaf37b9832bc7307d8c376cf9195a2cc1966a80 Mon Sep 17 00:00:00 2001 From: Luis Ezcurdia Razo Date: Fri, 18 Oct 2019 17:09:54 -0500 Subject: [PATCH 13/28] Replace spagetti code with RestClient --- fakestagram/PostsTableViewController.swift | 42 +++++----------------- 1 file changed, 9 insertions(+), 33 deletions(-) diff --git a/fakestagram/PostsTableViewController.swift b/fakestagram/PostsTableViewController.swift index 7be52f3..68043c4 100644 --- a/fakestagram/PostsTableViewController.swift +++ b/fakestagram/PostsTableViewController.swift @@ -10,17 +10,16 @@ import UIKit class PostsTableViewController: UITableViewController { static let cellId = "PostCell" - var posts = [Post]() + var posts: [Post]? { + didSet { self.tableView.reloadData() } + } + let client = RestClient<[Post]>(client: Client.fakestagram, basePath: "/api/v1/posts/") override func viewDidLoad() { super.viewDidLoad() - loadPosts { data in - DispatchQueue.main.async { - self.posts = data - self.tableView.reloadData() - } + client.show { [unowned self] data in + self.posts = data } - // Uncomment the following line to preserve selection between presentations // self.clearsSelectionOnViewWillAppear = false @@ -35,11 +34,12 @@ class PostsTableViewController: UITableViewController { } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return posts.count + return posts?.count ?? 0 } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: PostsTableViewController.cellId, for: indexPath) + guard let posts = self.posts else { return cell } posts[indexPath.row].load { img in cell.imageView?.contentMode = .scaleAspectFit cell.imageView?.image = img @@ -94,32 +94,8 @@ class PostsTableViewController: UITableViewController { if segue.identifier == "showPostSegue" { let dest = segue.destination as! PostViewController let idx = self.tableView.indexPathForSelectedRow?.row ?? 0 - dest.post = posts[idx] + dest.post = posts?[idx] } } - func loadPosts(successful: @escaping ([Post]) -> Void) { - let url = URL(string: "https://fakestagram-api.herokuapp.com/api/v1/posts")! - var request = URLRequest(url: url) - request.setValue("application/json", forHTTPHeaderField: "Accept") - request.setValue("application/json", forHTTPHeaderField: "Content-Type") - request.httpMethod = "get" - request.addValue("Bearer f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e", forHTTPHeaderField: "Authorization") - - let task = URLSession.shared.dataTask(with: request) { (data, _, error) in - if error != nil || data == nil { - return - } - let decoder = JSONDecoder() - decoder.keyDecodingStrategy = .convertFromSnakeCase - do { - guard let data = data else { print("Empty response"); return } - let json = try decoder.decode([Post].self, from: data) - successful(json) - } catch let err { - print("Unable to parse successfull response: \(err.localizedDescription)") - } - } - task.resume() - } } From fb29e46a578181ecd308237d44cd7330834c95a5 Mon Sep 17 00:00:00 2001 From: Luis Ezcurdia Razo Date: Fri, 18 Oct 2019 20:41:48 -0500 Subject: [PATCH 14/28] Replace TableViewController with CollectionView through delegates --- fakestagram.xcodeproj/project.pbxproj | 26 ++- fakestagram/Base.lproj/Main.storyboard | 160 ++++++++++-------- fakestagram/Models/Author.swift | 1 - fakestagram/Models/Post.swift | 1 + fakestagram/PostsTableViewController.swift | 101 ----------- fakestagram/PostsViewController.swift | 59 +++++++ fakestagram/UIDevice+models.swift | 88 ++++++++++ fakestagram/{View => Views}/AuthorView.swift | 26 +-- .../Views/PostCollectionViewCell.swift | 42 +++++ fakestagram/Views/PostCollectionViewCell.xib | 92 ++++++++++ .../ShowPostViewController.swift | 4 +- .../ShowPostViewController.xib | 0 12 files changed, 407 insertions(+), 193 deletions(-) delete mode 100644 fakestagram/PostsTableViewController.swift create mode 100644 fakestagram/PostsViewController.swift create mode 100644 fakestagram/UIDevice+models.swift rename fakestagram/{View => Views}/AuthorView.swift (81%) create mode 100644 fakestagram/Views/PostCollectionViewCell.swift create mode 100644 fakestagram/Views/PostCollectionViewCell.xib rename fakestagram/{View => Views}/ShowPostViewController.swift (99%) rename fakestagram/{View => Views}/ShowPostViewController.xib (100%) diff --git a/fakestagram.xcodeproj/project.pbxproj b/fakestagram.xcodeproj/project.pbxproj index 2ec7aa6..f9a6cfc 100644 --- a/fakestagram.xcodeproj/project.pbxproj +++ b/fakestagram.xcodeproj/project.pbxproj @@ -16,7 +16,9 @@ E084FAE3233A8735009AC50D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E084FAE2233A8735009AC50D /* Assets.xcassets */; }; E084FAE6233A8735009AC50D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E084FAE4233A8735009AC50D /* LaunchScreen.storyboard */; }; E084FAF1233A8735009AC50D /* RequestBuilderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E084FAF0233A8735009AC50D /* RequestBuilderTests.swift */; }; - E084FAFC233A8888009AC50D /* PostsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E084FAFB233A8888009AC50D /* PostsTableViewController.swift */; }; + E0A9ED51235A782F00A0527E /* PostsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0A9ED50235A782F00A0527E /* PostsViewController.swift */; }; + E0A9ED54235A7FF300A0527E /* PostCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0A9ED52235A7FF300A0527E /* PostCollectionViewCell.swift */; }; + E0A9ED55235A7FF300A0527E /* PostCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E0A9ED53235A7FF300A0527E /* PostCollectionViewCell.xib */; }; E0C93E942351435100FD330C /* RestClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93E932351435100FD330C /* RestClientTest.swift */; }; E0C93E9923514D8800FD330C /* posts.successful.json in Resources */ = {isa = PBXBuildFile; fileRef = E0C93E9823514D8800FD330C /* posts.successful.json */; }; E0C93E9B23515A0400FD330C /* show_post.successful.json in Resources */ = {isa = PBXBuildFile; fileRef = E0C93E9A23515A0400FD330C /* show_post.successful.json */; }; @@ -27,6 +29,7 @@ E0C93EA62352454E00FD330C /* Author.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93EA52352454E00FD330C /* Author.swift */; }; E0C93EA82352455C00FD330C /* Comment.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93EA72352455C00FD330C /* Comment.swift */; }; E0C93EAA2352457200FD330C /* Like.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93EA92352457200FD330C /* Like.swift */; }; + E0E2545F235A9F3A00C55767 /* UIDevice+models.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E2545E235A9F3A00C55767 /* UIDevice+models.swift */; }; E0E8B9652348018200DA9D1A /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9642348018200DA9D1A /* Credentials.swift */; }; E0E8B9682348036D00DA9D1A /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9672348036D00DA9D1A /* Client.swift */; }; E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B96923481D5A00DA9D1A /* StatusCode.swift */; }; @@ -63,7 +66,9 @@ E084FAEC233A8735009AC50D /* fakestagramTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = fakestagramTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; E084FAF0233A8735009AC50D /* RequestBuilderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestBuilderTests.swift; sourceTree = ""; }; E084FAF2233A8735009AC50D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - E084FAFB233A8888009AC50D /* PostsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostsTableViewController.swift; sourceTree = ""; }; + E0A9ED50235A782F00A0527E /* PostsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostsViewController.swift; sourceTree = ""; }; + E0A9ED52235A7FF300A0527E /* PostCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostCollectionViewCell.swift; sourceTree = ""; }; + E0A9ED53235A7FF300A0527E /* PostCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PostCollectionViewCell.xib; sourceTree = ""; }; E0C93E932351435100FD330C /* RestClientTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestClientTest.swift; sourceTree = ""; }; E0C93E9823514D8800FD330C /* posts.successful.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = posts.successful.json; sourceTree = ""; }; E0C93E9A23515A0400FD330C /* show_post.successful.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = show_post.successful.json; sourceTree = ""; }; @@ -74,6 +79,7 @@ E0C93EA52352454E00FD330C /* Author.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Author.swift; sourceTree = ""; }; E0C93EA72352455C00FD330C /* Comment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Comment.swift; sourceTree = ""; }; E0C93EA92352457200FD330C /* Like.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Like.swift; sourceTree = ""; }; + E0E2545E235A9F3A00C55767 /* UIDevice+models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIDevice+models.swift"; sourceTree = ""; }; E0E8B9642348018200DA9D1A /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; E0E8B9672348036D00DA9D1A /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = ""; }; E0E8B96923481D5A00DA9D1A /* StatusCode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusCode.swift; sourceTree = ""; }; @@ -140,19 +146,20 @@ E084FAD8233A8734009AC50D /* fakestagram */ = { isa = PBXGroup; children = ( - E0C93E9E23523B4700FD330C /* View */, + E0C93E9E23523B4700FD330C /* Views */, E0E8B972234918ED00DA9D1A /* Models */, E0E8B96F234916AA00DA9D1A /* Network */, E0E8B9662348035800DA9D1A /* DataSource */, E084FAD9233A8734009AC50D /* AppDelegate.swift */, E084FADB233A8734009AC50D /* SceneDelegate.swift */, - E084FAFB233A8888009AC50D /* PostsTableViewController.swift */, E084FADF233A8734009AC50D /* Main.storyboard */, E038FCEC233FC78600E28571 /* PostViewController.swift */, + E0A9ED50235A782F00A0527E /* PostsViewController.swift */, E084FAE2233A8735009AC50D /* Assets.xcassets */, E084FAE4233A8735009AC50D /* LaunchScreen.storyboard */, E084FAE7233A8735009AC50D /* Info.plist */, E0E8B9642348018200DA9D1A /* Credentials.swift */, + E0E2545E235A9F3A00C55767 /* UIDevice+models.swift */, ); path = fakestagram; sourceTree = ""; @@ -177,14 +184,16 @@ path = casettes; sourceTree = ""; }; - E0C93E9E23523B4700FD330C /* View */ = { + E0C93E9E23523B4700FD330C /* Views */ = { isa = PBXGroup; children = ( + E0A9ED52235A7FF300A0527E /* PostCollectionViewCell.swift */, + E0A9ED53235A7FF300A0527E /* PostCollectionViewCell.xib */, E0C93E9F23523B7C00FD330C /* ShowPostViewController.swift */, E0C93EA023523B7C00FD330C /* ShowPostViewController.xib */, E0C93EA32352452900FD330C /* AuthorView.swift */, ); - path = View; + path = Views; sourceTree = ""; }; E0E8B9662348035800DA9D1A /* DataSource */ = { @@ -316,6 +325,7 @@ E084FAE6233A8735009AC50D /* LaunchScreen.storyboard in Resources */, E084FAE3233A8735009AC50D /* Assets.xcassets in Resources */, E084FAE1233A8734009AC50D /* Main.storyboard in Resources */, + E0A9ED55235A7FF300A0527E /* PostCollectionViewCell.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -400,6 +410,7 @@ buildActionMask = 2147483647; files = ( E0C93EA42352452900FD330C /* AuthorView.swift in Sources */, + E0E2545F235A9F3A00C55767 /* UIDevice+models.swift in Sources */, E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */, E0E8B974234918FF00DA9D1A /* Account.swift in Sources */, E0C93EA123523B7C00FD330C /* ShowPostViewController.swift in Sources */, @@ -411,10 +422,11 @@ E084FADA233A8734009AC50D /* AppDelegate.swift in Sources */, E0E8B96E2348203B00DA9D1A /* RequestBuilder.swift in Sources */, E0E8B9682348036D00DA9D1A /* Client.swift in Sources */, + E0A9ED51235A782F00A0527E /* PostsViewController.swift in Sources */, E0C93EA62352454E00FD330C /* Author.swift in Sources */, + E0A9ED54235A7FF300A0527E /* PostCollectionViewCell.swift in Sources */, E0E8B96C23481E1700DA9D1A /* HttpResponse.swift in Sources */, E0E8B9652348018200DA9D1A /* Credentials.swift in Sources */, - E084FAFC233A8888009AC50D /* PostsTableViewController.swift in Sources */, E0E8B971234916D100DA9D1A /* RestClient.swift in Sources */, E084FADC233A8734009AC50D /* SceneDelegate.swift in Sources */, ); diff --git a/fakestagram/Base.lproj/Main.storyboard b/fakestagram/Base.lproj/Main.storyboard index ab43aeb..728a195 100644 --- a/fakestagram/Base.lproj/Main.storyboard +++ b/fakestagram/Base.lproj/Main.storyboard @@ -1,98 +1,116 @@ - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - + + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + diff --git a/fakestagram/Models/Author.swift b/fakestagram/Models/Author.swift index 9ca5efe..607dad2 100644 --- a/fakestagram/Models/Author.swift +++ b/fakestagram/Models/Author.swift @@ -11,4 +11,3 @@ import Foundation struct Author: Codable { let name: String } - diff --git a/fakestagram/Models/Post.swift b/fakestagram/Models/Post.swift index c7e6397..0db4f04 100644 --- a/fakestagram/Models/Post.swift +++ b/fakestagram/Models/Post.swift @@ -18,6 +18,7 @@ struct Post: Codable { let createdAt: String var liked: Bool let location: String + let author: Author? func likesCountText() -> String { return "\(likesCount) likes" diff --git a/fakestagram/PostsTableViewController.swift b/fakestagram/PostsTableViewController.swift deleted file mode 100644 index 68043c4..0000000 --- a/fakestagram/PostsTableViewController.swift +++ /dev/null @@ -1,101 +0,0 @@ -// -// PostsTableViewController.swift -// fakestagram -// -// Created by LuisE on 9/24/19. -// Copyright © 2019 3zcurdia. All rights reserved. -// - -import UIKit - -class PostsTableViewController: UITableViewController { - static let cellId = "PostCell" - var posts: [Post]? { - didSet { self.tableView.reloadData() } - } - let client = RestClient<[Post]>(client: Client.fakestagram, basePath: "/api/v1/posts/") - - override func viewDidLoad() { - super.viewDidLoad() - client.show { [unowned self] data in - self.posts = data - } - // Uncomment the following line to preserve selection between presentations - // self.clearsSelectionOnViewWillAppear = false - - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. - // self.navigationItem.rightBarButtonItem = self.editButtonItem - } - - // MARK: - Table view data source - - override func numberOfSections(in tableView: UITableView) -> Int { - return 1 - } - - override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return posts?.count ?? 0 - } - - override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCell(withIdentifier: PostsTableViewController.cellId, for: indexPath) - guard let posts = self.posts else { return cell } - posts[indexPath.row].load { img in - cell.imageView?.contentMode = .scaleAspectFit - cell.imageView?.image = img - } - cell.textLabel?.text = posts[indexPath.row].title - cell.detailTextLabel?.text = posts[indexPath.row].location - - return cell - } - - /* - // Override to support conditional editing of the table view. - override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { - // Return false if you do not want the specified item to be editable. - return true - } - */ - - /* - // Override to support editing the table view. - override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { - if editingStyle == .delete { - // Delete the row from the data source - tableView.deleteRows(at: [indexPath], with: .fade) - } else if editingStyle == .insert { - // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view - } - } - */ - - /* - // Override to support rearranging the table view. - override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) { - - } - */ - - /* - // Override to support conditional rearranging of the table view. - override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool { - // Return false if you do not want the item to be re-orderable. - return true - } - */ - - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. - if segue.identifier == "showPostSegue" { - let dest = segue.destination as! PostViewController - let idx = self.tableView.indexPathForSelectedRow?.row ?? 0 - dest.post = posts?[idx] - } - } - -} diff --git a/fakestagram/PostsViewController.swift b/fakestagram/PostsViewController.swift new file mode 100644 index 0000000..f29f6e4 --- /dev/null +++ b/fakestagram/PostsViewController.swift @@ -0,0 +1,59 @@ +// +// PostsViewController.swift +// fakestagram +// +// Created by LuisE on 10/18/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import UIKit + +class PostsViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout { + var posts: [Post]? { + didSet { + self.postsCollection.reloadData() + } + } + let client = RestClient<[Post]>(client: Client.fakestagram, basePath: "/api/v1/posts") + + @IBOutlet weak var postsCollection: UICollectionView! + override func viewDidLoad() { + super.viewDidLoad() + postsCollection.delegate = self + postsCollection.dataSource = self + let nib = UINib(nibName: String(describing: PostCollectionViewCell.self), bundle: nil) + postsCollection.register(nib, forCellWithReuseIdentifier: PostCollectionViewCell.identifier) + client.show { [unowned self] data in + self.posts = data + } + + // Do any additional setup after loading the view. + } + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + + // MARK: - Collection View Delegates + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return self.posts?.count ?? 0 + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PostCollectionViewCell.identifier, for: indexPath) as! PostCollectionViewCell + guard let posts = self.posts else { return cell } + cell.post = posts[indexPath.row] + return cell + } + + // MARK: - Flow Layout Delegates + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + return CGSize(width: self.view.frame.width, height: 650) + } +} diff --git a/fakestagram/UIDevice+models.swift b/fakestagram/UIDevice+models.swift new file mode 100644 index 0000000..529f942 --- /dev/null +++ b/fakestagram/UIDevice+models.swift @@ -0,0 +1,88 @@ +// +// UIDevice+models.swift +// fakestagram +// +// Created by LuisE on 10/18/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import UIKit + +public extension UIDevice { + + static let modelName: String = { + var systemInfo = utsname() + uname(&systemInfo) + let machineMirror = Mirror(reflecting: systemInfo.machine) + let identifier = machineMirror.children.reduce("") { identifier, element in + guard let value = element.value as? Int8, value != 0 else { return identifier } + return identifier + String(UnicodeScalar(UInt8(value))) + } + + func mapToDevice(identifier: String) -> String { // swiftlint:disable:this cyclomatic_complexity + #if os(iOS) + switch identifier { + case "iPod5,1": return "iPod touch (5th generation)" + case "iPod7,1": return "iPod touch (6th generation)" + case "iPod9,1": return "iPod touch (7th generation)" + case "iPhone3,1", "iPhone3,2", "iPhone3,3": return "iPhone 4" + case "iPhone4,1": return "iPhone 4s" + case "iPhone5,1", "iPhone5,2": return "iPhone 5" + case "iPhone5,3", "iPhone5,4": return "iPhone 5c" + case "iPhone6,1", "iPhone6,2": return "iPhone 5s" + case "iPhone7,2": return "iPhone 6" + case "iPhone7,1": return "iPhone 6 Plus" + case "iPhone8,1": return "iPhone 6s" + case "iPhone8,2": return "iPhone 6s Plus" + case "iPhone9,1", "iPhone9,3": return "iPhone 7" + case "iPhone9,2", "iPhone9,4": return "iPhone 7 Plus" + case "iPhone8,4": return "iPhone SE" + case "iPhone10,1", "iPhone10,4": return "iPhone 8" + case "iPhone10,2", "iPhone10,5": return "iPhone 8 Plus" + case "iPhone10,3", "iPhone10,6": return "iPhone X" + case "iPhone11,2": return "iPhone XS" + case "iPhone11,4", "iPhone11,6": return "iPhone XS Max" + case "iPhone11,8": return "iPhone XR" + case "iPhone12,1": return "iPhone 11" + case "iPhone12,3": return "iPhone 11 Pro" + case "iPhone12,5": return "iPhone 11 Pro Max" + case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4":return "iPad 2" + case "iPad3,1", "iPad3,2", "iPad3,3": return "iPad (3rd generation)" + case "iPad3,4", "iPad3,5", "iPad3,6": return "iPad (4th generation)" + case "iPad6,11", "iPad6,12": return "iPad (5th generation)" + case "iPad7,5", "iPad7,6": return "iPad (6th generation)" + case "iPad7,11", "iPad7,12": return "iPad (7th generation)" + case "iPad4,1", "iPad4,2", "iPad4,3": return "iPad Air" + case "iPad5,3", "iPad5,4": return "iPad Air 2" + case "iPad11,4", "iPad11,5": return "iPad Air (3rd generation)" + case "iPad2,5", "iPad2,6", "iPad2,7": return "iPad mini" + case "iPad4,4", "iPad4,5", "iPad4,6": return "iPad mini 2" + case "iPad4,7", "iPad4,8", "iPad4,9": return "iPad mini 3" + case "iPad5,1", "iPad5,2": return "iPad mini 4" + case "iPad11,1", "iPad11,2": return "iPad mini (5th generation)" + case "iPad6,3", "iPad6,4": return "iPad Pro (9.7-inch)" + case "iPad6,7", "iPad6,8": return "iPad Pro (12.9-inch)" + case "iPad7,1", "iPad7,2": return "iPad Pro (12.9-inch) (2nd generation)" + case "iPad7,3", "iPad7,4": return "iPad Pro (10.5-inch)" + case "iPad8,1", "iPad8,2", "iPad8,3", "iPad8,4":return "iPad Pro (11-inch)" + case "iPad8,5", "iPad8,6", "iPad8,7", "iPad8,8":return "iPad Pro (12.9-inch) (3rd generation)" + case "AppleTV5,3": return "Apple TV" + case "AppleTV6,2": return "Apple TV 4K" + case "AudioAccessory1,1": return "HomePod" + case "i386", "x86_64": return "Simulator \(mapToDevice(identifier: ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] ?? "iOS"))" + default: return identifier + } + #elseif os(tvOS) + switch identifier { + case "AppleTV5,3": return "Apple TV 4" + case "AppleTV6,2": return "Apple TV 4K" + case "i386", "x86_64": return "Simulator \(mapToDevice(identifier: ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] ?? "tvOS"))" + default: return identifier + } + #endif + } + + return mapToDevice(identifier: identifier) + }() + +} diff --git a/fakestagram/View/AuthorView.swift b/fakestagram/Views/AuthorView.swift similarity index 81% rename from fakestagram/View/AuthorView.swift rename to fakestagram/Views/AuthorView.swift index 15ec4be..288967c 100644 --- a/fakestagram/View/AuthorView.swift +++ b/fakestagram/Views/AuthorView.swift @@ -8,14 +8,15 @@ import UIKit +@IBDesignable class AuthorView: UIView { var author: Author? { didSet { updateContent() } } - + private let avatar: UIImageView = { let iv = UIImageView() - iv.image = UIImage(systemName: "profile.circle.fill") + iv.image = UIImage(systemName: "person.circle.fill") iv.contentMode = .scaleAspectFill iv.translatesAutoresizingMaskIntoConstraints = false return iv @@ -23,38 +24,41 @@ class AuthorView: UIView { private let nameLbl: UILabel = { let lbl = UILabel() lbl.text = "Lorem ipsum" + lbl.font = UIFont.systemFont(ofSize: 18, weight: .bold) + lbl.translatesAutoresizingMaskIntoConstraints = false return lbl }() - + convenience init() { self.init(frame: .zero) } - + override init(frame: CGRect) { super.init(frame: frame) setupConstraints() } - + required init?(coder: NSCoder) { super.init(coder: coder) setupConstraints() } - + private func setupConstraints() { addSubview(avatar) NSLayoutConstraint.activate([ - avatar.topAnchor.constraint(equalTo: self.topAnchor, constant: 3), - avatar.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 3), - avatar.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 3) + avatar.topAnchor.constraint(equalTo: self.topAnchor, constant: 5), + avatar.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 5), + avatar.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: -5), + avatar.widthAnchor.constraint(equalToConstant: 90) ]) addSubview(nameLbl) NSLayoutConstraint.activate([ nameLbl.leadingAnchor.constraint(equalTo: avatar.trailingAnchor, constant: 5), - nameLbl.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: 3), + nameLbl.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -5), nameLbl.centerYAnchor.constraint(equalTo: self.centerYAnchor) ]) } - + func updateContent() { guard let uauthor = author else { return } nameLbl.text = uauthor.name diff --git a/fakestagram/Views/PostCollectionViewCell.swift b/fakestagram/Views/PostCollectionViewCell.swift new file mode 100644 index 0000000..1d5be7b --- /dev/null +++ b/fakestagram/Views/PostCollectionViewCell.swift @@ -0,0 +1,42 @@ +// +// PostCollectionViewCell.swift +// fakestagram +// +// Created by LuisE on 10/18/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import UIKit + +class PostCollectionViewCell: UICollectionViewCell { + static let identifier: String = "PostCell" + public var post: Post? { + didSet { + updateView() + } + } + @IBOutlet weak var authorView: AuthorView! + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var likeCounter: UILabel! + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var likeBttn: UIButton! + @IBOutlet weak var commentBttn: UIButton! + + func reset() { + self.imageView.image = nil + self.likeCounter.text = "" + self.titleLabel.text = "" + } + + func updateView() { + reset() + guard let post = self.post else { return } + self.authorView.author = post.author + self.titleLabel.text = post.title + self.likeCounter.text = post.likesCountText() + post.load { [unowned self] img in + self.imageView.image = img + } + } + +} diff --git a/fakestagram/Views/PostCollectionViewCell.xib b/fakestagram/Views/PostCollectionViewCell.xib new file mode 100644 index 0000000..afff929 --- /dev/null +++ b/fakestagram/Views/PostCollectionViewCell.xib @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fakestagram/View/ShowPostViewController.swift b/fakestagram/Views/ShowPostViewController.swift similarity index 99% rename from fakestagram/View/ShowPostViewController.swift rename to fakestagram/Views/ShowPostViewController.swift index c472c43..c0afe40 100644 --- a/fakestagram/View/ShowPostViewController.swift +++ b/fakestagram/Views/ShowPostViewController.swift @@ -19,7 +19,7 @@ class ShowPostViewController: UIViewController { // Do any additional setup after loading the view. } - + @IBAction func onTapLike(_ sender: Any) { print("like") @@ -29,7 +29,7 @@ class ShowPostViewController: UIViewController { func onTapCreateComment(_ sender: Any) { print("to comment") } - + @IBAction func onTapShowComments(_ sender: Any) { print("to show comment") diff --git a/fakestagram/View/ShowPostViewController.xib b/fakestagram/Views/ShowPostViewController.xib similarity index 100% rename from fakestagram/View/ShowPostViewController.xib rename to fakestagram/Views/ShowPostViewController.xib From 9cf86853b650a82c505d1f7de64f6b88dd4bb859 Mon Sep 17 00:00:00 2001 From: Ricardo Hernandez Date: Fri, 18 Oct 2019 21:00:08 -0500 Subject: [PATCH 15/28] Updating --- .../project.pbxproj | 12 ++ .../Base.lproj/Main.storyboard | 133 +++++++++++++----- .../PostsTableViewController.swift | 41 ++---- .../PostsViewController.swift | 69 +++++++++ .../Views/AuthorView.swift | 3 + .../Views/PostCollectionViewCell.swift | 49 +++++++ .../Views/PostCollectionViewCell.xib | 94 +++++++++++++ 7 files changed, 330 insertions(+), 71 deletions(-) create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/PostsViewController.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.xib diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj index 4a4dbf0..640d3c5 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj @@ -34,6 +34,9 @@ 7909C68023524576000B0380 /* Like.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C67F23524576000B0380 /* Like.swift */; }; 7909C6822352458A000B0380 /* Author.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C6812352458A000B0380 /* Author.swift */; }; 7909C686235246FE000B0380 /* AuthorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C685235246FE000B0380 /* AuthorView.swift */; }; + 79762857235A787300055EC7 /* PostsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79762856235A787300055EC7 /* PostsViewController.swift */; }; + 7976285A235A80F500055EC7 /* PostCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79762858235A80F500055EC7 /* PostCollectionViewCell.swift */; }; + 7976285B235A80F500055EC7 /* PostCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 79762859235A80F500055EC7 /* PostCollectionViewCell.xib */; }; F2AD903247DD33845EA3C7FB /* Pods_Fakestagram_Xcode10.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F32B394EBB804D9C3E14052 /* Pods_Fakestagram_Xcode10.framework */; }; /* End PBXBuildFile section */ @@ -81,6 +84,9 @@ 7909C67F23524576000B0380 /* Like.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Like.swift; sourceTree = ""; }; 7909C6812352458A000B0380 /* Author.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Author.swift; sourceTree = ""; }; 7909C685235246FE000B0380 /* AuthorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorView.swift; sourceTree = ""; }; + 79762856235A787300055EC7 /* PostsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostsViewController.swift; sourceTree = ""; }; + 79762858235A80F500055EC7 /* PostCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = PostCollectionViewCell.swift; path = "Fakestagram-Xcode10/Views/PostCollectionViewCell.swift"; sourceTree = SOURCE_ROOT; }; + 79762859235A80F500055EC7 /* PostCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = PostCollectionViewCell.xib; path = "Fakestagram-Xcode10/Views/PostCollectionViewCell.xib"; sourceTree = SOURCE_ROOT; }; 7F32B394EBB804D9C3E14052 /* Pods_Fakestagram_Xcode10.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Fakestagram_Xcode10.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CC485714B1528A06F25D0EB3 /* Pods_Fakestagram_Xcode10Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Fakestagram_Xcode10Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; DCED9AC22B8D6D07928F1A67 /* Pods-Fakestagram-Xcode10Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fakestagram-Xcode10Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Fakestagram-Xcode10Tests/Pods-Fakestagram-Xcode10Tests.debug.xcconfig"; sourceTree = ""; }; @@ -149,6 +155,7 @@ 7701BEAF233F1B1B0004C30D /* Fakestagram-Xcode10 */ = { isa = PBXGroup; children = ( + 79762856235A787300055EC7 /* PostsViewController.swift */, 7909C67823523B52000B0380 /* Views */, 7909C65823521FD9000B0380 /* Network */, 7909C65723521FD3000B0380 /* DataSource */, @@ -223,6 +230,8 @@ children = ( 7909C67923523BE3000B0380 /* PostXIBViewController.swift */, 7909C67A23523BE3000B0380 /* PostXIBViewController.xib */, + 79762858235A80F500055EC7 /* PostCollectionViewCell.swift */, + 79762859235A80F500055EC7 /* PostCollectionViewCell.xib */, 7909C685235246FE000B0380 /* AuthorView.swift */, ); path = Views; @@ -316,6 +325,7 @@ 7701BEB8233F1B1C0004C30D /* Assets.xcassets in Resources */, 7909C67C23523BE3000B0380 /* PostXIBViewController.xib in Resources */, 7701BEB6233F1B1B0004C30D /* Main.storyboard in Resources */, + 7976285B235A80F500055EC7 /* PostCollectionViewCell.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -416,7 +426,9 @@ 7909C68023524576000B0380 /* Like.swift in Sources */, 7909C6822352458A000B0380 /* Author.swift in Sources */, 7701BED1233F1B540004C30D /* PostsTableViewController.swift in Sources */, + 79762857235A787300055EC7 /* PostsViewController.swift in Sources */, 7909C65E23522061000B0380 /* Client.swift in Sources */, + 7976285A235A80F500055EC7 /* PostCollectionViewCell.swift in Sources */, 7909C6682352214C000B0380 /* CodableSerializer.swift in Sources */, 7909C686235246FE000B0380 /* AuthorView.swift in Sources */, 7909C66A2352216E000B0380 /* RestClient.swift in Sources */, diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Base.lproj/Main.storyboard b/Fakestagram-Xcode10/Fakestagram-Xcode10/Base.lproj/Main.storyboard index e29aa1a..4cf3e4b 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/Base.lproj/Main.storyboard +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Base.lproj/Main.storyboard @@ -1,57 +1,112 @@ - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsTableViewController.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsTableViewController.swift index 1932e44..b6a300d 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsTableViewController.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsTableViewController.swift @@ -10,15 +10,15 @@ import UIKit class PostsTableViewController: UITableViewController { static let cellId = "PostCell" - var posts = [Post]() + var posts: [Post]?{ + didSet{ self.tableView.reloadData()} + } + let client = RestClient<[Post]>(client: Client.fakestagram, basePath: "/api/v1/posts/") override func viewDidLoad() { super.viewDidLoad() - loadPosts { data in - DispatchQueue.main.async { - self.posts = data - self.tableView.reloadData() - } + client.show { [unowned self] (data) in + self.posts = data } // Uncomment the following line to preserve selection between presentations @@ -33,11 +33,12 @@ class PostsTableViewController: UITableViewController { } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return posts.count + return posts?.count ?? 0 } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: PostsTableViewController.cellId, for: indexPath) + guard let posts = self.posts else{return cell} posts[indexPath.row].load { img in cell.imageView?.contentMode = .scaleAspectFit cell.imageView?.image = img @@ -90,32 +91,8 @@ class PostsTableViewController: UITableViewController { if segue.identifier == "showPostSegue" { let dest = segue.destination as! PostViewController let idx = self.tableView.indexPathForSelectedRow?.row ?? 0 - dest.post = posts[idx] + dest.post = posts?[idx] } } - func loadPosts(successful: @escaping ([Post]) -> Void) { - let url = URL(string: "https://fakestagram-api.herokuapp.com/api/v1/posts")! - var request = URLRequest(url: url) - request.setValue("application/json", forHTTPHeaderField: "Accept") - request.setValue("application/json", forHTTPHeaderField: "Content-Type") - request.httpMethod = "get" - request.addValue("Bearer f41af9b1-5a7e-4f0b-8c88-e44f686b1d2e", forHTTPHeaderField: "Authorization") - - let task = URLSession.shared.dataTask(with: request) { (data, _, error) in - if error != nil || data == nil { - return - } - let decoder = JSONDecoder() - decoder.keyDecodingStrategy = .convertFromSnakeCase - do { - guard let data = data else { print("Empty response"); return } - let json = try decoder.decode([Post].self, from: data) - successful(json) - } catch let err { - print("Unable to parse successfull response: \(err.localizedDescription)") - } - } - task.resume() - } } diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsViewController.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsViewController.swift new file mode 100644 index 0000000..5647cc9 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsViewController.swift @@ -0,0 +1,69 @@ +// +// PostsViewController.swift +// Fakestagram-Xcode10 +// +// Created by Ricardo Hernandez D4 on 10/18/19. +// Copyright © 2019 unam. All rights reserved. +// + +import UIKit + +class PostsViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout { + + var posts: [Post]? { + didSet{ + self.postCollection.reloadData() + } + } + + let client = RestClient<[Post]>(client: Client.fakestagram, basePath: "/api/v1/posts") + + @IBOutlet weak var postCollection: UICollectionView! + + override func viewDidLoad() { + super.viewDidLoad() + + postCollection.delegate = self + postCollection.dataSource = self + let nib = UINib(nibName: "PostCollectionViewCell", bundle: nil) + postCollection.register(nib, forCellWithReuseIdentifier: PostCollectionViewCell.identifier) + client.show { [unowned self]data in + self.posts = data + print(data) + } + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + + // MARK: - UICollection View Delegates + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return posts?.count ?? 0 + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PostCell", for: indexPath) as! PostCollectionViewCell + guard let posts = posts else {return cell} + cell.post = posts[indexPath.row] +// cell.backgroundColor = .yellow + return cell + + } + + // MARK: - Flow Layout Delegates + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + return CGSize(width: self.view.frame.width , height: self.view.frame.height * 0.6) + } + + +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/AuthorView.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/AuthorView.swift index b31ef60..d60f3a7 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/AuthorView.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/AuthorView.swift @@ -20,6 +20,8 @@ class AuthorView: UIView{ let nameLbl: UILabel = { let lbl = UILabel() lbl.text = "Lorem ipsum" + lbl.font = UIFont.systemFont(ofSize: 32) + lbl.translatesAutoresizingMaskIntoConstraints = false return lbl }() @@ -45,6 +47,7 @@ class AuthorView: UIView{ avatar.topAnchor.constraint(equalTo: self.topAnchor, constant: 3), avatar.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 3), avatar.bottomAnchor.constraint(equalTo: self.bottomAnchor), + avatar.widthAnchor.constraint(equalToConstant: 90) // avatar.heightAnchor.constraint(equalToConstant: self.frame.height-6) ]) diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.swift new file mode 100644 index 0000000..9ad591b --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.swift @@ -0,0 +1,49 @@ +// +// PostCollectionViewCell.swift +// Fakestagram-Xcode10 +// +// Created by Ricardo Hernandez D4 on 10/18/19. +// Copyright © 2019 unam. All rights reserved. +// + +import UIKit + +class PostCollectionViewCell: UICollectionViewCell { + + static let identifier = "PostCell" + var post: Post? { + didSet{ + updateContent() + } + } + + @IBOutlet weak var authorView: UIView! + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var likeCounter: UILabel! + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var likeBttn: UIButton! + @IBOutlet weak var commentBttn: UIButton! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + func reset(){ + self.imageView.image = nil + self.likeCounter.text = "Likes" + self.titleLabel.text = "Loading..." + } + + func updateContent(){ + reset() + guard let post = self.post else { return } + + self.titleLabel?.text = "hola" + self.likeCounter.text = String(post.likesCount) + post.load { [unowned self ]img in + self.imageView.image = img + } + } + +} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.xib b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.xib new file mode 100644 index 0000000..f5d1f6e --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.xib @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From adecb16a9bd9dc0a17ea72855487366a8c25f402 Mon Sep 17 00:00:00 2001 From: Ricardo Hernandez Date: Sat, 19 Oct 2019 01:35:04 -0500 Subject: [PATCH 16/28] show post --- .../project.pbxproj | 19 +--- .../xcschemes/xcschememanagement.plist | 2 +- .../cloud-download.imageset/Contents.json | 21 ++++ .../cloud-download.png | Bin 0 -> 19661 bytes .../comments.imageset/Contents.json | 21 ++++ .../Assets.xcassets/comments.imageset/com.png | Bin 0 -> 5602 bytes .../comments1.imageset/Contents.json | 21 ++++ .../comments1.imageset/comments1.png | Bin 0 -> 5903 bytes .../home.imageset/Contents.json | 21 ++++ .../Assets.xcassets/home.imageset/home.png | Bin 0 -> 4217 bytes .../home1.imageset/Contents.json | 21 ++++ .../Assets.xcassets/home1.imageset/home1.png | Bin 0 -> 5903 bytes .../like.imageset/Contents.json | 21 ++++ .../Assets.xcassets/like.imageset/like.png | Bin 0 -> 4217 bytes .../like1.imageset/Contents.json | 21 ++++ .../Assets.xcassets/like1.imageset/like1.png | Bin 0 -> 5903 bytes .../loading.imageset/Contents.json | 21 ++++ .../loading.imageset/loading.jpeg | Bin 0 -> 1827 bytes .../plus.imageset/Contents.json | 21 ++++ .../Assets.xcassets/plus.imageset/plus.png | Bin 0 -> 4217 bytes .../plus1.imageset/Contents.json | 21 ++++ .../Assets.xcassets/plus1.imageset/plus1.png | Bin 0 -> 5903 bytes .../profile-2.imageset/Contents.json | 21 ++++ .../profile-2.imageset/profile-2.png | Bin 0 -> 7581 bytes .../profile.imageset/Contents.json | 21 ++++ .../profile.imageset/profile.png | Bin 0 -> 4217 bytes .../profile1.imageset/Contents.json | 21 ++++ .../profile1.imageset/profile1.png | Bin 0 -> 5903 bytes .../profile_default.imageset/Contents.json | 21 ++++ .../profile_default.png | Bin 0 -> 3800 bytes .../Base.lproj/Main.storyboard | 20 ++-- .../Fakestagram-Xcode10/Model/Post.swift | 1 + .../PostsTableViewController.swift | 98 ------------------ .../PostsViewController.swift | 21 ++-- .../Views/AuthorView.swift | 27 +++-- .../Views/PostCollectionViewCell.swift | 20 ++-- .../Views/PostCollectionViewCell.xib | 33 +++--- Fakestagram-Xcode10/Podfile.lock | 2 +- 38 files changed, 374 insertions(+), 163 deletions(-) create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/cloud-download.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/cloud-download.imageset/cloud-download.png create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/comments.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/comments.imageset/com.png create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/comments1.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/comments1.imageset/comments1.png create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/home.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/home.imageset/home.png create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/home1.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/home1.imageset/home1.png create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/like.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/like.imageset/like.png create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/like1.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/like1.imageset/like1.png create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/loading.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/loading.imageset/loading.jpeg create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/plus.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/plus.imageset/plus.png create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/plus1.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/plus1.imageset/plus1.png create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile-2.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile-2.imageset/profile-2.png create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile.imageset/profile.png create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile1.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile1.imageset/profile1.png create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile_default.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile_default.imageset/profile_default.png delete mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/PostsTableViewController.swift diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj index 640d3c5..87bc7f7 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 51; objects = { /* Begin PBXBuildFile section */ @@ -13,7 +13,6 @@ 7701BEB8233F1B1C0004C30D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7701BEB7233F1B1C0004C30D /* Assets.xcassets */; }; 7701BEBB233F1B1C0004C30D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7701BEB9233F1B1C0004C30D /* LaunchScreen.storyboard */; }; 7701BEC6233F1B1C0004C30D /* Fakestagram_Xcode10Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7701BEC5233F1B1C0004C30D /* Fakestagram_Xcode10Tests.swift */; }; - 7701BED1233F1B540004C30D /* PostsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7701BED0233F1B540004C30D /* PostsTableViewController.swift */; }; 7909C65A23521FEC000B0380 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C65923521FEC000B0380 /* Credentials.swift */; }; 7909C65C23522002000B0380 /* PostViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C65B23522002000B0380 /* PostViewController.swift */; }; 7909C65E23522061000B0380 /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C65D23522061000B0380 /* Client.swift */; }; @@ -63,7 +62,6 @@ 7701BEC1233F1B1C0004C30D /* Fakestagram-Xcode10Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Fakestagram-Xcode10Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 7701BEC5233F1B1C0004C30D /* Fakestagram_Xcode10Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fakestagram_Xcode10Tests.swift; sourceTree = ""; }; 7701BEC7233F1B1C0004C30D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 7701BED0233F1B540004C30D /* PostsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostsTableViewController.swift; sourceTree = ""; }; 7909C65923521FEC000B0380 /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; 7909C65B23522002000B0380 /* PostViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostViewController.swift; sourceTree = ""; }; 7909C65D23522061000B0380 /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = ""; }; @@ -155,14 +153,13 @@ 7701BEAF233F1B1B0004C30D /* Fakestagram-Xcode10 */ = { isa = PBXGroup; children = ( - 79762856235A787300055EC7 /* PostsViewController.swift */, 7909C67823523B52000B0380 /* Views */, 7909C65823521FD9000B0380 /* Network */, 7909C65723521FD3000B0380 /* DataSource */, 7909C65623521FCD000B0380 /* Model */, 7701BEB0233F1B1B0004C30D /* AppDelegate.swift */, - 7701BED0233F1B540004C30D /* PostsTableViewController.swift */, 7701BEB4233F1B1B0004C30D /* Main.storyboard */, + 79762856235A787300055EC7 /* PostsViewController.swift */, 7701BEB7233F1B1C0004C30D /* Assets.xcassets */, 7701BEB9233F1B1C0004C30D /* LaunchScreen.storyboard */, 7701BEBC233F1B1C0004C30D /* Info.plist */, @@ -391,20 +388,15 @@ files = ( ); inputFileListPaths = ( - ); - inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-Fakestagram-Xcode10Tests/Pods-Fakestagram-Xcode10Tests-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/DVR/DVR.framework", + "${PODS_ROOT}/Target Support Files/Pods-Fakestagram-Xcode10Tests/Pods-Fakestagram-Xcode10Tests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DVR.framework", + "${PODS_ROOT}/Target Support Files/Pods-Fakestagram-Xcode10Tests/Pods-Fakestagram-Xcode10Tests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Fakestagram-Xcode10Tests/Pods-Fakestagram-Xcode10Tests-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Fakestagram-Xcode10Tests/Pods-Fakestagram-Xcode10Tests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -425,7 +417,6 @@ 7909C65A23521FEC000B0380 /* Credentials.swift in Sources */, 7909C68023524576000B0380 /* Like.swift in Sources */, 7909C6822352458A000B0380 /* Author.swift in Sources */, - 7701BED1233F1B540004C30D /* PostsTableViewController.swift in Sources */, 79762857235A787300055EC7 /* PostsViewController.swift in Sources */, 7909C65E23522061000B0380 /* Client.swift in Sources */, 7976285A235A80F500055EC7 /* PostCollectionViewCell.swift in Sources */, diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/xcuserdata/richard_ohg.xcuserdatad/xcschemes/xcschememanagement.plist b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/xcuserdata/richard_ohg.xcuserdatad/xcschemes/xcschememanagement.plist index 117850a..08505b2 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/xcuserdata/richard_ohg.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/xcuserdata/richard_ohg.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ Fakestagram-Xcode10.xcscheme_^#shared#^_ orderHint - 0 + 3 diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/cloud-download.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/cloud-download.imageset/Contents.json new file mode 100644 index 0000000..f291573 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/cloud-download.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "cloud-download.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/cloud-download.imageset/cloud-download.png b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/cloud-download.imageset/cloud-download.png new file mode 100644 index 0000000000000000000000000000000000000000..332a19e8bd2fc9bae213c00ac54e69edd21fd726 GIT binary patch literal 19661 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 B*#iIo literal 0 HcmV?d00001 diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/comments.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/comments.imageset/Contents.json new file mode 100644 index 0000000..09b1d73 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/comments.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "com.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/comments.imageset/com.png b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/comments.imageset/com.png new file mode 100644 index 0000000000000000000000000000000000000000..62a1f2f9979ab7b0998601781d162d10452a405c GIT binary patch literal 5602 zcmeAS@N?(olHy`uVBq!ia0vp^svyk41|*NpQ(y*CoCO|{#S9GG!XV7ZFl&wk1B2)k zPZ!6K2u{XM(Xv-SHKSlO1V%$(Gz1292rv@ky8r+GGXd4f0I@U>6Qu`>xj%tow;353 zKVgwW5n@5%Vc~!r^!)4J$UV=$S6+GdOZ@+T@*Ks@!tl#Uiu2Tu|No0Q7#Z(ku?j9k z&{05@G9U+aUU;wl=RaH@S&R$se)%=BGTa7gF2!d6C|U>sX;27J>L8FM&%XX;eDeN_ zHz5m&aTFuDQHE~$e}?}I|Ni{q>+9oScSnI719TML z96TV7!WT*)xluWIi^0NN-kYM@C!TkRZiUa`;7c;|uiSIAJytsL7FR(<%tCu84NdZmH zm;dwg@4d5!zkK-uYJw0Ae*F0H=l0jHuYh&m`Cq?&y~C%GXh%tNv;419{`2GM*~6PY zeE6^m*n+&k%F6l+pW*0oEG#U4KLJ5$Y3X-#Ib=RDj$%>cXJvBa|MBD5xg(q3y?eJB zXuye_oSf%ChasCq44Ysg2N^=pRA6um-+uie`qrtV>JJ}2+zSl);M1& literal 0 HcmV?d00001 diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/comments1.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/comments1.imageset/Contents.json new file mode 100644 index 0000000..9d60554 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/comments1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "comments1.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/comments1.imageset/comments1.png b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/comments1.imageset/comments1.png new file mode 100644 index 0000000000000000000000000000000000000000..d9b97e9e29eac75377af4ca66936d13edcdc205c GIT binary patch literal 5903 zcmeH}O-vI(6vy9e3vDSYgoc(DEioDm2Mwk%Q3(eP3cc{E z)l|_rh8zH(&DE6+ZpCajd8t~e&t3sgYlH{Et=mNaTC2J8@QE`j)T=em z5}!=TD3DPgqd-Q1i~@gy0!Ru3#+U-vk5cdls{m0u0P&K>#l)7${h+2_gL+FZLdYFs zi_?(D>5J(iPza{%wb0+!0k(-E@GiyJB{x(ma*pri;Mj31iFuB|i5}DmSB|Hct?;C0 z2u5BM0Zu`w7;=QMsT}a>rVdJ#(?Z}PG3GT5YE3g}CXJyaI^Sp2u%KGGjKI%`X-#;q3wy7A`K% zu$RMmx|`HAYf>PrQjS<<;B>5fAfv>(V&F^_Trd!byG49XF81k5{2!e2BcB=OJ~@)o z0~1z7>r38uc6MH(Y5J5-rz<;{n_o{k9nr*#LK%$MU*8xRcDSE)~pkQ^K<;d z=(xk{^^S8KH|%n`MDI^4t6mo=PDgutd#>4R-n0MNy~l{PsRb8oFoL(?VqoCg_eW%V zI!RJ96h+0o&Ikz~iA3D3t*vfyBCV%iGiOp@Q4oxcaKrKrvo;#^+rV?O$v^aEvWKzT zyND82qQo3ofY_vBwiUF5Ikw`tT3HTUY{b60#_*t>eZaD8S1=eHY-?-#x$2f)Efp|; z;_cwuR~{OeoOx)s+wX+K;gIb91wkgq5^K zvD0tdN*YWEMRF)xqtWd4`FwL0i$zfCk3wyXE5SnGQcD8~u`@3Jl>%Q&%WAou0ajR) N`DjgL_mK-%e*p{vMCJeh literal 0 HcmV?d00001 diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/home.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/home.imageset/Contents.json new file mode 100644 index 0000000..08ef703 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/home.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "home.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/home.imageset/home.png b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/home.imageset/home.png new file mode 100644 index 0000000000000000000000000000000000000000..eb329b28f54938a0e3ba6e95a4f2ce2bebb319f0 GIT binary patch literal 4217 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DX&fk8mq z)5S3)f|F4};Qo7{no%$s0;3^7ehB>k|DO?vImkDG0-ZpMnJ&Nkxp?K>&mVwnb8?Mh zAx9&~@+b7y2^JV~l~Bs&1za*&0c7eDd?DY6_vk^`_= z4)Za&jv(3r=$11xGBBj8bN|=m`1Paf_CLmSGrP)N+b^$8RmL?uk1Kkx%|%WWk%7}EG(zPfPo_|o6MfA9GD z^XHjQpFVx@^YaV8&M7~k>GD@0kcs8`{2vq5_y{IUf>H4OA4C57`(I-C*_aqWDPCWQ zjp6F)Gi^V9{5bIL-Mi}z4Gq6Q76R!dS6_cKU|{%K#LvpeaO%}hep8WO`+-uR`Wh!7 z7zLb63^RNfA4Y~NaJ+$;!pX^bGA}Rh63lX__)@0U(QjvGbn^h?$YZ;Y?r%9eVccSvN40SmAo=6XS1W{XmPwSKs?`=h4?cJkP%T>X+hSD?*lMVq*H0lauohSqvMSSO;L!%eVXK zcb-EpelWNQ{Wrv>fEY2d9AIi{3QTMae_M`lJ@m>97%$qrcm;48yv z9-g@jk6$s|`~ZoSmg~P|*_avk{r>lpSbO2>NOr(eU{(ZSWN`j1IPoJ35zQvr0bX+4 zlhppcE&ucTw;&@=0pT-G@yGywo+ CDO?%= literal 0 HcmV?d00001 diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/home1.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/home1.imageset/Contents.json new file mode 100644 index 0000000..a35ebe3 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/home1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "home1.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/home1.imageset/home1.png b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/home1.imageset/home1.png new file mode 100644 index 0000000000000000000000000000000000000000..c3f4a739c6076ccec01b766c047e5740e7c5841c GIT binary patch literal 5903 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 S&#~@4wyW#ZcbscK`qAI)OQnMV literal 0 HcmV?d00001 diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/loading.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/loading.imageset/Contents.json new file mode 100644 index 0000000..e3a1385 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/loading.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "loading.jpeg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/loading.imageset/loading.jpeg b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/loading.imageset/loading.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..e8e6b2b2d32845e5e7657625afe1fb2014662e94 GIT binary patch literal 1827 zcmd6ndrVtZ9LIm{ZD|K}aA}d+(UvhZ1{jYr6}BM`B7_DJ3KBq_DWyC{%cGA~Wm^-+ z)EHipGN(M^){$i@4#|Lk1m~Oud5wS|gIJY^j7|vcC276(bRHiOC6dxZ84~*qevO2)HI z$-8*UvQ*nM6)4EwlQY0}Pt}>hWIc3cmKcCO zMG&`r02tK(o9__B`ZM_?` zAXQ1X_QB9d&CCR_T>y9_6@ZO;?fCNl&D;BpYLoTB_ya&v5kPD|z=t0JJc0IeeubET zNT6dh8V#ePfljA8Fj!0m3TG#$9W310)fIQfarUDg?raXv4ad2=xja5!C={~Yy}Z2y z-W~#>fGk2mR)zy(CzH8Tz`;3!{~W{>z?l>pEMgQdpyCt^rx4d*7y6-7G4h4F8*~RM zjlslF(%%KWWi$$vJojH|Dn_HbI(S7;7;F*FaZ~M)q@P=41|_^ziPm%eQD@6Rs`%fl z+tqPkVQ6CU%3>}a9p3}Vy!uQzTG$xF!H#tZ>O(eO7}-y z(F_5Cwd+COy_wupuPY4T#uv9AJ91UDu&kNqnu6vnV+TT}>td|_y5hC6qCP>EuDWMt z--K|-hEmbly?)g4TZwF?sFwVvxF>icXMGG8nBP~0iuaoe=ac+D^Zms#)ZVT7vhDT6 znyj0>`QMhAf7BgzTkm^X9djR%f~eL?HzUH(*ZDor)cE;oq?c-CYb~ENxk;ZC$FFF$Cz9j`-9ZV z^#`S5kwHI^8s<@Ae6P{?zO}PHH?H=Y@pJ3k=EcB!?uou~H};=!wPaw)mZ9-q2aY!9 iMAbhQoqDK>r@1*?>XT3+W!~a;H8=j-_;4y1apO;kCa9zU literal 0 HcmV?d00001 diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/plus.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/plus.imageset/Contents.json new file mode 100644 index 0000000..efcc220 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/plus.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "plus.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/plus.imageset/plus.png b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/plus.imageset/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..cdfde97bac1463e6c1d17db45ee733ee3e846106 GIT binary patch literal 4217 zcmeHJUu;uV7(e%4Z@b-&maQES?G_wjvakki&=)i#L)JtVBu0^d;elk~fk;Ba0~nnP zfshy;w!|dC$IgV$78yV>7|#=f4;GHX1{#d)s?HPu1hc_J{($PN=LA7XEiElK^?G%F zIWo`6vRpDA`I&@lRv96q!~aE6S`k@QEs7 zp&l)Ky`Ic}g-0@(9DrM%@zqy33~RUXr=4uC9_BEos0>HaRVEZLbyfZCpnO}7=D^o!f44~U9=crXzib=+x|oR81~Z=#{0o@cKMIrhCU-na#U;6%LZxnE(kScCyu=H z40FSwLy_iXGz&vZwXphy=WFD-JAp5!rl!8_?ChM@+Vyf-0DL~580){(ai-zXrM*vD zM2;^0hQWsiz175_zAf^j2SY!78V-jq!ZQuRf|^dEUml_2OvOGcnx38>*6nt`>e=|z z;c3dzoFmy9hNkE>gd}W0+0^~XiMz2_?7AdLf${P2;oja}ekHhsuqpsJ2V5x9;c&R% zX>Eq{^?-_lelI{jNWnZ_C=@2s>GZ7G#nWP0H2`gJUtb@S%jIaN)2T$GQ5hB$wDyWz bsX#duIKAcd?m%W2gMIxwJKDb4aj5$*MrdhX literal 0 HcmV?d00001 diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/plus1.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/plus1.imageset/Contents.json new file mode 100644 index 0000000..47ee2a9 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/plus1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "plus1.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/plus1.imageset/plus1.png b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/plus1.imageset/plus1.png new file mode 100644 index 0000000000000000000000000000000000000000..d9b38032a8abe48bb80e89036ed8259e6413334c GIT binary patch literal 5903 zcmeHLTSyd982-=9IJ;|Fnpu`%(%mvD6S_b~VdfHTX+cF)K1Ly|^`I~HP%rin`4XY@ z;7jB~DOB{*1$|j6D@wc3#WKW8yXCsO?saDV{z(^hw^kgdAYu-D^Pe;4zkKtZbB1Bg z@3HMjPo0+v0O{89(n_*RRhUJ(wrn11C1bIdA3OyxElUN1rYkuBvpcM%TlXEXusgG@ zL*!#LLjgkpLjgkpLxKNF0YpqCWD2%$P9><9obIQ?QRh5p zX}%2Iook2;gA!{I>^_XtKcj~nrziMlY+ru?^nS<(DZ&VVZ=a{gBknT2dG!;Mq!c2- zM~N_5hDb0#pI4-wj;5bjiYNm^C6N{QEi*wbjs_V1x{4G~mk>Z!1PJ=oujZc(y(3`hxRqt* z`F2`O1V$^Go9~9AO)W(39AnHq?mD5F^gf`Z>2USZO?dcV3uR0iryfVOB|6})LlP^i zJVC^o#ylpzYEf(k417`FPl+|-DkPi4zE3u2?lX{V*)>Q$_a(*UV~^x;3zB> ziGi_m)JKyUq?N_k)6+AY=$dRiX~k#>Lg@3I^yDsquyb%H@EnhfLzBP@)9>9dgL81K zMrJl(WfeL-9v`P515~)k%sEo8Kh*uQy}dUXk;MCxCZ-0mw6wvtwzlJbzyBx=GYHDE zoa}{bf$b*^$4;FnfNfj}S>^_hxI_CC~{ ztD&J`j>%-&B1uw^@V=&|=8fhgF#-CQay*&cZXcp{o8!0#4u|7iObw%JC}1dHDDXEG YxORGVb=i@*>Mw7wZnu@TZmT-`1FGmkQUCw| literal 0 HcmV?d00001 diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile-2.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile-2.imageset/Contents.json new file mode 100644 index 0000000..a9c185a --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile-2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "profile-2.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile-2.imageset/profile-2.png b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile-2.imageset/profile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..bb9e4cf4b007df3416ef385f72a5d70abb377966 GIT binary patch literal 7581 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 literal 0 HcmV?d00001 diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile.imageset/Contents.json new file mode 100644 index 0000000..b199aaa --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "profile.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile.imageset/profile.png b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile.imageset/profile.png new file mode 100644 index 0000000000000000000000000000000000000000..6960c378eafe106a38b2e8cf243fcd31bbfbb9e4 GIT binary patch literal 4217 zcmeHJT}TvB6h1S%j4Qi_8AOOe4@M}x#1dhI zP)I!$^dR|EJw#+!AX%)gm6;EULF&@(PA=}cv(C)zjwx>I&K;*7>R~U;-h0pa&N<&b zbIzUh9jozj=3+AdaMe|w6L@wh56j@+*0#2JJeiuS>RJIT`N~5<_q|O3_FdJU%G%Q= z%4MJAF(x~*8OUbf-)4aNlkf;3b4-+*0^y`LCL-IOd}g$WHQc2r>YZMHx(VRm#ZSM+ zUtACH?odKribqovI`8JtxgA`qnK9hbL&B&BtYG_R6Av#BhTRfcwUiN}?ujDU9Oiv z^rD-4RKTt^Q}S}9)Pkm`Cf?#@JUx)wo}ABRD_nfm;fT=r@>`t`>MjzAgg&)A6251L4|*hDHSsJHxZ%4v{AruN#k_vf(w_vSRqLIi5C{a`tHfRsYkrP%jZ`ns^9`@3lQ$w#&ISn~B59?sZ3bE1 zf_{X@-uNF&k~I2P1QcV3!||Z2tILm<V4O~;F&d3(+QniqslB~jz&ByaUzc=`*?l$x|3L;kXT;u;hO<`{D%FQ;JiUh+ Gul)oBs1LRP literal 0 HcmV?d00001 diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile1.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile1.imageset/Contents.json new file mode 100644 index 0000000..aea01e4 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "profile1.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile1.imageset/profile1.png b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile1.imageset/profile1.png new file mode 100644 index 0000000000000000000000000000000000000000..76393edc3405d6257865f70edabed6747247809a GIT binary patch literal 5903 zcmeHJZ%k8H6hH61{x4nO$v-i`f)s@^aMnbIWiW$5j4_Lm==RAkOO|~g`}2W)CRwt5 z;p38#nXoL`Oo${~#AR+V61PM_2T@q5fN79 zpm?OS{hf0c^whQD&Sl(_YdHpT4CEO2PcuNJgPsr~=14vEwDh)o@HlQ#6cyi^OAabY z=?)=+Du<AyW3&RNw+j-4D3AUx|WZU@-IdmvH6Md2lZ=K!_6CFYZyP zYQSc1iv00B=W-5!kqOx`t zjHw{TVSGt2r8nZ6Z3ghJJOiEleE{(|wdV2G3}5+4i(*8Yx+w*g+5$xb-*h}af55gL z65{R(;Msy3LnRoGyRs7HI2MhGF)9g6(NU&Gg_5!gcvMlha&!FtrCXzSzZeg4z1*>m zh15C}Wi%RP{btV?TLiu+Hx`STjBXl?ujc9e8>f3Eiv%l1AWyH7o>0`$ua`Q zmsLVu@!rL@(lRic^YHSwd`%~U z8yo&@#KAa;F0A`!T`t!j2n>rl>6TW0>FVlYT3cHivCun+DIxJu7K^2*g*AMr`}zCC z%@YnclSlP-@5o;h0|>x@Y>Tx%h_yb>*HHIicX#&;&LxjiIb&#iaBxttTCEdUwm3tf z5FP%kV8O0=66W1>Qe zM!DT?>%4RN6UXB@FDBjVfk5C+PfrhC-^|*}0+#UJ*Vo5lqOHWqEFPCXGf1yUON_%; gWIAUy$H4!C0h;-4de8N%_^ttTo;cG!bo^rPKlcQ+0ssI2 literal 0 HcmV?d00001 diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile_default.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile_default.imageset/Contents.json new file mode 100644 index 0000000..fb9d0b8 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile_default.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "profile_default.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile_default.imageset/profile_default.png b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/profile_default.imageset/profile_default.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcfeb06b9967ac7af3c65c9c5c57fab6da23156 GIT binary patch literal 3800 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 O0000 - + @@ -48,16 +48,16 @@ - + - + - + @@ -67,13 +67,13 @@ - + - + @@ -83,7 +83,7 @@ - + @@ -95,6 +95,7 @@ + @@ -109,4 +110,9 @@ + + + + + diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Post.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Post.swift index 9e6a597..39a17cd 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Post.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Model/Post.swift @@ -18,6 +18,7 @@ struct Post: Codable { let createdAt: String var liked: Bool let location: String + let author: Author? func likesCountText() -> String { return "\(likesCount) likes" diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsTableViewController.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsTableViewController.swift deleted file mode 100644 index b6a300d..0000000 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsTableViewController.swift +++ /dev/null @@ -1,98 +0,0 @@ -// -// PostsTableViewController.swift -// fakestagram -// -// Created by LuisE on 9/24/19. -// Copyright © 2019 3zcurdia. All rights reserved. -// - -import UIKit - -class PostsTableViewController: UITableViewController { - static let cellId = "PostCell" - var posts: [Post]?{ - didSet{ self.tableView.reloadData()} - } - let client = RestClient<[Post]>(client: Client.fakestagram, basePath: "/api/v1/posts/") - - override func viewDidLoad() { - super.viewDidLoad() - client.show { [unowned self] (data) in - self.posts = data - } - - // Uncomment the following line to preserve selection between presentations - // self.clearsSelectionOnViewWillAppear = false - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. - // self.navigationItem.rightBarButtonItem = self.editButtonItem - } - - // MARK: - Table view data source - override func numberOfSections(in tableView: UITableView) -> Int { - return 1 - } - - override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return posts?.count ?? 0 - } - - override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCell(withIdentifier: PostsTableViewController.cellId, for: indexPath) - guard let posts = self.posts else{return cell} - posts[indexPath.row].load { img in - cell.imageView?.contentMode = .scaleAspectFit - cell.imageView?.image = img - } - cell.textLabel?.text = posts[indexPath.row].title - cell.detailTextLabel?.text = posts[indexPath.row].location - - return cell - } - - /* - // Override to support conditional editing of the table view. - override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { - // Return false if you do not want the specified item to be editable. - return true - } - */ - - /* - // Override to support editing the table view. - override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { - if editingStyle == .delete { - // Delete the row from the data source - tableView.deleteRows(at: [indexPath], with: .fade) - } else if editingStyle == .insert { - // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view - } - } - */ - - /* - // Override to support rearranging the table view. - override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) { - } - */ - - /* - // Override to support conditional rearranging of the table view. - override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool { - // Return false if you do not want the item to be re-orderable. - return true - } - */ - - // MARK: - Navigation - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. - if segue.identifier == "showPostSegue" { - let dest = segue.destination as! PostViewController - let idx = self.tableView.indexPathForSelectedRow?.row ?? 0 - dest.post = posts?[idx] - } - } - -} diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsViewController.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsViewController.swift index 5647cc9..17e0874 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsViewController.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/PostsViewController.swift @@ -12,24 +12,24 @@ class PostsViewController: UIViewController, UICollectionViewDataSource, UIColle var posts: [Post]? { didSet{ - self.postCollection.reloadData() + self.postsCollection.reloadData() } } let client = RestClient<[Post]>(client: Client.fakestagram, basePath: "/api/v1/posts") - @IBOutlet weak var postCollection: UICollectionView! + @IBOutlet weak var postsCollection: UICollectionView! override func viewDidLoad() { super.viewDidLoad() - postCollection.delegate = self - postCollection.dataSource = self + postsCollection.delegate = self + postsCollection.dataSource = self let nib = UINib(nibName: "PostCollectionViewCell", bundle: nil) - postCollection.register(nib, forCellWithReuseIdentifier: PostCollectionViewCell.identifier) - client.show { [unowned self]data in +// let nib = UINib(nibName: String(describing: PostCollectionViewCell.self), bundle: nil) + postsCollection.register(nib, forCellWithReuseIdentifier: PostCollectionViewCell.identifier) + client.show { [unowned self] data in self.posts = data - print(data) } // Do any additional setup after loading the view. } @@ -52,17 +52,16 @@ class PostsViewController: UIViewController, UICollectionViewDataSource, UIColle func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PostCell", for: indexPath) as! PostCollectionViewCell - guard let posts = posts else {return cell} + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PostCollectionViewCell.identifier, for: indexPath) as! PostCollectionViewCell + guard let posts = self.posts else { return cell } cell.post = posts[indexPath.row] -// cell.backgroundColor = .yellow return cell } // MARK: - Flow Layout Delegates func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { - return CGSize(width: self.view.frame.width , height: self.view.frame.height * 0.6) + return CGSize(width: self.view.frame.width , height: 650) } diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/AuthorView.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/AuthorView.swift index d60f3a7..010dfaa 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/AuthorView.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/AuthorView.swift @@ -8,16 +8,22 @@ import UIKit +@IBDesignable class AuthorView: UIView{ - let avatar: UIImageView = { + var author: Author? { + didSet { updateContent() } + } + + private let avatar: UIImageView = { let iv = UIImageView() - iv.image = UIImage(named: "") - iv.contentMode = .scaleAspectFill + iv.image = UIImage(named: "profile-2") +// iv.backgroundColor = + iv.contentMode = .scaleToFill iv.translatesAutoresizingMaskIntoConstraints = false return iv }() - let nameLbl: UILabel = { + private let nameLbl: UILabel = { let lbl = UILabel() lbl.text = "Lorem ipsum" lbl.font = UIFont.systemFont(ofSize: 32) @@ -44,9 +50,9 @@ class AuthorView: UIView{ // avatar.topAnchor.constraint(equalTo: self.topAnchor, constant: 3).isActive = true // Para evitar estar haciendo isActive por cada constraint utilizamos NSLayoutConstraint.activate NSLayoutConstraint.activate([ - avatar.topAnchor.constraint(equalTo: self.topAnchor, constant: 3), - avatar.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 3), - avatar.bottomAnchor.constraint(equalTo: self.bottomAnchor), + avatar.topAnchor.constraint(equalTo: self.topAnchor, constant: 5), + avatar.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 5), + avatar.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: -5), avatar.widthAnchor.constraint(equalToConstant: 90) // avatar.heightAnchor.constraint(equalToConstant: self.frame.height-6) ]) @@ -54,8 +60,13 @@ class AuthorView: UIView{ addSubview(nameLbl) NSLayoutConstraint.activate([ nameLbl.leadingAnchor.constraint(equalTo: avatar.trailingAnchor, constant: 5), - nameLbl.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: 3), + nameLbl.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -5), nameLbl.centerYAnchor.constraint(equalTo: self.centerYAnchor) ]) } + + func updateContent() { + guard let uauthor = author else { return } + nameLbl.text = uauthor.name + } } diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.swift b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.swift index 9ad591b..920f679 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.swift +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.swift @@ -13,11 +13,11 @@ class PostCollectionViewCell: UICollectionViewCell { static let identifier = "PostCell" var post: Post? { didSet{ - updateContent() + updateView() } } - @IBOutlet weak var authorView: UIView! + @IBOutlet weak var authorView: AuthorView! @IBOutlet weak var imageView: UIImageView! @IBOutlet weak var likeCounter: UILabel! @IBOutlet weak var titleLabel: UILabel! @@ -30,18 +30,18 @@ class PostCollectionViewCell: UICollectionViewCell { } func reset(){ - self.imageView.image = nil - self.likeCounter.text = "Likes" - self.titleLabel.text = "Loading..." + self.imageView.image = UIImage(named: "loading") + self.likeCounter.text = "" + self.titleLabel.text = "" } - func updateContent(){ + func updateView(){ reset() guard let post = self.post else { return } - - self.titleLabel?.text = "hola" - self.likeCounter.text = String(post.likesCount) - post.load { [unowned self ]img in + self.authorView.author = post.author + self.titleLabel?.text = post.title + self.likeCounter.text = "\(post.likesCount) likes" + post.load { [unowned self] img in self.imageView.image = img } } diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.xib b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.xib index f5d1f6e..64439c2 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.xib +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Views/PostCollectionViewCell.xib @@ -1,6 +1,6 @@ - + @@ -20,32 +20,33 @@ - + - + - + - - @@ -82,6 +83,7 @@ + @@ -91,4 +93,9 @@ + + + + + diff --git a/Fakestagram-Xcode10/Podfile.lock b/Fakestagram-Xcode10/Podfile.lock index 1e8c881..63bf30c 100644 --- a/Fakestagram-Xcode10/Podfile.lock +++ b/Fakestagram-Xcode10/Podfile.lock @@ -13,4 +13,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: d9d5d9d01e457a56ba65f895a35d12a493621452 -COCOAPODS: 1.5.3 +COCOAPODS: 1.7.5 From de0cedbde1e56c2d3790382e3d5e2e8791323597 Mon Sep 17 00:00:00 2001 From: Luis Ezcurdia Razo Date: Sat, 19 Oct 2019 11:38:48 -0500 Subject: [PATCH 17/28] Implement post creation with images using base64 --- fakestagram.xcodeproj/project.pbxproj | 8 ++++ .../spacecat.imageset/Contents.json | 21 ++++++++++ .../spacecat.imageset/spacecat.jpg | Bin 0 -> 285375 bytes fakestagram/Base.lproj/Main.storyboard | 19 ++++++++- fakestagram/CameraViewController.swift | 38 ++++++++++++++++++ fakestagram/Models/Post.swift | 5 +++ fakestagram/UIImage+Base64.swift | 17 ++++++++ 7 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 fakestagram/Assets.xcassets/spacecat.imageset/Contents.json create mode 100644 fakestagram/Assets.xcassets/spacecat.imageset/spacecat.jpg create mode 100644 fakestagram/CameraViewController.swift create mode 100644 fakestagram/UIImage+Base64.swift diff --git a/fakestagram.xcodeproj/project.pbxproj b/fakestagram.xcodeproj/project.pbxproj index f9a6cfc..831f0d3 100644 --- a/fakestagram.xcodeproj/project.pbxproj +++ b/fakestagram.xcodeproj/project.pbxproj @@ -30,6 +30,8 @@ E0C93EA82352455C00FD330C /* Comment.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93EA72352455C00FD330C /* Comment.swift */; }; E0C93EAA2352457200FD330C /* Like.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C93EA92352457200FD330C /* Like.swift */; }; E0E2545F235A9F3A00C55767 /* UIDevice+models.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E2545E235A9F3A00C55767 /* UIDevice+models.swift */; }; + E0E25463235B675100C55767 /* CameraViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E25462235B675100C55767 /* CameraViewController.swift */; }; + E0E25465235B6C0500C55767 /* UIImage+Base64.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E25464235B6C0500C55767 /* UIImage+Base64.swift */; }; E0E8B9652348018200DA9D1A /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9642348018200DA9D1A /* Credentials.swift */; }; E0E8B9682348036D00DA9D1A /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B9672348036D00DA9D1A /* Client.swift */; }; E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E8B96923481D5A00DA9D1A /* StatusCode.swift */; }; @@ -80,6 +82,8 @@ E0C93EA72352455C00FD330C /* Comment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Comment.swift; sourceTree = ""; }; E0C93EA92352457200FD330C /* Like.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Like.swift; sourceTree = ""; }; E0E2545E235A9F3A00C55767 /* UIDevice+models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIDevice+models.swift"; sourceTree = ""; }; + E0E25462235B675100C55767 /* CameraViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraViewController.swift; sourceTree = ""; }; + E0E25464235B6C0500C55767 /* UIImage+Base64.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Base64.swift"; sourceTree = ""; }; E0E8B9642348018200DA9D1A /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; E0E8B9672348036D00DA9D1A /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = ""; }; E0E8B96923481D5A00DA9D1A /* StatusCode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusCode.swift; sourceTree = ""; }; @@ -155,11 +159,13 @@ E084FADF233A8734009AC50D /* Main.storyboard */, E038FCEC233FC78600E28571 /* PostViewController.swift */, E0A9ED50235A782F00A0527E /* PostsViewController.swift */, + E0E25462235B675100C55767 /* CameraViewController.swift */, E084FAE2233A8735009AC50D /* Assets.xcassets */, E084FAE4233A8735009AC50D /* LaunchScreen.storyboard */, E084FAE7233A8735009AC50D /* Info.plist */, E0E8B9642348018200DA9D1A /* Credentials.swift */, E0E2545E235A9F3A00C55767 /* UIDevice+models.swift */, + E0E25464235B6C0500C55767 /* UIImage+Base64.swift */, ); path = fakestagram; sourceTree = ""; @@ -414,10 +420,12 @@ E0E8B96A23481D5A00DA9D1A /* StatusCode.swift in Sources */, E0E8B974234918FF00DA9D1A /* Account.swift in Sources */, E0C93EA123523B7C00FD330C /* ShowPostViewController.swift in Sources */, + E0E25463235B675100C55767 /* CameraViewController.swift in Sources */, E038FCED233FC78600E28571 /* PostViewController.swift in Sources */, E0C93EA82352455C00FD330C /* Comment.swift in Sources */, E0C93EAA2352457200FD330C /* Like.swift in Sources */, E0C93E9D23515CEE00FD330C /* CodableSerializer.swift in Sources */, + E0E25465235B6C0500C55767 /* UIImage+Base64.swift in Sources */, E0E8B9762349197100DA9D1A /* Post.swift in Sources */, E084FADA233A8734009AC50D /* AppDelegate.swift in Sources */, E0E8B96E2348203B00DA9D1A /* RequestBuilder.swift in Sources */, diff --git a/fakestagram/Assets.xcassets/spacecat.imageset/Contents.json b/fakestagram/Assets.xcassets/spacecat.imageset/Contents.json new file mode 100644 index 0000000..d1bb6ed --- /dev/null +++ b/fakestagram/Assets.xcassets/spacecat.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "spacecat.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/fakestagram/Assets.xcassets/spacecat.imageset/spacecat.jpg b/fakestagram/Assets.xcassets/spacecat.imageset/spacecat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32ea7fdde0e6968a48a90678fd48fa031e424b92 GIT binary patch literal 285375 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%0D2?U?D9I{Q; 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

F_9FxN%K> z-wY>KT!h=$q_sjw;)UB>ESG^_r#a%AykzjCL=L-0_oXWfQ7pUHJx_X0+3DBfg%RrFsHB@*Mh?9GufuNi!EMK^V72 zq`z7dtVkJ-7d-n>*)80r@;EgbTSQkan#wjL6m_9Iyt(`%Z+|4s(z}>sx-sg}RzrG(`%%kSDI%q(<2Q_BFgxIolHR+O1q^(+C9E z>`z+CQcPNJf0Dh67_Wq~=`=Z}iu@?q)fI1=rLM)4)h zjJBjkzOAGAerufghT3a|^qdTihaKqjI*fBDQb|2JR?=I=a;GGZ>0H@06W8%7*r7J< z+6#T%#}o!Dr(3}vxXm-_Q3(;F9`wI0uvz@?VTx0?r%BVOGh?ec$S1ZsRCgBvNpffv z)Z*44!1ZiYQ(V08`f*(@Etq-#0LbwhM0(WmyJVhtrEd^QWwYA71Amoms=VRI;;LDs zvX+T}z!|Rf7al8D$vyu7Is-ksM{q*+$9iJ$ z%w|bcFdTFJX~^D$ze7WYfNq)-ae94BI~@0>4Ivq>eBt;`4OF+YGh3vCRZ7rZOu4B-vd88qKvEqS3l)mq5Wj;e5SX= zAS832YQ3l5F3MCBG9u(+CYwUu_`u&dBm$GdXw z+-k;&YOi1$9PTtyD^U>K-9GfRS7vqp0DQV>7MWrL?lpc^BI9TS9CoM;{Bin5YA>x* zDSm%SdaAS2iOl6Wcrb~UD{lL+YVLz>*K8yi%HfCWO6K%R!Fy-gp8OYmZEb1%Oy_6E zy>u#FPdUhvev)6Yf+q8EkPk{o*DvEN!E@e@_~%-M%dBMbPq(#mO-}FeF+S$H5Plqc z-)|8nseIxm35~1{?2gols=0aFZaF;F{aaMP^3#g26qud zuA~h6SoGqqT$2~^3FECR-ODT9NXkaiy8@VVdxt_(u`{Di<94hKy|17 zA5Q-OrM#k9FVVNYE#mggo;}n5&h|^ z)*(A95;!^QNn2(Y3VS>mpxR*$xyugqVRZY8h?+&)fHU5QTKYmDJS{rtch>M}&az~k zpB2xYnsqASd7@tQwvpCh$T;G$H;HU?eFsy#WF@0e%asIwdV|F5vtCUseFL%nwaWhh zX)@1o;hj$2Jc7taPnyBKMgIWK`=g3}(mYLZ;tvvE+*~Yc8r(UHV&j5)^GZ>x3%J}d z=OhgARy8<@b+-O>%D3K#>3VhqZ6-Y`JN#0XGt+S+)+o0PxRE23`l|6(01Bmf!S<;o zjnx9CFa|4oTYdaJFQ-B&G6_oYjPNQ#P{-b;xU~v1@$Xe|4+5`C!*L-Il>lQktFjMU z4snhv3^1e)wc@JDhN-1>7T&dL?+Qy!; z$1vPmpke<2TKGFq(TacwTbQx7^A{VBTKRv%U$;$NEwin9z|Z@*2j$+n2Zldw+7_lnK3&?e9bPp9 zu07}+3~Zq@tZ7miH$+OQRVOEkj_qPs{wZVs03oH@EptlLFye1dP&a^oy&SN6TdW8q zQ;vCIRnV$9(NfTco0lKM$Y1!X^F+&?V$T9A~Gs7`nvrfdRv>4Zq&3OBJ%)+g-#7l@oU-Jka@UZiUFbjpGH0 zb_Dk|TFq7>#-%KRDB4v!<4i8m#Y&pf+}RsxBO8DUyI0zY!p(iB{V*x!?F*B@%`eSm ztm)UDVDgzVPoxt>Q^4HPTU!Vv9%w#T-S;(OA!4_&SU}UXR}1DjcFP9%KGZ53zpb*7 zZxw?p1>jK2P-J-ywx;#h}Mp0zL>F?4}%LR~2+6oG-;wrZw_V+p!@H!Sw9%;bZX z4OewNOkP4Q?t$}JM$#7p6;Do`G)aDz-z^-U#AEomKQ(3GSN{NKCDX1$iKA;Gxg&mC zasHG?M%JvP)kcpp$h(lZV4x4yg5OCcvxqI^R)K(a=O=NhcXHbq1k(o-h1v+F^pXKk5nqu(v)C(xGMVHNp zZ+2nn#(NqC7+YuZZO#>W^&HVy^))ul1SrdNREK6?P7NAF8ZQz%sOPzS6pahVj^qyi z0Ht%iUd|T3I-H@^t{84r;0%0I#)2JuJ#B8}G{{)wbR@CGV^q^H9_03YbkIpIwsn`K)fED|H)e z$|e+=uOiQMWzv}dhUDy#%ALS}!h2IZ_EwC8Qn?wqPg`v~XYE#DCsDYwjwRa};mZtF zFG-~hD?zo>ECIRm86rR;*m6i8;^UfO(e&$<(x=p75cz09K_}t>(FCxSB4kW5Aj5a7 zl3H9&_Ryh4h^8D9gIcJ8pgH7@>rI)WjHHp_ShC;~@kqWR@ot@_Sx+UnkWT^H`+&i0 z;NzM<`&IE$X_{=Bb)Tk9n_F^&k{DObz9PJzTD*3LDvHESykjk%)lw_y*{%N5<(?@a zjwL&fC8PQK(7TTu%HVmZ6m9-Q$NAEX)>04_-AgbSJQK}cve2~+K|=XN9-OHkWs&fpxfyIXiLo&2wbYbvQ1=`7OCJ0Segu z)ppg9HDzmv<`V?QKp}Bbt5jv+7Eq*p5dt=>p>Je}Hr@nnjsT@CV#a7g9A!br8Kr*+ z>bDJkCuas#1wsB@wbZTkOL^@4i9sw*cmlh8U&=T>rz?~A_{nL^uH-&l2lbR#!@nK@33QbJnU-Q+^!( z0M#%50N8l7Fn~O)pS?5qav>yuu_Nq$Yn%9UQ4R*;PafYi>7weJXHYYbx6K8Zk;>&J zbjVb!Kyi-My+NnX=UOTI)byj5r!hqJd58dY&3e3c@t(9V;c&+NFsDCynkZUA0Id~4 zBNSgwjBEt^3dVB7sl}~H;Q)c+PB3d%U}0^;pzTH;Fk}3vb<7+v_oSx#9*&9>7Kys_ zF-+z{SQyF2G>@(6BT$g%jBqf1Y5T<1k||#=9<1huX?6^<=1g*HoodE<{{Y0WDe%KCZl4aJq`8U6@i;_Q>h;S$7<|hu=t6)}CUlMOUp;^&JZBaEd{#9y0R`d!Ox2 zkm;gJeaAno0PuCOmDP{A{?*XYQVU=YwIOs)&jt2+B5ILIZ#am45;Iy`!5%jf+56F* zW-)O;mXc;CQ3U4|;Bo; z1_yjrVPt87kZ=g8wFtbje)a7t+)E%Q`~1@qI(0zmEk>z?^&Ob^CbrrO8$qMfn;d5PM z#W0v+JvNNz^sZInwn(HG5rc!0e=2IL-uZ-Nu@9*RKvaqXdC;5dDw#?SS zSzBu;&IdJS4GMdQ^Hin>Jeq&-HiI3)nCEEyJ4fTiD{a_!INS!~qBfag(1vy%gMu^H z6`Q-m6BLXLXSlA5;%zS8C|)Q?%7Q-?bF2FaBAMNX88kIn*@^OMlqG;WiTul*xWh3$ zM-^XGc+vtfmdCYRyI9NM#5Y3n~3Z>VF@H9;%%Jx^*aB+nrjI3E-b zNw5%Lk9_r`9H8R7&n8lgkD`7(rxbWZzIUrVC^oYYPvJ-SPdxR_8HAE|P`ykx{pZ@3 z>~^A)6!mCtCzL`q1OPU9&S-{@Z?Ou?jDUJo`EcqA{w(8~tt@X8=Okkk%@*Sl<a&AieW$fH~?rR<3Nr^bUG;?5~v=!wed~6BuM&zWwNCh-37h{Pm)@WfX!a zp)npu8_?B__bIy^d{Ygsq|U0jTrW;5oXL74af9BA>GR0ZtcrL%)3wOu*;X^5#eUld z;r%PrpqG;E>-{U$uX7L9#A~}yMo+)JLFFJ(_oCMkdF!=E%~x9qRODBdoV5D~{PAA{ zULTx!9$pB>Pa?L|@5-rB{i=jA%7^~dTTymp%}Smyto~tzE33EONHud!z6KDdIp?(n zo@R_5Kcz<&rLh4$e$~~kX`{?@JbE=pa24~-TWwBQ;vzD7ds1s_%1A~B8OK3Ro(`W% zn$4x1h#?95V0WftByg{kr0@?l#Mcx0&pG>0?+^x#9Apj+Sn*z^V-BcZ*CcNr%nxc` z@eZvW>?%0~158GEEUAA$^G3}3$;e)M);!cB832!ZihGcj>Z7Ln$ck5u09wzVH|36gZ(Itgd2z? zRCZR%WDI*BdSrnWVE_s#%fcc}J}sbNQ-miL>N;>gwFJ;0CO}R)pY2AZIb3^Ec0CEN z1DZFcJdb)krAxY9q~n9uglGx=&(HX(!5d`UD-^vs+=}!dtK?lCz>4;*cjN)LoRQO- zk5RfwP$|!9r+6328%|Dr^G(+9;@Ms@JBb!X+}S3EYa%}@q3ixta6ZAg!OaWQ=Mw@J znT3yj16*5RrP|J_JFpdFRI+H>2vxZq4r;2!D!2z5O&HVG7)ZuX+~&2Fo(`zAigp@w z(xyoRj^`9dPO)etkhTw}j2zK;B3Z!31zv+qbw^-EFq1ja~Aj>4~L_p+)U zdJk%=aT_Fz4Qh|ExdypbPfmv(wI`z{pR2iGhdJPIw8ag>%WA|NdVA1c4cNshEbI82 z1oK5T7h7?)kG&-`w_lOWD#ZI9Lm(w{&L}5{?QN#hFCPcgr1M0L-a*IVJ!*!iVw%cr zr_>jwXcKr+jCW6!d~0Ydd`j{zHoVMnocF76NMy1SDC8*ZRzGOAEhmU1IQ%ld_o*}> zghd>n`T$XnwJ%}PtJR3PpzWG7<^m3T@lr_=i><0a89hxGg2o9{Z3JX{)G}yswAly0 z_^TWog1~01p&=ZM?H%ZLp8=8i_ce1|vyty(hCYgz=i;@}qM8lTNsmiofmCQ#yo<k`(wZwO;kc~BCz^)JLHrVToDOsM zt*_-X$R8sL0@b);hC3s4>dpgg!X9d2O@Obbkzf|~q-_t9ACvP{^=a4B3`oI)0!dym zL_}6ke)B9d#!6$>c&RYvJ>HgF_8F^47HH{jEMXKCA3RX~LI|v)%w*)80uF0$5UV|+ z$ea@3RXHM@c~-($z>UNDsL`8RT+uFWY!B7Ej025;Wal~drp+(*i>m00m|wOqQ$IAf zsN2nSu{%o>1aR11yjCX>-QTdt$^hISYNov;f06r2{k7`TT?25~0FV9?f=>bw=>kZiytN>08=rG>e${_VyR(vCr=A(hDcTq>AFW5D zSl-KJBHGIoYJd;oW{ud}YPR;}uH=GfFgFO0?jnN%bJA3|TV?a(kplGro0^qc((qt! z-hUT31pHO2tuw)zjhqGTbqMa2JxtPoyN_NddTCKwT_x4L$jc81f%0+lQ6LD}lGfmP z3gLk~o|N07YYNZ{X^@Fn4XjrS(t~Mb?~IVh$rH0-3;IP9)Zj(7Pppw7SkNf)&N!=H z5T8@iEhL4SNh1uzHUoj)v#i>za@)lLQJ8`C8d$oE!kUHrTWxg+=0w<868pnUYx2FrcGnX!bueT3(p_+55)iK|GQ9#1Mo&1_ec9rz{e_mu{@ZiE`aWe)KNp z+T7~VT-v!^s6pQS&S>;{jqZ)7`FdsTnzOd@B=t8vYMDC#;IWfVyEY1}Rr4WkNYCE1 z@g(-r>E2wy{O#+8U&D$wed0Oem|HY0Gz@{6qfDLOdIpWA+-g6&^$0FJmQws3r#-o; zp=nYjeL8a)bSzUN2R&*LtxX-IX(y??!T47-o9jp)SCN@yDzW-lA5R?z-iJgcmrIW7 z$ayn)+i@`LJ}UH#=&?v+pUlDD$+xGyM{gANnuX1+*RO0@0Xgf9=&`U1o-jY@Q5or84K;4Gn<-#mvaI`@J7ARr_M^J*l?9^B zZ|RxaVcqSIY6g}|d*Vm95-P-jTqf)=BOR)568%K_*VP1XCPqd4C)=7NiyZtBZhv&g zHN!8R7-v!s1co@ry;!>saegmJ9&Yf?KHn53_ssp%r$b`u7Rpm3fbvS`H8!1pA=O&_ z(S#QaqXl`u>qUhyhNW+Bbd%jgtS;RScYYk>jwx2(N0j|sx7aS~KLNm}O+}(_GWSnb zEC%KW)xaLrT+1$@r$Ij5u0b;8ah`ir!V7v$jBqene*@qrJpOfG#X4KrguI2*2P~s@ zNXNYy)UDOp5Puq<;o$T?G(P&o7^U-@B&pxe_N(evfNadZQMkU58D#Y;q4j=Znk|;< z8(0<%zFoosxg3G>NYQ@hwbhx@-tWwb`C{2peku3E8lBD6?X|etu(<$kUUB!TOBgMV zz8*>K?0`~)x-R_lRs2yTwi;ymrc?+(IPb~FO1o_m!*U}|WMkJk0MH-Wq>>*CU94mV zRRPKAox+X0Kz2TJ)-Cm~9eBv4i$<`du8+JG=Op&c5WMh|ZLMkg6@ubfP_4r=61&uM zgV=Fh6Tu^OA9%58j#l6`^Yf$>Y+QWxiB>OR!+z7NwZqcfyLW43wboct`X%>;%I8zMzq(oceA}s(C=J`&eq8Jq(}Xg=&;-gZDY7r*^gYL{{WRg zRFd_X%_%c&4^o=J%3M5dg@2Oq>f_mvw)tJdd%X z2r-X(W470<@9qe@hGXgNfmiKKtZ;#7c7{BMY?|$HIc+abCC%c>E#emZJ)}Cg2OT}n zy*+69&RD1OZNZb-$Mw$fsw?O&(j57yg9wsQkM{A9}Y{qLEc_I@HlV zO=BArnaY#&-m6TEWh8W~ZPKI0PDN`c;Uf?9%mAp#?L;i@$}nDe_@U@Is}YVxWjgg~ z(&4<47$BQ`byDLc`1h+CN`jxI5H^bEKj&QgB%<*49D4r%WDpzoaJo&+k4X2RTD7sa zl!YGj^tOu{G0*j-?R`{|Kl9d;vG#g;KgDs~a!f|n?%F61JqNXNe-zxChL{}wBmL{F zYnG^Y5_tRk*C_FPLN=7Ix&HKw<&5<%j?va3T*O4}k8@MoSe7CBy4BiX2^3h2IbN*D(eHnPLzQVDf+AOvpkB{wF5*1*%1fdG#)0!#wn9qNg{!oJYtaIn(|xxU}K-!OLSBNz#XXUcKbBY z7q0pRs6iu6ON=f!;!TdU5+9VgZ<0_sK_O{ifG%GeAmz)vA+R9t7t2#TrzH0)&BtAVD&w#<*zn)uSCF% zEAHuCFTtO+-BUxclEMrCyg)<0ZIJ>u@WJDspPKA6oG}{4g&7^*;cT?)o2x)ipx|?w z38&vW-Q5_UXy3+bpICU7O_0-a{sc_rRYI})CWx8=W^{Gs1 z)pclRid9C#6UK4xOET+G!68Q8PJ0e01?JI&@U0{uLbZyk}$m&G{-b*V`k~c zy&~L6a5VzENnC%1wx{VWud*0mxe_ks&rfQyv&Nck;r=641UZB^dKsw8a3K*W@1B*^ zrTTg9T|r$M;7cP9_d-MW)fO?9j;YcnR<%T%+KJ<4`ibef>sp!uR9h`p5spXlV z$HA>^w6Y{FNd0O^q?Rb~7y4D5J*AN6f%#JkdSxyiEz-@Ky}Z~xGAi}O(Lc;6eaD>5 zgNzS~ghs=Y%^YQiKI&VR7N&ArC5KvL(Qbd)!KABaWm<<>+l1 zlj1;fC_VBzF(aikeJLXW5A~?-G{Rv7uYa28*3T)+U(*v5EQiz%YRp%1z@`|OfWvJN zn!-4w^&vSp;F`4#hLb3mZ5ZbSoYu-`G1shLb=ujR)M~xTBdIDt{OIndV;Y792|nXA zyLW4Fjp!gRu@uZDp*Sd_l$)7~lfu@eK~wKjxG{jNq_c66T1f+}Pa$D|GmiA#TcYit z9-uJz`86NbOd#_2dO*P9v8YbCc{?U@JJ6Z0OQs{p z6_Cu#Oow)Tt5*QHE5$V9;Il?>F<8$y74FrWa0~NU{4$ydX==aBJJFy3QMQFy7{i5N za%isH072q~y)rD>UCRd`k@-_as97RXagqV09Fn|oN3>}qkpSEVJ?je=hM4)G#09?? z>S|9bFOD%)G)sjM>}MIzya3vrNrJYuHR?#=X|DeijG&6~*-K}pEQ1_fDy z=*1@Ep0$)B;{4D8?5h3IK-D2_%PkPlyqZ~d!TH2Pvlq!J@z{i!p; zu?ZsD%0ng>pS2}yaP<5M_Cs}w!Y~*6)RL+5M$#)?KE;@Vte||Fu|1^mVYewC6sz#+ zKY)!&JU5!7)T0$ndwCRPzXJ@KDRjG}2%v&TIrpksoy*B$_QN7V!wrrw4G20zai>}7 zN+p>x?l*v}bAwdIscRxJ5KFf>tG~2+h~HS!?cjz$#>sbaoStiK6Hbm;g`t6(XKncz z#wd|AA8TP`bmw_3q}*TJ*0+P{A^J;eX;d)}yJ;f2CcmRWr^_9el4WK^e4!+Ls27Q0 zy|}+f^wKRL^2X$qc`e-4vV_~XqZhC#PDQ9<9{H+KY0R?Ab#CZjPgc-!SbSD=9cICG8<^y_ng%SOJf4*%sIiU~f;*;$IG#A2 zuuF6!?@TE?FxhOjQz}W73*yaUDEX^<Ig*Cl>NO#A&sP$T@EOW`oJA z+g)9>Dz31r723pf?L#cIJubraL>AH{u1hnslA!m_YH!{?9JaYIPov-6%t-~|$xugL z^$1U?Txs%JI@_U&=wKwS-jyBm%~kNWjec~CxjwSpqcajv9J3xd6>|Q^O_NS{mdbU4 zOgKg)FdeE515mb#PxcE7xM4;r#n&L5b*MreC0$xb@6n|p&fS9;S}mw)dQJVxU+LDe zq9O>~GZIUVrmVZ$%;M(Mk0nMVOy!GJ%`;chlpAe7OuU9NNpRykpSc|LtH4_!&{{tw zqJ)G{#GU^14_MVKt}pVI(;3xvjC*~k?a;8bh_n`03JY=$bCX+GX&QWbqTV&Dw3{)I zPeW4+Ob4K|UP1J?5kIAi?;{J0^v}Irz0hRTE;i}qAca7DIXy>OJ8~_Qm~E}(jyz-r z_pSUtqIiaN%ootjT;%8C7=~iUZ ztfjbXh-~JKcJ0e&ty$4pARar!X*|U#8m|Rdo(cG?NDw8Q4xh9u@~Fbhz=0Tpw|5!l zi)#z1$kE%{&lrUq92L*snlmn&aTb=kab#PViFcHbO9Rjko@yIdCAZV}%NsiYa>_WP zNUb5Vkl5V1OpPa;0x?0w8IxqTu-d|msE5C?pcZ<7f%W^M&lU# zJxyCFvpOcJ^jhWCnia}0RN!QD{{XEYx>BRbwi|K8qpuW?X{jV$Az7rhpLDVy-M5a^ z@nIdrclYiuOpHL?A2ECy6RKKVumO%sExtK{6HLheba%fQCkr0;KOgvyKU=BQuoip{J8Y(UcI=TLC6|76bm( z)pWS5;IObwgqUDdY#!iZki2IdwWo;e?qI^r60pwf^Y*8WEn||-*q_BLYRuW=IHY+V zMA{=YgT)oAPXdqu&%Ja10NNMrrqjboC6wuKu0UagUwn5z6zQhU(KxihD%m*$kJi3u z{{Z*1)2-*$VwMd)@X+5Z6h$?5lTy}iY?`BM1K!~^@&)9MK| zv^v$Qu$9qv_d8ELKRWn`t487|!9VbhO??OZIPpfgJ z&r6J3JJKr85O{qD10}ucwxuP^P6%Mw1E8hob-SX0B9t;`1ww*zO=UlWwf#<0c1KQ? zglv7V(bC$`P5jo{wWel?-)m!zI(?`-ItGVz5esPRHcu?)82xB}gFHaXsLiKd2PZ7! z(g4Ol6zg?uZv%PJt^*8kYpG0iXtecs#63sDGFm5`vqGz!V{y$;6Txo#Om6JF<$6<& zt8SM_E#;Oy+k_=jhbWjxI8hR8a5}Pj|b|4b{n(PzCG)p+sPb} zfC&9-i}+tvwt+@rl}HD#-nt%*c_j9+T*Snyw$Qyu=9*Tvcu&pnoqN=1Xv&;|4r*I- zgHc*6kGW(cAa~-X2vxp5DVnvOMlgHncdGGT3&m*x$i-OLLgt=d0#SNKtIbOi^N)JO zXjt*ZSV&n|5<$VKWU?nmhg)(%eH};x@}p6&6dy@BIQgS-k4gJi8rf`*bHcCqMJ-O? zz@T&L6s@aGy~!q-^=J&BHbxX4w4JVHS(J4j^{iU(^&gLMQb=6avdY*a{{SYrmx^u7 zra*nq_pX7g&m>`q41UArll3Jx0oW-RJmh@R7kxcv>r$`7o!(gaOi0J;S9Df?Fe&Mu zZ;F#y1UnCIKdn!qsNgv*_1%mW87OZgI#ovlfRXrQh)oXY;PPqg~sJG8cu< zOpj_>@eHv`c09Esf&J=5_)_nzp&UL`1CA=PD*3~2Q^gUxA#KJz>V>psMhpmEd)88x z9Ijt?FGfYTD-H1+lre`3mxFetof5+@v^+`Z4WQuVtD!9i6!! z6>8T~TWdYU`banf8KwPyQa2mgH`+S$k7@`*(pzhvf^Y2?SGh6G8acrPbRXfbpL|(8 z(6}mJE6;C%U8BZ2gdRld`7&%cIT!~O!~9P>J98?Q=i0iQb%Q)g@CzZBr>7^6YOb=$ zZ!++5?al=o(7d;W{MJ%JjB`|O!ZrIwy!x=e71H12=yY47kA&{kL@ej<<21pl$hTI` zvGpU2(ngCEurc#kGO-&#?M^X-TU2yANKj5qarqG0>D8ubLj_ydW{y$(Wb~7fnz5#m zw+PI^fa{9Z`Y0s1l(G`c$DG%aIPKsqj1mSpr}&Q+9KKw2=zCX=8T8V~zNJCUEKMHX zluF-Jj9ASJWtoV^F+${h^5<{^*w;=k!vr zjjayR?^G7T27SzSKMQD3#^6DfoI;Ev$Z`OtNuBVYQI( z;J4UONG;=n-*&MMON zMt(pe^Q%`nl(R~KTL8CkD5Mt)6adHzl0TM?UZC*bY>8B!K=`jz{j5v= zIG)kuB;y2AO|c6XG##u(jJP8otr1oY7{^K()^+0guvVdOB(svBDz~_e|j+# zNYUpU*5NkRafhQy&hf&J?&y?$8moV7s}Bl#(XavQQC=)Y5T_Z>y*mh;zD*sy5Va_i ze@^v?-^+vn(unJJ;Z8uuG$`k27^`d1ANh?ZUpF}v4^)d|94YTd<2X1XhieO!&OPax zR*7<<(F?5_%F0+{X`vdW#@S?rdUT?fcOn2u;+Afv6I@Fm_sw;<_4sh7Yf`~uP?^ot zu;+s0RcvkJ+OA$gT4`q;n3|?ePJQdCRB-{{PgjplE7k6tn$@!Yo&e&!t+dwL#yG82 zcefRsyfT?~-H98=QN>OB&EsGg99EW)GR8^inv#2XWKP?@^_a5=TVEvWjDUXhQ%$~T z$LC8{HmA64{G+lI^uw}8-z6lo-oodt#019wxchp%Kc?R2|%b_U%bu87HV>5ndG| z*(566*yF83sl_$FsX@kls$by67*NZ(PH~zc3nlCrlyigDxstX~XQbe9RN@5FuGUkw zP8;OWNMI!892%x{l#X)iv<&CHSxLpaZB_>doEo=wpm{tf##&r3Ojnb~+N+jG8z-;c zthS<_K^^dW&^x)zk{llNRn^?*-E3=)1WvZ<+WTt^*fdKjNXX^13jrHQ;JJ%UjP*h%z9TZkdH~hlZS&`Hy&C7 z4;Z2rbFAxz=kuj_?g)Tx_7#6jyb5~vu56CvUt}7)v4l8~I^>M?rK{UX4CiBKp2I!q zg6!rn{&M=1992jn1Qsr*pL(DhA=fm!iFG?G-K@epaGWWp-`SptZ!OR73+3AyqbI19 z=NwS`5-#jWQN5If0CH)jH(O5*{UG#A&L5t*KNLusE9w`wXe87`GB8Imj4y1`{p7la zr*ZW+5lJ2f&>1mL9xb@F)2s%Y411(q-)xQ z?4L&`Zr9REpuP&E#`N26rNHpS?C~9wxZECrgU)Y(kCUq$`S1cGqlT zX&&_5#@SubpvONrsEEL~+ABtdzk6D_&p>DcY0^kodC2^B6?wsrK74FB?lDn|t60Gi zx~pUSR7eH|O&rO1=`jUVWOW?YZ|uZq1Tec0f0rhuyqfe&=0mUq8i(6U9t%J}L+JPfU zXB0kVoW;v}&eAG~7t!ZacK0`aoZ#V(I#q8F-9dS&MY1#HZ##%QWA8__+Z`uVutt)5 zc&1=|4*sn6<27XXJ^r17#7eT@I8(HI)FBs#FC8X=7$-?>)qr@D1%mq%O z77`Y3;cb?V8gRTTrf|6T{b-Gci42iRY|a~g0;nS^@mMK+eWAu~VwUdhQ}~Xl_}e{j zDO$@+)*!!{M$&I#EcuDvCIcShj%oxv+E`8k0g9_qq=^a(nk&D&E!_3C@ix2NGIN)CYt@lm4)1vGl6w2!xl$J zz!)_{K#pxOr=4V2M321-j)U{4FK;YPvVnB@H7U@tqe6ER_5z4_k}I3*2;qv(YdKmm zv1CKI{#6J}?Wt-^R(t5DL(rlODC{_>FD^AJRPtiAm|Nr4n>l0d4PWs6qI)qz^fLP_wY@XwVn9>R5c4n zXwbZOZ+_qHiLtPM6Drf5hvGYE;vY|S6g!CpoxvY!`IRNqmSW9sJYyfsn45hGfwS`p_Gcepvq)K@n1OBhYtlpOFV(FHcQx6`7A=`g1C{Jo^| zImbDxv1!pp=2rG08PFcH%Y= zL`L46b5cvgFb|A;Cuw_hFA`MTGI6+`rmX3E(#%-2su(C#2dMy2jb6p$wBC{e#X-Ov z(yYm-LvSt(a)(^(ZJnuk!?MF@yc>n@l^k}_#LFhp{6o^He$cetFJ97G#(2cjvMx5i zJRI~D3|gc~5=nI7r3yVefHgEi87`9QAR}Nf2|o0?{#bvp9~1u2JUMyb?-0lu2{$=u z5w;K&OA(G}=j^9fx?9iT=gd2f{ka_n72ZE?ehr7kHV+l7YBe(&i0(OUpf*Ur{Ogkb z%e*UhrRvg4s9VVt5togT(U)^{+%wv@o9z==O%MJKx}IG`Ll#t=oDrJrx_oUFv3t~D zHlI@sqopE#&h!W(k*}s?R}9Jv5)LVc#=8CV`ZL=0If8Y=`1-) zUcJV?*S3xsLm0?hALg#Pa;#uPW(vF=r>!RV3&2xZLiZPrt(RxoRe{e2ns4u3bOkKt z3>XdAuC-4hB{$iXHMjk%DdqB96PgIb8lKz73u4@l4XIf~)|*t8qpOf@w#?`ohU- zgvzYM@;3~QX`<5LOBf=$l-c3)j&&cV#*uO~8T8fEi!lnTY0Gm(AzX}hryafpR~=D zne2Gg{Tc#hFv>Qkz?Ag#%pq9mS9LHk7^O7q^fz&KGeZ( z@hXDY&)$YF!<#E(tlIJ*Vi`F5(CFK2+X3Slt+i{%;6_e3=|j!QR}N3bR%y$+N>Upv z#F7s$cNonC*OTdGDo87im1fIPF~jDA?mJLTTJf*tEJ?@B9Z|+``PL|)Y`2Q8Lf4^o zGHepsFS8&7dpY2tWIi!#_ zPSSm`W-RtBba!*R(U3sGmv=g?OfAUJFgDlcIKS5yNC_Uq?IIp z#qmmdgsVK|QYPJ>y>#eWb)z1r-%hqkKi%=1XPUSBy&}0rURj%(#)%Zsz6?*!G3llq zKTeiuo=GERP(fY5ihalV26thbTNaTNfz#rMPZW{b?anwCL!_V~^YE6pKWhm3=jY#N&?%jzI~=;)3!YbDwsi(3LN0}gqu zZ#3z{7r_JmQ%2%@c$hdUNbS0o=~DBD3k?Ojz2j-0z5%LM3NWt>ESmiQT>w|4W# zX`6*$P6!OR;-ZkpYpMxA%H@v+iFl_|OS^d82HlaW<0Ia&c4vf*U+5xf_9z+bDDH=J zcMf|}jl|o(N?_5O7{|3KeG0^O_&k?U(KNf5lN;Sn=S&u}+Q_&CbN>J}a`-P~4}$pp zDCLHzA~`Y-)K{M5@KXN(4^PMZthFs1?yUq%=Yj}6n$Dh}zDk;>XR0OK0wUP}=cuBV zW*~chwa0XIk?DBc=P3OcEN!D;30mIv$9Z6*jkUg+EM8wEezkdBSThcUVz*H6D=yJ5 z=pAm@VB?O}b*v87Z;CZFxFw{=YN;H%+0*_S-nbmQZS(`>mHbAvB}Z{r?rkI>;2+Y0 zUx}e7ujx+00#{zrEf-YD+%wvXXfuhCgoJj+X)&)~b{L*2{-3CoAR+tKj-fjFc`O_} z@dekUjk~H1Zc#D@1Y?>OZp^8{^`o#YL z>N?+uEK*rFDtlEZ?b0;CS~E1+T(F_+eC9i9(tqjIgWsevrruYjZaqhu@yKF?cFk8a z6nZC!b_kw86lR3#7f87S@ei6MB!Wc1G%j5^r?_Lz2=<^>dK9bFF6tLjO2ji{RTA7{ zifgt%Oin%hzACMapqAa-^$1OA33g{Iku?IZnHr3_1-|qzSiFH@Y>}KF=BTxEJaUjT zjQdjFvn0(K5Ny zdZ!sA^GsS?USwEN$;DQY#z2e96B8F4C$(nGz(@f=Bd;`K{uYr8SUoY)fyr#va_%|7 zB=n$i(-xZxg1%l9fW5_5V2a#h^{P*D{A?#56%n37dCd+PxUki=z>n~pRMK66(9k5f zJ@NCkpCAzm~c|pqOr3${XdwZE#q*fiV+N{`WhTaW#q47bQSHdd}FDa~=UaoEnXeM$&K(TJQl~ zRahEY$)V_CCx+agQlZJ@oKR01X)*`}y| z>;v!Cxsp##vm~FsD2}InEYk@Ln~IDB#R1a;q&R2E&1Orou2GFb@Rv}(Yn#z=a7)ao zur~vbYQeWl))PyDpktb>>lr(V6`3xKaG2vG1m}ZLqzu+{+Y6WTrj1$h7dwp%)^4QJ z^!2ogK^kud9@(q9l#G_j#rfVTd&V*>_j^@=U8;Dfi(oB&WsY61bsfOtg(8*j6)rrnDY}kX2AgT8Kx`Sh-Xk@ zU57mhs$)S2`^BrF{{R^W2D367W(_Pvs6F_o3n=PW`mMB~Eo5+;vBGDHwwKF2h)at} zC%FoDW3GE~RwBLAubd=d6@mW%9%#miq)%md`it4ibp+Vj0+2ZC%|J9*(`;5-m5@jD z(uM>F&OyyT_-gN2duz*kjYKqPfJYwCJ@^z0U%0njL8MJJpu+=##P+XP-dsv$mfCM5 zjzGq9P&kC*xwwZ`gb6;Gyuq0qV14~+5WRlaR<^BiXL^xK zGVj}fOBxAprud5ep6^t+cC!tZM~`mcdSK$Go-5nPq|{_rv4+%ciZ@*DQ`jGhv8nir zRJqfwtzbzK*hCga01$nTN`WP$^GT)Y_JU0g#jUj@QMPc~u-(oN#%j&2#-$`;?^@O3 zxVcaaIRQ#3>M>Ag3j#Wu*svd+>~K0#=B8eI+mbHTRb*ip$MWW_A~Z$fKN7(d(&?`g zOLZ$3NmYgb&$s1Cch7%&a3qRDHqp0YE?fFmZ)JIPz)ibNGG!5mQaSBigZ5YZIQlz? zwViQUZ25K)AyxG+9<2MCBn}+YP4G4OwmO!w3{WZjGNUd*>Cfj^Bk*Ke&C-oKPkAF% z+Fccyay~_M4PN5w#(pJ>LeuOeO&}qTM^9SrLP*K{hkEMX4DgkQhAaiGrkv9=9qh@t zazM|2ipt60USZ38Bl{P$W)s}S9OD=$181k+pY*TUCWQ~KTR6z+_?Um4bbS`xEZ{8_ zs~HO)NGCWndfwj7;CU#>T=Rf(Xd@=T)Nvha_DSK{;yzW3YT4xOW5?@Uv-XGk7m5oJ zCW{(HCh!i$X5$An_3h4+99zL(<PP8S1BYDoM2T)5ed7FSKoU!ly#LDu?3dG=bIXwaSub2E)q)p(@5zdiB z?Hg@C`*w~%J?Nuune{%L{hjK9eIX=kglSz^HzPRBHO7T4_XYt@c(0iM0B7DaxU!jI zX+eh^Wq=vo_O9{a{du)5JtU2RQ_H+eLJ(>w6V68<#{Gnk}^R-j+7@y zzKdJBo>D^jWH39k)|o>{w(+bN0g4Vl6b?kf-k#e7Mi9oQ9ctu6B%#g1aCjM|`<+f$ zG3Kc!xja{ft!84}LIwl;b$S*s<;1S{OSBeJPDrR_ouGo^RcyL9qzx30KFM#9;jNsII(Os7by=++@!VG0)FRtW2h!9j{Zl&>~4LE-r0@ zD_{dC2O0a-%^q0V+|DkexsN`Oj1C83Uoq;}TF$L}sMqZrEWWT~1ZS-|e#ZP~C7u5O z?ww-s8Cpi$y_J0-c>dK+xUg28`E2876RW5=_vujGcyCUQ6Dp@V|$B2C< zv!?5E-Dz$0FtR@GjCsXWyS|(p#*9bBTCOYn22WWd$#(=q%Qjc-ieA=yOAUpWq-BG4 zVOF&p>#3pGRl569cC4`oo;#~HW*qM%il^tm;sVzESFCExUO6QZ`)miNlvq9AbD!J$4Ixe(cinR0gHugy&AQv2#LfXol+QdYG7ocgNO z)dii~&BL}vYWA8K&TzwMBZ^tNzIM0@r=w9l4(?GgR?j2~iq`)C(Vje9C+OeK&b(0T z+lNw7TLP}Y`{C!>s9oE$Ibob+_M?s-vyEzSKSIGY~%)y;)5lOCC=jm0`5!iUwHD zPI>`V8F+H}YplEqSd#b**9 zTnJm!$0NNTU;HgxoJLzKkt7~iVUKLobHLH2V+3UTP%jGIwZmYZ$NSTiixR>-!ag!< zY{YYKk8nanTh;u-y=^tj+dQcz8-0!{(J_pLBlV!VoKrM}qa0`2iVd@i$g81Ye7K|B z2nsptN&Y?6)97W5WKrpF<{s30Qga53#hh*m)yBM4eLcm@kq5}>{VAA4E;L@~3MG!} z?pBixz&&bou(nw|z=L*koSKhLwrJgp5;8lAD3;-)%C>&g)lH^#v-v8S9ySIuf;v^( zJyP(xBg}T>3}97bX)z~ivHJ>wMVc9qx-#Lrj8|T->Ns<6)H=bJw+y_o9cxj%F~~oq zYvK9T?ZUAg2YR=8Bq{Cs(ylMQ8C5UnQPfixQ!6*pGX|xh8LPL?enloi1paowPxf`%P znzpxdCNY}c5m;QFd>Y`EBly54?^tq^~1lK2#PPA}-! zqF*ZdLxpdA(}ktLWd}K~VF6{3GByuN={_BWWVFk$&o#p2@sj@l4(|u@Eq!BlicIN+ zU=K8U&el|2tl9X*C~3EUOC}WY_ol5kQ!=>Re=OH2!x`yo=EiZvS-4hI+9F~;)IBXQ z<$~>F?@e)trH4LVPu_-I#ujb{(UDf3GS*FkXC;ot&fL0xQ}ZRdCf$Un48hX6u!15Mqar1q3>*W{{Y&XQdoKELQ#-M zO}cV&TRkYkgCd4v2xm7`Js zHIx{^C>G(5;yI;*&c9Bff@t${|2PW_xtjrh^R|oI$OV>&yh0Z$~ zv#C!cnE{EQw^wfxlqB*o*1ZP`#F6GXJb5rZ$=Pt=F7AIyzjY7(q}p5wTu&! zgT-}!ayilCOR-kw0@*tc=~Sk)QoT9*Q5kM<+dnR~PH9La_M=v4{dBa7KTU?KAqru-&CzOJ~Sx|1ZKgAk;9(Ug&0aKupEQq(e* zL7%X!lVYwQ0L5}Kk(%~*4wacBkyV2O*V?fV^qki51;omuG4z5@#Ykb0Ef#1YhDuW7Nz zBYLq@YBupkxfrT!$|oGETYwsLYl0k1D6P74)pVrr?pl!3gK8SheEk#Rok zcd0&_GYHNyE3Z{?Q8+ix0y4Q9aa$-Bi{?chbIHY0i%~-+(nnwMR@e8zVcNaN zV@lZu#;I>X{vpyAR)OX!Hz@xA4tknOj_O+*rnQhVsA9Q14lAJP_rardV~n2Wl6+xi zexc<+PDwluno@AXv&WObcCTWWXl9OO>COgw(1LN0%_VCVfViF%}hQjCQ?zX0!>;C{161Uv9U`J}sgmoP$ zg6B)Hk})dW!m?*2JJEo^*V?S65YkFwP;vtr5p&`QCATrXx10_@ef?XsKAC{#W!eH_McN6%X<iS5$Gca?Nd*D>^_p+Ozb@+P~?xwq_T=Db`N$0Qe( zxI7-+X+vDHwlaB*sKp_2O3D8K%cw%;t*gy^S_Qt@6j@OgbLNkVxuf2}HG|pDB3m)Q zQti|VS+LV(x0qaC5|IPC2X(-ieb?fxSgPMO%!-*XzSSd~il)Ph9W~2~c&#m=j4Ng# z{6Kj7(kzf)NvIvsOB8IxtCir7dM!KLPiR919#{$}zMF3*p`*xo^I{6C#!YDzrRjV2 zL*R>DWX-8wz@)=)$P1x480(+Tx`*v=QIAdVG@5n3B9N?m0BjNi0l@sI{{ZZ(Mzpum zZLMRCRLp_oAb&Q|oYyz~sa}iE+V+{@$rF9N)~wBw>B^SJAC*VpO`*H?U!?x+(ge$B zR%uv2;lXUE$*!ks07zCQqUfm@1MCGeAlWFv?Ogk1{Q&+Ktx_g( zOsflRJ!_x8j&%P34tSF~rNl5m5c=hmD&&)nwDD|ih1|ML*M+6j zWh!J7bHD`gj8>GrF>L5MzwN6*Gnq}zvRg0;BsVLxpKRi!(!5EgYWCvqM!1IQS&Ei{ z!wh%nUk=_~U0p))F8Lx^jxC2fa8EV#59|w3yNg5?aOgJ{O1s;6&N`2Z*46xn2kF}G zd7H|F?NTyWbgpsxUhrn0d#24ao>7zn!HV)oLyq+0;rZI=mTRzB1L*2%-mMfGhMMtQ z+kt?`dwr=&+ZaA6wDWB4-pKCV7pR_}(z~zhOILfCR?L#XBXghltCD`wZR68_Xt#Fu zL`)xI6i&c_T|f3sV=a^KRA^tzKApHfil42pS~?evFD1|nQrnW_e<4mgX1DN%kDlsw z62i-XGnX85_N_cxA(udoTjx}e1~`7Ftste$R=RYz7O{fNje@7zw499EI<~jsu+pC_ z@W%rVIi!CRc!K6bCAdc-Kva$270jmAwVCBoZYGUUw*YGHpQ~NU*H3WoD=LDFPeVba zbr0EU_quzSZDN&6;a!yeACp#~@dmpLlFBZpXw#F9iYRx6^!uCm?rzQg2vEj7xhJm` zb5thE-rO+Sl4MR#10OYhlLl))5sSMxnq%iVUr;a2Qq{aoZEJ4-0PJCQgO=aYlg6VI z5<6P}V+YVxxFh0_ym#VT^pwB^foCoJ++#FrOBg&)<8vpQ6|?1-kP%!GYKDoa-d+q| zZwTE39ssUw^%F;V6~hK#4&uJ_LgQPzkwV+f&~eZl)%row^<;`E+j(Uzm0yh3wpz4S z_U^LCuQA5NEr!R%Bt@!fWx~sQB&vHFmsgdM?e0J!l{1=)z+a>t9g=(Yk`6;;cY}l&0-suH-SVYj^D&8 zFj!9TcKhOyyj|h#Pf^sKNH3n+*r38}$jx*XRyO&2v7P?_gx8+d-QeFf>~Zt{ z?YjNw8V)DVXG6KtZXG8tGHpJxm>D#&s6b>Tpp$XWDx*AC(c0FLr|K5wDAG1;=Odcs zde4L3OO{E2^o7YA2+w*K6Gb5|-L0drh!;hhamr`ZD&z-yI=I@~dKwX{%?Y?N!)dj$ zIvOjd31qR3@<>~A5(p!n4KF2(+AR#;6^IxRA4@6AXWKQ>d^F-Uj}90y0As&3&Gc3? z!HCC_{{YN-=9_d&ucQ#9vS(uh$;WzPsXRF!k>kc`v#;oq##anR@Ht%aD5d;}E#oAG z>(tUNoqT3zo*BZI9gb+US5wUf$z*2QI-c}4HhDE4*ESHhZP#0esdo-&&4U3xM*}08 zPm53xTnNhyZpT_?(`6EbD!_)uaB8C1NjXbL8%fy03W7#D)XQ@bRt&&5$)PE5@LO$A zdR0iSNsyM~pL$|5JO2QWk8DgMbORPDcm}B5dZH>hIIPKVcCZ}&bpU2838R&t$>=JN zSz-WdK?E`!fsVf%(v8GO@*S(Ynq}7LhZ9|1#`{~CwRiwjE;F7tE9oFBFe=;#t&*(@x81Or>AM;bo(0G z6@_0R;G^MLKAp1Oo)2Cr%G}L;Ce5r6bGxWCon>z9xlm6%g&(lHyMhpiTpaeIoN*h% z)ga}~kCPtlxc4NF+JCLO*C z`qr*x)1P#hJ6nR?IIeDu6#9$rnRz3rqy8n8jk~m51_WSzsZUI^mPuMeob~BXR|2Ys zRD(A*@#k!Ar#x{)w4E|vr`$ndj=O4>muD-@m(CP}$gYQ>T147*2mtM^y5lx;#4JS& zaRa(M{pb&hS$9R{$G4Nyy*TTZ;t<7tdJ0U}Qb`&UgM}pYu8$f*cK-lN3H&%_+v-LG zj!2>x@w}WVB>YqwA#W>hJ*a~#2G7k~$1@t>)P?)FrBqkg1P`2Q(3HcenuvA9^imw8zc?Jl2Gdg_~8}{WDiy zHB}iEQU($7D|sb(KMreHybCmy0aMc;Ju}wvsyXswy zV`bB>ggI4EJorEa%)(_PJNNW%IZu8IsI$YBhQci zAJ)A``phu;X{AL|>J+y%@JsvxIu7-;*RG=(C-b2`Q^|AY?mucIbZfOq_&wWA=EgHa z^@~MxJXSPokX`n>DB9+@`3--=>RUJml$^>Jkds9kC1R#YO#R$}j${27DHPNbVirAw8e%{|L&uW@bVi^OG zR%1aM9CKSVAbjKf^1co^XEKrVU)Y2w15F>fH8Kc(gxD1Zf7N1}Yeqnrb z(-p1V(^)naE&l+XDC0E2YY76HzG(!5KBOAt!b?tmWWUBhW6<%@EV20#E^}fEGM27^u;n3A4$i@irXh zqB361wjx7P<=nnu{OZ)x+|M7TCdX29L)_rtirGRa!}d8FMYUIf&0u-1!~k(p+bV7Z z;j=}djxvJ?p!?#ZlZY~kXdi89oG}?cYMtgb;{;02N zB8|qNj}8Vik9wgDj%UcvQCnPCv{I0+U!It&`gNW_W=tQo4AN%MTkt=k-JdN`jtB#- z6uY}a0YQx86eh)1FgF08cdt)8O62bco|K&8v}zG4OLSnIlhCp6SM9FjoDIxBS`VqR z%)@3o^sOypoN_lPAJ(v%L)6sR#CE9$Gx}8LPmcCHNHTuZ3M;uHICU-eG;2-N5r71R z{Og};I+aJS(L2Pt7>Wt)k#Jr24nAwzaxC^+bDe}I=}$U^f@+K>LKLEG+6H%g(jByI zq~6JE0K`B$zdM#!c74spJ}a8nqp^GNv3VG1e6hy@uq{<02fx~<)EXtX$~bI*bM0D` zm7oPwu*Fspya&xY#J-%+x%FuPJB|

50;TI5`^ul&>o`fE#xe9LLo(-T0A}{S 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
  • 7~ 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 literal 0 HcmV?d00001 diff --git a/fakestagram/Base.lproj/Main.storyboard b/fakestagram/Base.lproj/Main.storyboard index 728a195..be6cc42 100644 --- a/fakestagram/Base.lproj/Main.storyboard +++ b/fakestagram/Base.lproj/Main.storyboard @@ -58,11 +58,27 @@ - + + + + + + + + @@ -110,6 +126,7 @@ + diff --git a/fakestagram/CameraViewController.swift b/fakestagram/CameraViewController.swift new file mode 100644 index 0000000..f6cace4 --- /dev/null +++ b/fakestagram/CameraViewController.swift @@ -0,0 +1,38 @@ +// +// CameraViewController.swift +// fakestagram +// +// Created by LuisE on 10/19/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import UIKit + +class CameraViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + let client = RestClient(client: Client.fakestagram, basePath: "/api/v1/posts/") + @IBAction func onTapCreate(_ sender: Any) { + let img = UIImage(named: "spacecat")! + let newPost = CreatePost(title: "Spacecat🙀 - \(UUID().uuidString)", imageData: img.base64()) + client.create(newPost) { post in + print("Successful!") + print(post?.title) + } + + } + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/fakestagram/Models/Post.swift b/fakestagram/Models/Post.swift index 0db4f04..47c1af0 100644 --- a/fakestagram/Models/Post.swift +++ b/fakestagram/Models/Post.swift @@ -9,6 +9,11 @@ import Foundation import UIKit +struct CreatePost: Codable { + let title: String + let imageData: String? +} + struct Post: Codable { let id: Int? let title: String diff --git a/fakestagram/UIImage+Base64.swift b/fakestagram/UIImage+Base64.swift new file mode 100644 index 0000000..85f08e9 --- /dev/null +++ b/fakestagram/UIImage+Base64.swift @@ -0,0 +1,17 @@ +// +// UIImage+Base64.swift +// fakestagram +// +// Created by LuisE on 10/19/19. +// Copyright © 2019 3zcurdia. All rights reserved. +// + +import UIKit + +extension UIImage { + func base64() -> String { + let data = self.jpegData(compressionQuality: 90)! + let encoded = data.base64EncodedString(options: .lineLength64Characters) + return "data:image/jpg;base64,\(encoded)" + } +} From 484cec93407bec9af846f5ebcd7aadb9dbdf9f0e Mon Sep 17 00:00:00 2001 From: Luis Ezcurdia Razo Date: Sat, 19 Oct 2019 12:15:52 -0500 Subject: [PATCH 18/28] Organize view controllers and utils in groups --- fakestagram.xcodeproj/project.pbxproj | 28 +++++++++++++++---- fakestagram/{ => Utils}/Credentials.swift | 0 fakestagram/{ => Utils}/UIDevice+models.swift | 0 fakestagram/{ => Utils}/UIImage+Base64.swift | 0 .../CameraViewController.swift | 0 .../PostViewController.swift | 0 .../PostsViewController.swift | 0 7 files changed, 22 insertions(+), 6 deletions(-) rename fakestagram/{ => Utils}/Credentials.swift (100%) rename fakestagram/{ => Utils}/UIDevice+models.swift (100%) rename fakestagram/{ => Utils}/UIImage+Base64.swift (100%) rename fakestagram/{ => ViewControllers}/CameraViewController.swift (100%) rename fakestagram/{ => ViewControllers}/PostViewController.swift (100%) rename fakestagram/{ => ViewControllers}/PostsViewController.swift (100%) diff --git a/fakestagram.xcodeproj/project.pbxproj b/fakestagram.xcodeproj/project.pbxproj index 831f0d3..79d5997 100644 --- a/fakestagram.xcodeproj/project.pbxproj +++ b/fakestagram.xcodeproj/project.pbxproj @@ -150,22 +150,18 @@ E084FAD8233A8734009AC50D /* fakestagram */ = { isa = PBXGroup; children = ( + E0E25466235B7BCE00C55767 /* ViewControllers */, E0C93E9E23523B4700FD330C /* Views */, E0E8B972234918ED00DA9D1A /* Models */, E0E8B96F234916AA00DA9D1A /* Network */, E0E8B9662348035800DA9D1A /* DataSource */, + E0E25467235B7BE500C55767 /* Utils */, E084FAD9233A8734009AC50D /* AppDelegate.swift */, E084FADB233A8734009AC50D /* SceneDelegate.swift */, E084FADF233A8734009AC50D /* Main.storyboard */, - E038FCEC233FC78600E28571 /* PostViewController.swift */, - E0A9ED50235A782F00A0527E /* PostsViewController.swift */, - E0E25462235B675100C55767 /* CameraViewController.swift */, E084FAE2233A8735009AC50D /* Assets.xcassets */, E084FAE4233A8735009AC50D /* LaunchScreen.storyboard */, E084FAE7233A8735009AC50D /* Info.plist */, - E0E8B9642348018200DA9D1A /* Credentials.swift */, - E0E2545E235A9F3A00C55767 /* UIDevice+models.swift */, - E0E25464235B6C0500C55767 /* UIImage+Base64.swift */, ); path = fakestagram; sourceTree = ""; @@ -202,6 +198,26 @@ path = Views; sourceTree = ""; }; + E0E25466235B7BCE00C55767 /* ViewControllers */ = { + isa = PBXGroup; + children = ( + E0A9ED50235A782F00A0527E /* PostsViewController.swift */, + E038FCEC233FC78600E28571 /* PostViewController.swift */, + E0E25462235B675100C55767 /* CameraViewController.swift */, + ); + path = ViewControllers; + sourceTree = ""; + }; + E0E25467235B7BE500C55767 /* Utils */ = { + isa = PBXGroup; + children = ( + E0E8B9642348018200DA9D1A /* Credentials.swift */, + E0E2545E235A9F3A00C55767 /* UIDevice+models.swift */, + E0E25464235B6C0500C55767 /* UIImage+Base64.swift */, + ); + path = Utils; + sourceTree = ""; + }; E0E8B9662348035800DA9D1A /* DataSource */ = { isa = PBXGroup; children = ( diff --git a/fakestagram/Credentials.swift b/fakestagram/Utils/Credentials.swift similarity index 100% rename from fakestagram/Credentials.swift rename to fakestagram/Utils/Credentials.swift diff --git a/fakestagram/UIDevice+models.swift b/fakestagram/Utils/UIDevice+models.swift similarity index 100% rename from fakestagram/UIDevice+models.swift rename to fakestagram/Utils/UIDevice+models.swift diff --git a/fakestagram/UIImage+Base64.swift b/fakestagram/Utils/UIImage+Base64.swift similarity index 100% rename from fakestagram/UIImage+Base64.swift rename to fakestagram/Utils/UIImage+Base64.swift diff --git a/fakestagram/CameraViewController.swift b/fakestagram/ViewControllers/CameraViewController.swift similarity index 100% rename from fakestagram/CameraViewController.swift rename to fakestagram/ViewControllers/CameraViewController.swift diff --git a/fakestagram/PostViewController.swift b/fakestagram/ViewControllers/PostViewController.swift similarity index 100% rename from fakestagram/PostViewController.swift rename to fakestagram/ViewControllers/PostViewController.swift diff --git a/fakestagram/PostsViewController.swift b/fakestagram/ViewControllers/PostsViewController.swift similarity index 100% rename from fakestagram/PostsViewController.swift rename to fakestagram/ViewControllers/PostsViewController.swift From abeb19a5fb26d2b469f972a8cf31caafea5b5bc6 Mon Sep 17 00:00:00 2001 From: Ricardo Hernandez Date: Sat, 19 Oct 2019 13:22:22 -0500 Subject: [PATCH 19/28] Create post --- .../project.pbxproj | 18 +++- .../ay-papantla-tus.imageset/Contents.json | 21 +++++ .../ay-papantla-tus.jpg | Bin 0 -> 188504 bytes .../harina.imageset/Contents.json | 21 +++++ .../harina.imageset/harina.jpg | Bin 0 -> 47807 bytes .../space_cat.imageset/Contents.json | 21 +++++ .../space_cat.imageset/space_cat.jpg | Bin 0 -> 73414 bytes .../Base.lproj/Main.storyboard | 15 ++- .../CameraViewController.swift | 42 +++++++++ .../Fakestagram-Xcode10/Model/Post.swift | 5 + .../PostsViewController.swift | 11 ++- .../Fakestagram-Xcode10/UIDevice+models.swift | 88 ++++++++++++++++++ .../Fakestagram-Xcode10/UIImage+Base64.swift | 17 ++++ .../Views/PostCollectionViewCell.swift | 2 +- 14 files changed, 254 insertions(+), 7 deletions(-) create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/ay-papantla-tus.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/ay-papantla-tus.imageset/ay-papantla-tus.jpg create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/harina.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/harina.imageset/harina.jpg create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/space_cat.imageset/Contents.json create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/space_cat.imageset/space_cat.jpg create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/CameraViewController.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/UIDevice+models.swift create mode 100644 Fakestagram-Xcode10/Fakestagram-Xcode10/UIImage+Base64.swift diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj index 87bc7f7..d3c7b85 100644 --- a/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10.xcodeproj/project.pbxproj @@ -13,6 +13,9 @@ 7701BEB8233F1B1C0004C30D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7701BEB7233F1B1C0004C30D /* Assets.xcassets */; }; 7701BEBB233F1B1C0004C30D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7701BEB9233F1B1C0004C30D /* LaunchScreen.storyboard */; }; 7701BEC6233F1B1C0004C30D /* Fakestagram_Xcode10Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7701BEC5233F1B1C0004C30D /* Fakestagram_Xcode10Tests.swift */; }; + 7706D144235B583000290A16 /* UIDevice+models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7706D143235B583000290A16 /* UIDevice+models.swift */; }; + 7706D146235B679900290A16 /* CameraViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7706D145235B679900290A16 /* CameraViewController.swift */; }; + 7706D148235B6DCA00290A16 /* UIImage+Base64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7706D147235B6DCA00290A16 /* UIImage+Base64.swift */; }; 7909C65A23521FEC000B0380 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C65923521FEC000B0380 /* Credentials.swift */; }; 7909C65C23522002000B0380 /* PostViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C65B23522002000B0380 /* PostViewController.swift */; }; 7909C65E23522061000B0380 /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7909C65D23522061000B0380 /* Client.swift */; }; @@ -62,6 +65,9 @@ 7701BEC1233F1B1C0004C30D /* Fakestagram-Xcode10Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Fakestagram-Xcode10Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 7701BEC5233F1B1C0004C30D /* Fakestagram_Xcode10Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fakestagram_Xcode10Tests.swift; sourceTree = ""; }; 7701BEC7233F1B1C0004C30D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7706D143235B583000290A16 /* UIDevice+models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIDevice+models.swift"; sourceTree = ""; }; + 7706D145235B679900290A16 /* CameraViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraViewController.swift; sourceTree = ""; }; + 7706D147235B6DCA00290A16 /* UIImage+Base64.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Base64.swift"; sourceTree = ""; }; 7909C65923521FEC000B0380 /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; 7909C65B23522002000B0380 /* PostViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostViewController.swift; sourceTree = ""; }; 7909C65D23522061000B0380 /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = ""; }; @@ -158,13 +164,16 @@ 7909C65723521FD3000B0380 /* DataSource */, 7909C65623521FCD000B0380 /* Model */, 7701BEB0233F1B1B0004C30D /* AppDelegate.swift */, - 7701BEB4233F1B1B0004C30D /* Main.storyboard */, - 79762856235A787300055EC7 /* PostsViewController.swift */, 7701BEB7233F1B1C0004C30D /* Assets.xcassets */, - 7701BEB9233F1B1C0004C30D /* LaunchScreen.storyboard */, 7701BEBC233F1B1C0004C30D /* Info.plist */, + 7701BEB4233F1B1B0004C30D /* Main.storyboard */, + 7706D145235B679900290A16 /* CameraViewController.swift */, + 7706D147235B6DCA00290A16 /* UIImage+Base64.swift */, + 7701BEB9233F1B1C0004C30D /* LaunchScreen.storyboard */, + 79762856235A787300055EC7 /* PostsViewController.swift */, 7909C65923521FEC000B0380 /* Credentials.swift */, 7909C65B23522002000B0380 /* PostViewController.swift */, + 7706D143235B583000290A16 /* UIDevice+models.swift */, ); path = "Fakestagram-Xcode10"; sourceTree = ""; @@ -407,6 +416,7 @@ buildActionMask = 2147483647; files = ( 7909C66223522091000B0380 /* RequestBuilder.swift in Sources */, + 7706D146235B679900290A16 /* CameraViewController.swift in Sources */, 7909C66C2352218A000B0380 /* Account.swift in Sources */, 7909C66023522082000B0380 /* HttpResponse.swift in Sources */, 7909C67E23524566000B0380 /* Comment.swift in Sources */, @@ -420,10 +430,12 @@ 79762857235A787300055EC7 /* PostsViewController.swift in Sources */, 7909C65E23522061000B0380 /* Client.swift in Sources */, 7976285A235A80F500055EC7 /* PostCollectionViewCell.swift in Sources */, + 7706D144235B583000290A16 /* UIDevice+models.swift in Sources */, 7909C6682352214C000B0380 /* CodableSerializer.swift in Sources */, 7909C686235246FE000B0380 /* AuthorView.swift in Sources */, 7909C66A2352216E000B0380 /* RestClient.swift in Sources */, 7701BEB1233F1B1B0004C30D /* AppDelegate.swift in Sources */, + 7706D148235B6DCA00290A16 /* UIImage+Base64.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/ay-papantla-tus.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/ay-papantla-tus.imageset/Contents.json new file mode 100644 index 0000000..b964475 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/ay-papantla-tus.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ay-papantla-tus.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/ay-papantla-tus.imageset/ay-papantla-tus.jpg b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/ay-papantla-tus.imageset/ay-papantla-tus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7221906a5e96a4b59c1e34c0ea6975b7af51bdc3 GIT binary patch literal 188504 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

    &y5%r{UF4z82$BHoGj6k=(scs>e*`C_L~3 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'$VGaRk}lROc|Fp?M?>L9F~=sS5Dc4B|%HHcou2g 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 literal 0 HcmV?d00001 diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/harina.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/harina.imageset/Contents.json new file mode 100644 index 0000000..dfe0317 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/harina.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "harina.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/harina.imageset/harina.jpg b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/harina.imageset/harina.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6ebfe766f5643e47ecbd06f56ff114e122c296ba GIT binary patch literal 47807 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%0AInsxT`t!BDdGT_6|=r-Kf=qVq0z zC}Dw8e++wWf1^C*P8i`L#%ot3=o)>{{q^w2WxqsqF65uk-+T*8=2c=wF?C(a3gtq#>#8Ff~)U2@wu(q*Z;yFJw(z_ zHuvz6)!kzCzmvT6-Di&|&bKbm%sI_c_wFI77 zt)<^C$*0zz>%~uL)2^^3qgMa$Ova?jj6k=O@n?J#we25q D{wSdvHQmSv`U$DFY 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 literal 0 HcmV?d00001 diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/space_cat.imageset/Contents.json b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/space_cat.imageset/Contents.json new file mode 100644 index 0000000..cc9c083 --- /dev/null +++ b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/space_cat.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "space_cat.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/space_cat.imageset/space_cat.jpg b/Fakestagram-Xcode10/Fakestagram-Xcode10/Assets.xcassets/space_cat.imageset/space_cat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fd13aaffa7e5f0f8c95d5acbb46bae95bf111b7c GIT binary patch literal 73414 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