2022-02-10 01:17:41 +01:00
|
|
|
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
|
|
|
|
import Foundation
|
2022-12-08 04:21:38 +01:00
|
|
|
import SessionUtilitiesKit
|
2022-02-10 01:17:41 +01:00
|
|
|
|
2022-02-15 06:30:11 +01:00
|
|
|
extension OpenGroupAPI {
|
2022-03-04 03:33:06 +01:00
|
|
|
public enum Endpoint: EndpointType {
|
2022-02-15 06:30:11 +01:00
|
|
|
// Utility
|
|
|
|
|
|
|
|
case onion
|
|
|
|
case batch
|
|
|
|
case sequence
|
|
|
|
case capabilities
|
|
|
|
|
|
|
|
// Rooms
|
|
|
|
|
|
|
|
case rooms
|
|
|
|
case room(String)
|
|
|
|
case roomPollInfo(String, Int64)
|
|
|
|
|
|
|
|
// Messages
|
|
|
|
|
|
|
|
case roomMessage(String)
|
2022-06-09 10:37:44 +02:00
|
|
|
case roomMessageIndividual(String, id: Int64)
|
2022-02-15 06:30:11 +01:00
|
|
|
case roomMessagesRecent(String)
|
2022-06-09 10:37:44 +02:00
|
|
|
case roomMessagesBefore(String, id: Int64)
|
2022-02-15 06:30:11 +01:00
|
|
|
case roomMessagesSince(String, seqNo: Int64)
|
2022-03-15 05:19:23 +01:00
|
|
|
case roomDeleteMessages(String, sessionId: String)
|
2022-02-15 06:30:11 +01:00
|
|
|
|
2022-07-28 05:06:29 +02:00
|
|
|
// Reactions
|
|
|
|
|
|
|
|
case reactionDelete(String, id: Int64, emoji: String)
|
|
|
|
case reaction(String, id: Int64, emoji: String)
|
2022-08-01 07:45:59 +02:00
|
|
|
case reactors(String, id: Int64, emoji: String)
|
2022-07-28 05:06:29 +02:00
|
|
|
|
2022-02-15 06:30:11 +01:00
|
|
|
// Pinning
|
|
|
|
|
2022-06-09 10:37:44 +02:00
|
|
|
case roomPinMessage(String, id: Int64)
|
|
|
|
case roomUnpinMessage(String, id: Int64)
|
2022-02-15 06:30:11 +01:00
|
|
|
case roomUnpinAll(String)
|
|
|
|
|
|
|
|
// Files
|
|
|
|
|
|
|
|
case roomFile(String)
|
2022-07-12 09:43:52 +02:00
|
|
|
case roomFileIndividual(String, String)
|
2022-02-15 06:30:11 +01:00
|
|
|
|
2022-03-02 04:44:56 +01:00
|
|
|
// Inbox/Outbox (Message Requests)
|
2022-02-15 06:30:11 +01:00
|
|
|
|
|
|
|
case inbox
|
|
|
|
case inboxSince(id: Int64)
|
|
|
|
case inboxFor(sessionId: String)
|
|
|
|
|
2022-03-02 04:44:56 +01:00
|
|
|
case outbox
|
|
|
|
case outboxSince(id: Int64)
|
|
|
|
|
2022-02-15 06:30:11 +01:00
|
|
|
// Users
|
|
|
|
|
|
|
|
case userBan(String)
|
|
|
|
case userUnban(String)
|
|
|
|
case userModerator(String)
|
|
|
|
|
2022-12-08 04:21:38 +01:00
|
|
|
public var path: String {
|
2022-02-15 06:30:11 +01:00
|
|
|
switch self {
|
|
|
|
// Utility
|
|
|
|
|
|
|
|
case .onion: return "oxen/v4/lsrpc"
|
|
|
|
case .batch: return "batch"
|
|
|
|
case .sequence: return "sequence"
|
|
|
|
case .capabilities: return "capabilities"
|
|
|
|
|
|
|
|
// Rooms
|
|
|
|
|
|
|
|
case .rooms: return "rooms"
|
|
|
|
case .room(let roomToken): return "room/\(roomToken)"
|
|
|
|
case .roomPollInfo(let roomToken, let infoUpdated): return "room/\(roomToken)/pollInfo/\(infoUpdated)"
|
|
|
|
|
|
|
|
// Messages
|
|
|
|
|
|
|
|
case .roomMessage(let roomToken):
|
|
|
|
return "room/\(roomToken)/message"
|
|
|
|
|
|
|
|
case .roomMessageIndividual(let roomToken, let messageId):
|
|
|
|
return "room/\(roomToken)/message/\(messageId)"
|
|
|
|
|
|
|
|
case .roomMessagesRecent(let roomToken):
|
|
|
|
return "room/\(roomToken)/messages/recent"
|
|
|
|
|
|
|
|
case .roomMessagesBefore(let roomToken, let messageId):
|
|
|
|
return "room/\(roomToken)/messages/before/\(messageId)"
|
|
|
|
|
|
|
|
case .roomMessagesSince(let roomToken, let seqNo):
|
|
|
|
return "room/\(roomToken)/messages/since/\(seqNo)"
|
|
|
|
|
2022-03-15 05:19:23 +01:00
|
|
|
case .roomDeleteMessages(let roomToken, let sessionId):
|
|
|
|
return "room/\(roomToken)/all/\(sessionId)"
|
2022-07-28 05:06:29 +02:00
|
|
|
|
|
|
|
// Reactions
|
|
|
|
|
|
|
|
case .reactionDelete(let roomToken, let messageId, let emoji):
|
|
|
|
return "room/\(roomToken)/reactions/\(messageId)/\(emoji)"
|
|
|
|
|
|
|
|
case .reaction(let roomToken, let messageId, let emoji):
|
|
|
|
return "room/\(roomToken)/reaction/\(messageId)/\(emoji)"
|
2022-08-01 07:45:59 +02:00
|
|
|
|
|
|
|
case .reactors(let roomToken, let messageId, let emoji):
|
|
|
|
return "room/\(roomToken)/reactors/\(messageId)/\(emoji)"
|
2022-03-15 05:19:23 +01:00
|
|
|
|
2022-02-15 06:30:11 +01:00
|
|
|
// Pinning
|
|
|
|
|
|
|
|
case .roomPinMessage(let roomToken, let messageId):
|
|
|
|
return "room/\(roomToken)/pin/\(messageId)"
|
|
|
|
|
|
|
|
case .roomUnpinMessage(let roomToken, let messageId):
|
|
|
|
return "room/\(roomToken)/unpin/\(messageId)"
|
|
|
|
|
|
|
|
case .roomUnpinAll(let roomToken):
|
|
|
|
return "room/\(roomToken)/unpin/all"
|
|
|
|
|
|
|
|
// Files
|
|
|
|
|
|
|
|
case .roomFile(let roomToken): return "room/\(roomToken)/file"
|
2022-03-04 06:17:03 +01:00
|
|
|
case .roomFileIndividual(let roomToken, let fileId): return "room/\(roomToken)/file/\(fileId)"
|
2022-02-15 06:30:11 +01:00
|
|
|
|
2022-03-02 04:44:56 +01:00
|
|
|
// Inbox/Outbox (Message Requests)
|
2022-02-15 06:30:11 +01:00
|
|
|
|
|
|
|
case .inbox: return "inbox"
|
2022-02-25 01:59:29 +01:00
|
|
|
case .inboxSince(let id): return "inbox/since/\(id)"
|
2022-02-15 06:30:11 +01:00
|
|
|
case .inboxFor(let sessionId): return "inbox/\(sessionId)"
|
2022-03-02 04:44:56 +01:00
|
|
|
|
|
|
|
case .outbox: return "outbox"
|
|
|
|
case .outboxSince(let id): return "outbox/since/\(id)"
|
2022-02-15 06:30:11 +01:00
|
|
|
|
|
|
|
// Users
|
|
|
|
|
|
|
|
case .userBan(let sessionId): return "user/\(sessionId)/ban"
|
|
|
|
case .userUnban(let sessionId): return "user/\(sessionId)/unban"
|
|
|
|
case .userModerator(let sessionId): return "user/\(sessionId)/moderator"
|
|
|
|
}
|
2022-02-10 01:17:41 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|