From 40a9cfd1a8a5eb1db444bb5dee3d5b5849db866e Mon Sep 17 00:00:00 2001 From: dahun-lee-daji Date: Thu, 24 Jun 2021 16:47:51 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20POST=20Image=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20(#82)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 주의: 오직 jpg파일만 가능 --- iOS/issue-tracker.xcodeproj/project.pbxproj | 4 ++ .../IssueList/IssueListViewController.swift | 59 +++++++++++++----- iOS/issue-tracker/Model/ImageResponse.swift | 16 +++++ iOS/issue-tracker/Model/Issue.swift | 14 +---- iOS/issue-tracker/Model/User.swift | 2 + iOS/issue-tracker/Network/EndPoint.swift | 1 + .../Network/NetworkRequester.swift | 39 ++++++++++++ .../Network/NetworkService.swift | 11 +++- .../testJPG.imageset/Contents.json | 21 +++++++ .../testJPG.imageset/testJPG.jpg | Bin 0 -> 51085 bytes 10 files changed, 139 insertions(+), 28 deletions(-) create mode 100644 iOS/issue-tracker/Model/ImageResponse.swift create mode 100644 iOS/issue-tracker/Supporting/Assets.xcassets/testJPG.imageset/Contents.json create mode 100644 iOS/issue-tracker/Supporting/Assets.xcassets/testJPG.imageset/testJPG.jpg diff --git a/iOS/issue-tracker.xcodeproj/project.pbxproj b/iOS/issue-tracker.xcodeproj/project.pbxproj index baecc4008..140d1064e 100644 --- a/iOS/issue-tracker.xcodeproj/project.pbxproj +++ b/iOS/issue-tracker.xcodeproj/project.pbxproj @@ -44,6 +44,7 @@ B0783E742681E1830031C2FD /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0783E732681E1830031C2FD /* Color.swift */; }; B0783E772681E1DB0031C2FD /* Milestone.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0783E762681E1DB0031C2FD /* Milestone.swift */; }; B0783E7A2681E21F0031C2FD /* Issue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0783E792681E21F0031C2FD /* Issue.swift */; }; + B0783E7D2684648C0031C2FD /* ImageResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0783E7C2684648C0031C2FD /* ImageResponse.swift */; }; BCCEBE1E1668EC814AFFBE24 /* Pods_issue_tracker.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 906455FA7C42AB9BB530CE77 /* Pods_issue_tracker.framework */; }; /* End PBXBuildFile section */ @@ -91,6 +92,7 @@ B0783E732681E1830031C2FD /* Color.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Color.swift; sourceTree = ""; }; B0783E762681E1DB0031C2FD /* Milestone.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Milestone.swift; sourceTree = ""; }; B0783E792681E21F0031C2FD /* Issue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Issue.swift; sourceTree = ""; }; + B0783E7C2684648C0031C2FD /* ImageResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageResponse.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -278,6 +280,7 @@ B0783E732681E1830031C2FD /* Color.swift */, B0783E762681E1DB0031C2FD /* Milestone.swift */, B0783E792681E21F0031C2FD /* Issue.swift */, + B0783E7C2684648C0031C2FD /* ImageResponse.swift */, ); path = Model; sourceTree = ""; @@ -434,6 +437,7 @@ B0783E772681E1DB0031C2FD /* Milestone.swift in Sources */, 10D55EDE2670D46E007587C4 /* AdditionalTableViewCell.swift in Sources */, B0783E742681E1830031C2FD /* Color.swift in Sources */, + B0783E7D2684648C0031C2FD /* ImageResponse.swift in Sources */, 10BDE6B52670C324007B38AF /* IssueEditViewController.swift in Sources */, 1029609E2673401E00669988 /* StoryBoardName.swift in Sources */, 10D4258526709D4800AE119C /* UIViewController+Instantiate.swift in Sources */, diff --git a/iOS/issue-tracker/IssueList/IssueListViewController.swift b/iOS/issue-tracker/IssueList/IssueListViewController.swift index 669eed69d..f11bd4b6b 100644 --- a/iOS/issue-tracker/IssueList/IssueListViewController.swift +++ b/iOS/issue-tracker/IssueList/IssueListViewController.swift @@ -17,26 +17,15 @@ class IssueListViewController: UIViewController, ReuseIdentity { coordinator?.pushEditView() } @IBAction func testGETAction(_ sender: Any) { -// getUser() + getUser() getLabel() getMilestone() getIssues() } @IBAction func testPostAction(_ sender: Any) { - NetworkService.shared.postLabel() - .subscribe(onNext: { responseLabel in - print(responseLabel) - }, - onError: { error in - print(error) - }, - onCompleted: { - print("comple") - }, - onDisposed: { - print("dispose") - }) +// postLabel() + postImage() } func getUser() { @@ -99,6 +88,48 @@ class IssueListViewController: UIViewController, ReuseIdentity { .disposed(by: disposeBag) } + func postLabel() { + let input = Label.init(id: "",name: "testDowneyName3", description: "testDowneyDescription0", colors: Color.init(backgroundColor: "#FFFFFF", textColor: "#000000")) + let observer: Observable = NetworkService.shared.post(input: input, target: .labels) + + observer + .subscribe(onNext: { responseLabel in + print(responseLabel) + }, + onError: { error in + print(error) + }, + onCompleted: { + print("comple") + }, + onDisposed: { + print("dispose") + }) + .disposed(by: disposeBag) + } + + func postImage() { + + let testInput = UIImage.init(named: "githubIcon")! + let testInput2 = UIImage.init(named: "testJPG")! + + let observer: Observable = NetworkService.shared.uploadImage(input: testInput2) + + observer.subscribe(onNext: { response in + print(response) + }, + onError: { error in + print(error) + }, + onCompleted: { + print("comple") + }, + onDisposed: { + print("disposed") + }) + .disposed(by: disposeBag) + } + override func viewDidLoad() { super.viewDidLoad() diff --git a/iOS/issue-tracker/Model/ImageResponse.swift b/iOS/issue-tracker/Model/ImageResponse.swift new file mode 100644 index 000000000..48899342a --- /dev/null +++ b/iOS/issue-tracker/Model/ImageResponse.swift @@ -0,0 +1,16 @@ +// +// ImageResponse.swift +// issue-tracker +// +// Created by 이다훈 on 2021/06/24. +// + +import Foundation + +struct ImageResponse: Codable { + let image: InnerImageResponse +} + +struct InnerImageResponse: Codable { + let url: String +} diff --git a/iOS/issue-tracker/Model/Issue.swift b/iOS/issue-tracker/Model/Issue.swift index b53c0805c..55a4f87bf 100644 --- a/iOS/issue-tracker/Model/Issue.swift +++ b/iOS/issue-tracker/Model/Issue.swift @@ -21,28 +21,20 @@ struct Issues: Codable { struct Issue: Codable { let id: Int - let author: UserForIssue? + let author: User? let title: String? let createdAt: String? let labels: [Label]? - let assignees: [UserForIssue]? + let assignees: [User]? let milestone: Milestone? let comments: [Comment] let open: Bool } -struct UserForIssue: Codable { - let id: String - let nickName: String? - let imageUrl: String? - let githubId: String? - let appleId: String? -} - struct Comment: Codable { let id: String let issueId: Int - let author: UserForIssue + let author: User let createdAt: String let content: String } diff --git a/iOS/issue-tracker/Model/User.swift b/iOS/issue-tracker/Model/User.swift index 9c3832513..cf906e271 100644 --- a/iOS/issue-tracker/Model/User.swift +++ b/iOS/issue-tracker/Model/User.swift @@ -15,4 +15,6 @@ struct User: Codable { let id: String let nickName: String? let imageUrl: String? + let githubId: String? + let appleId: String? } diff --git a/iOS/issue-tracker/Network/EndPoint.swift b/iOS/issue-tracker/Network/EndPoint.swift index eaf4587a2..944619bcf 100644 --- a/iOS/issue-tracker/Network/EndPoint.swift +++ b/iOS/issue-tracker/Network/EndPoint.swift @@ -23,6 +23,7 @@ enum APIPath: String, CustomStringConvertible { case milestones = "api/milestones" case comments = "api/comments" case issues = "api/issues" + case images = "api/images" } struct LoginEndPoint: URLConvertible { diff --git a/iOS/issue-tracker/Network/NetworkRequester.swift b/iOS/issue-tracker/Network/NetworkRequester.swift index 7ebfea6d1..4dd7b6d99 100644 --- a/iOS/issue-tracker/Network/NetworkRequester.swift +++ b/iOS/issue-tracker/Network/NetworkRequester.swift @@ -13,6 +13,8 @@ protocol NetworkRequesting { func get(endPoint: EndPoint, token: String?, parameters: [String: Codable]?) -> Observable func post(endPoint: EndPoint, token: String?, body: T) -> Observable + + func uploadImage(endPoint: EndPoint, token: String?, body: UIImage) -> Observable } class NetworkRequester: NetworkRequesting { @@ -77,4 +79,41 @@ class NetworkRequester: NetworkRequesting { } + func uploadImage(endPoint: EndPoint, token: String?, body: UIImage) -> Observable { + + let url = endPoint.urlFromEndPoint() + let accessToken = token != nil ? token! : "" + let header: HTTPHeaders = [ + .authorization(bearerToken: accessToken), + .contentType("multipart/form-data") + ] + let data = body.jpegData(compressionQuality: 0.2) + + return Observable.create({ observer in + + let uploader = AF.upload( + multipartFormData: { multipartFormData in + multipartFormData.append(data!,withName: "image",fileName: "image-downey" ,mimeType: "image/jpg") + }, + to: url, + usingThreshold: UInt64.init(), + method: .post, + headers: header) + .responseData(completionHandler: { response in + switch response.result { + case .success(let data): + let decoded = try? JSONDecoder().decode(T.self, from: data) + observer.onNext(decoded!) + case .failure(let error): + observer.onError(error) + } + }) + + return Disposables.create { + uploader.cancel() + } + + }) + } + } diff --git a/iOS/issue-tracker/Network/NetworkService.swift b/iOS/issue-tracker/Network/NetworkService.swift index 292d6cebe..1cd0d68c8 100644 --- a/iOS/issue-tracker/Network/NetworkService.swift +++ b/iOS/issue-tracker/Network/NetworkService.swift @@ -31,10 +31,15 @@ class NetworkService { return requester.get(endPoint: endPoint, token: loginToken, parameters: nil) } - func postLabel() -> Observable { - let endPoint = EndPoint.init(path: .labels, method: .post) - let input = Label.init(id: "",name: "testDowneyName3", description: "testDowneyDescription0", colors: Color.init(backgroundColor: "#FFFFFF", textColor: "#000000")) + func post(input: T, target: APIPath) -> Observable { + let endPoint = EndPoint.init(path: target, method: .post) return requester.post(endPoint: endPoint, token: loginToken, body: input) } + + func uploadImage(input: UIImage) -> Observable { + let endPoint = EndPoint.init(path: .images, method: .post) + + return requester.uploadImage(endPoint: endPoint, token: loginToken, body: input) + } } diff --git a/iOS/issue-tracker/Supporting/Assets.xcassets/testJPG.imageset/Contents.json b/iOS/issue-tracker/Supporting/Assets.xcassets/testJPG.imageset/Contents.json new file mode 100644 index 000000000..bd4a6bdb4 --- /dev/null +++ b/iOS/issue-tracker/Supporting/Assets.xcassets/testJPG.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "testJPG.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/issue-tracker/Supporting/Assets.xcassets/testJPG.imageset/testJPG.jpg b/iOS/issue-tracker/Supporting/Assets.xcassets/testJPG.imageset/testJPG.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3a52a95dfd4f26a12b8f23ee91ff2fa7425f6859 GIT binary patch literal 51085 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 literal 0 HcmV?d00001