Skip to content

Commit

Permalink
feat/#215 공통 내용 함수 분리 및 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
JinUng41 committed Jul 18, 2024
1 parent 28892e1 commit 7ee552e
Show file tree
Hide file tree
Showing 5 changed files with 99 additions and 59 deletions.
23 changes: 23 additions & 0 deletions KkuMulKum/Network/Service/HomeService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,27 @@ final class HomeService {
init(provider: MoyaProvider<HomeTargetType> = MoyaProvider(plugins: [MoyaLoggingPlugin()])) {
self.provider = provider
}

func request<T: Decodable>(
with request: HomeTargetType
) async throws -> ResponseBodyDTO<T>? {
return try await withCheckedThrowingContinuation { continuation in
provider.request(request) { result in
switch result {
case .success(let response):
do {
let decodedData = try JSONDecoder().decode(
ResponseBodyDTO<T>.self,
from: response.data
)
continuation.resume(returning: decodedData)
} catch {
continuation.resume(throwing: error)
}
case .failure(let error):
continuation.resume(throwing: error)
}
}
}
}
}
23 changes: 23 additions & 0 deletions KkuMulKum/Network/Service/MeetingService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,27 @@ final class MeetingService {
init(provider: MoyaProvider<MeetingTargetType> = MoyaProvider(plugins: [MoyaLoggingPlugin()])) {
self.provider = provider
}

func request<T: Decodable>(
with request: MeetingTargetType
) async throws -> ResponseBodyDTO<T>? {
return try await withCheckedThrowingContinuation { continuation in
provider.request(request) { result in
switch result {
case .success(let response):
do {
let decodedData = try JSONDecoder().decode(
ResponseBodyDTO<T>.self,
from: response.data
)
continuation.resume(returning: decodedData)
} catch {
continuation.resume(throwing: error)
}
case .failure(let error):
continuation.resume(throwing: error)
}
}
}
}
}
27 changes: 25 additions & 2 deletions KkuMulKum/Network/Service/PromiseService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,31 @@ import Moya
final class PromiseService {
let provider: MoyaProvider<PromiseTargetType>

init(provider: MoyaProvider<PromiseTargetType> = MoyaProvider(plugins: [MoyaLoggingPlugin()])
) {
init(provider: MoyaProvider<PromiseTargetType> = MoyaProvider(plugins: [MoyaLoggingPlugin()])) {
self.provider = provider
}

func request<T: Decodable>(
with request: PromiseTargetType
) async throws -> ResponseBodyDTO<T>? {
return try await withCheckedThrowingContinuation { continuation in
provider.request(request) { result in
switch result {
case .success(let response):
do {
let decodedData = try JSONDecoder().decode(
ResponseBodyDTO<T>.self,
from: response.data
)
continuation.resume(returning: decodedData)
} catch {
continuation.resume(throwing: error)
}
case .failure(let error):
continuation.resume(throwing: error)
}
}
}
}

}
26 changes: 24 additions & 2 deletions KkuMulKum/Network/Service/UtilService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,30 @@ import Moya
final class UtilService {
let provider: MoyaProvider<UtilTargetType>

init(provider: MoyaProvider<UtilTargetType> = MoyaProvider(plugins: [MoyaLoggingPlugin()])
) {
init(provider: MoyaProvider<UtilTargetType> = MoyaProvider(plugins: [MoyaLoggingPlugin()])) {
self.provider = provider
}

func request<T: Decodable>(
with request: UtilTargetType
) async throws -> ResponseBodyDTO<T>? {
return try await withCheckedThrowingContinuation { continuation in
provider.request(request) { result in
switch result {
case .success(let response):
do {
let decodedData = try JSONDecoder().decode(
ResponseBodyDTO<T>.self,
from: response.data
)
continuation.resume(returning: decodedData)
} catch {
continuation.resume(throwing: error)
}
case .failure(let error):
continuation.resume(throwing: error)
}
}
}
}
}
59 changes: 4 additions & 55 deletions KkuMulKum/Source/MeetingInfo/Service/MeetingInfoService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,71 +19,20 @@ protocol MeetingInfoServiceType {

extension MeetingService: MeetingInfoServiceType {
func fetchMeetingInfo(with meetingID: Int) async throws -> ResponseBodyDTO<MeetingInfoModel>? {
try await withCheckedThrowingContinuation { continuation in
provider.request(.fetchMeetingInfo(meetingID: meetingID)) { result in
switch result {
case .success(let response):
do {
let decodedData = try JSONDecoder().decode(
ResponseBodyDTO<MeetingInfoModel>.self,
from: response.data
)
continuation.resume(returning: decodedData)
} catch {
continuation.resume(throwing: error)
}
case .failure(let error):
continuation.resume(throwing: error)
}
}
}
return try await request(with: .fetchMeetingInfo(meetingID: meetingID))
}

func fetchMeetingMemberList(
with meetingID: Int
) async throws -> ResponseBodyDTO<MeetingMembersModel>? {
try await withCheckedThrowingContinuation { continuation in
provider.request(.fetchMeetingMember(meetingID: meetingID)) { result in
switch result {
case .success(let response):
do {
let decodedData = try JSONDecoder().decode(
ResponseBodyDTO<MeetingMembersModel>.self,
from: response.data
)
continuation.resume(returning: decodedData)
} catch {
continuation.resume(throwing: error)
}
case .failure(let error):
continuation.resume(throwing: error)
}
}
}
return try await request(with: .fetchMeetingMember(meetingID: meetingID))
}

func fetchMeetingPromiseList(
with meetingID: Int
) async throws -> ResponseBodyDTO<MeetingPromisesModel>? {
try await withCheckedThrowingContinuation { continuation in
provider.request(.fetchmeetingPromiseList(meetingID: meetingID)) { result in
switch result {
case .success(let response):
do {
let decodedData = try JSONDecoder().decode(
ResponseBodyDTO<MeetingPromisesModel>.self,
from: response.data
)
continuation.resume(returning: decodedData)
} catch {
continuation.resume(throwing: error)
}
case .failure(let error):
continuation.resume(throwing: error)
}
}
}
}
return try await request(with: .fetchmeetingPromiseList(meetingID: meetingID))
}
}

final class MockMeetingInfoService: MeetingInfoServiceType {
Expand Down

0 comments on commit 7ee552e

Please sign in to comment.