Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions GustoNetwork/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ let package = Package(
name: "GustoNetwork",
targets: ["GustoNetwork"]
),
.library(
name: "ReviewEndpoints",
targets: ["ReviewEndpoints"]
)
],
dependencies: [
.package(name: "3rdParty", path: "../3rdParty"),
Expand All @@ -24,5 +28,9 @@ let package = Package(
],
path: "Sources/Network"
),
.target(
name: "ReviewEndpoints",
path: "Sources/ReviewEndpoints"
)
]
)
55 changes: 55 additions & 0 deletions GustoNetwork/Sources/ReviewEndpoints/ReviewEndpoints.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import Foundation

public enum ReviewEndpoints: Sendable {
case deleteReview(reviewId: Int64)
case fetch(reviewId: Int64)
case update(reviewId: Int64)
case create
case like(reviewId: Int64)
case search(keyword: String?, hasgTags: [Int64]?, cursorId: Int?)
case reviewsByOther(nickname: String, lastReviewId: Int64?, size: Int)
case randomFeed
case timelineView(lastReviewId: Int64?, size: Int)
case calview(lastReviewDate: String?, size: Int)
case instaview(lastReviewId: Int64?, size: Int)
case feedDetail(reviewId: Int64)
case unlike(reviewId: Int64)

public var path: String {
return switch self {
case .deleteReview(let reviewId):
"/reviews/\(reviewId)"
case .fetch(let reviewId):
"/reviews/\(reviewId)"
case .update(let reviewId):
"/reviews/\(reviewId)"
case .create:
"/reviews"
case .like(let reviewId):
"/reviews/\(reviewId)/like"
case .search(let keyword, let hashTags, let cursorId):
{
let params: [String?] = [
keyword.map {"keyword=\($0)"},
hashTags.map{"hashTags=\($0.map{String($0)}.joined(separator: ","))"},
cursorId.map{"cursorId=\($0)"}
]
return "/feeds/search?" + params.compactMap{$0}.joined(separator: "&")
}()
case .reviewsByOther(let nickname, let lastReviewId, let size):
"/reviews?nickName=\(nickname)\(lastReviewId != nil ? "&reviewId=\(lastReviewId!)" : "")&size=\(size)"
case .randomFeed:
"/feeds"
case .timelineView(let lastReviewId, let size):
"/reviews/timelineView?\(lastReviewId != nil ? "reviewId=\(lastReviewId!)&" : "")size=\(size)"
case .calview(let lastReviewDate, let size):
"/reviews/calView?\(lastReviewDate != nil ? "lastReviewDate=\(lastReviewDate!)&" : "")size=\(size)"
case .instaview(let lastReviewId, let size):
"/reviews/instaView?\(lastReviewId != nil ? "lastReviewId=\(lastReviewId!)&" : ""))"
case .feedDetail(let reviewId):
"/feeds/\(reviewId)"
case .unlike(let reviewId):
"reviews/\(reviewId)/unlike"
}
}
}