session-ios/SessionMessagingKit/Open Groups/Types/Endpoint.swift

84 lines
3.0 KiB
Swift

// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
import Foundation
enum Endpoint {
case files
case file(UInt64)
case messages
case messagesForServer(Int64)
case deletedMessages
case moderators
case blockList
case blockListIndividual(String)
case banAndDeleteAll
case rooms
case roomInfo(String)
case roomImage(String)
// Legacy endpoints (to be deprecated and removed)
case legacyCompactPoll(legacyAuth: Bool)
case legacyAuthToken(legacyAuth: Bool)
case legacyAuthTokenChallenge(legacyAuth: Bool)
case legacyAuthTokenClaim(legacyAuth: Bool)
case legacyMemberCount(legacyAuth: Bool)
var path: String {
switch self {
case .files: return "files"
case .file(let fileId): return "files/\(fileId)"
case .messages: return "messages"
case .messagesForServer(let serverId): return "messages/\(serverId)"
case .deletedMessages: return "deleted_messages"
case .moderators: return "moderators"
case .blockList: return "block_list"
case .blockListIndividual(let publicKey): return "block_list/\(publicKey)"
case .banAndDeleteAll: return "ban_and_delete_all"
case .rooms: return "rooms"
case .roomInfo(let roomName): return "rooms/\(roomName)"
case .roomImage(let roomName): return "rooms/\(roomName)/image"
// Legacy endpoints (to be deprecated and removed)
// TODO: Look for a nicer way to prepend 'legacy'? (OnionRequestAPI messes with this but the new auth needs it to be correct...)
case .legacyCompactPoll(let useLegacyAuth):
return "\(useLegacyAuth ? "" : "legacy/")compact_poll"
case .legacyAuthToken(let useLegacyAuth):
return "\(useLegacyAuth ? "" : "legacy/")auth_token"
case .legacyAuthTokenChallenge(let useLegacyAuth):
return "\(useLegacyAuth ? "" : "legacy/")auth_token_challenge"
case .legacyAuthTokenClaim(let useLegacyAuth):
return "\(useLegacyAuth ? "" : "legacy/")claim_auth_token"
case .legacyMemberCount(let useLegacyAuth):
return "\(useLegacyAuth ? "" : "legacy/")member_count"
}
}
var useLegacyAuth: Bool {
switch self {
// File upload/download should use legacy auth
case .files, .file: return true
case .legacyCompactPoll(let useLegacyAuth),
.legacyAuthToken(let useLegacyAuth),
.legacyAuthTokenChallenge(let useLegacyAuth),
.legacyAuthTokenClaim(let useLegacyAuth),
.legacyMemberCount(let useLegacyAuth):
return useLegacyAuth
default: return false
}
}
}