feat(chat-room) 채팅방 API

- 생성, 입장, 이전 메시지 로딩, 메시지 전송 API 추가
This commit is contained in:
Yu Sung
2025-09-04 00:49:16 +09:00
parent b74ec15de4
commit 154ca01a74
4 changed files with 86 additions and 1 deletions

View File

@@ -10,6 +10,10 @@ import Moya
enum TalkApi {
case getTalkRooms
case createChatRoom(request: CreateChatRoomRequest)
case enterChatRoom(roomId: Int, characterImageId: Int?)
case sendMessage(roomId: Int, request: SendChatMessageRequest)
case getChatRoomMessages(roomId: Int, cursor: Int?, limit: Int)
}
extension TalkApi: TargetType {
@@ -19,6 +23,18 @@ extension TalkApi: TargetType {
switch self {
case .getTalkRooms:
return "/api/chat/room/list"
case .createChatRoom:
return "/api/chat/room/create"
case .enterChatRoom(let roomId, _):
return "/api/chat/room/\(roomId)/enter"
case .sendMessage(let roomId, _):
return "/api/chat/room/\(roomId)/send"
case .getChatRoomMessages(let roomId, _, _):
return "/api/chat/room/\(roomId)/messages"
}
}
@@ -26,6 +42,18 @@ extension TalkApi: TargetType {
switch self {
case .getTalkRooms:
return .get
case .createChatRoom:
return .post
case .enterChatRoom:
return .get
case .sendMessage:
return .post
case .getChatRoomMessages:
return .get
}
}
@@ -33,6 +61,36 @@ extension TalkApi: TargetType {
switch self {
case .getTalkRooms:
return .requestPlain
case .createChatRoom(let request):
return .requestJSONEncodable(request)
case .enterChatRoom(_, let characterImageId):
var parameters: [String: Any] = [:]
if let characterImageId = characterImageId {
parameters["characterImageId"] = characterImageId
}
return .requestParameters(
parameters: parameters,
encoding: URLEncoding.queryString
)
case .sendMessage(_, request: let request):
return .requestJSONEncodable(request)
case .getChatRoomMessages(_, let cursor, let limit):
var parameters: [String: Any] = ["limit": limit]
if let cursor = cursor {
parameters["cursor"] = cursor
}
return .requestParameters(
parameters: parameters,
encoding: URLEncoding.queryString
)
}
}