Files
Morgan Pretty 55ba2aa8ed Merge remote-tracking branch 'upstream/dev' into feature/libsession-message-wrapping
# Conflicts:
#	Session/Conversations/ConversationVC+Interaction.swift
#	Session/Conversations/ConversationVC.swift
#	Session/Conversations/Settings/ThreadSettingsViewModel.swift
#	Session/Home/GlobalSearch/GlobalSearchViewController.swift
#	Session/Meta/AppDelegate.swift
#	SessionMessagingKit/Open Groups/OpenGroupManager.swift
#	SessionMessagingKit/Sending & Receiving/MessageReceiver.swift
#	SessionMessagingKit/Utilities/MessageWrapper.swift
2025-12-17 13:23:36 +11:00

39 lines
1.2 KiB
Swift

// stringlint:disable
import Foundation
import SessionNetworkingKit
import SessionUtilitiesKit
public enum MessageWrapperError: Error, CustomStringConvertible {
case failedToUnwrapData(Error, Network.SnodeAPI.Namespace)
public var description: String {
switch self {
case .failedToUnwrapData(let error, let namespace):
return "Failed to unwrap data from '\(namespace)' namespace due to error: \(error)."
}
}
}
public enum MessageWrapper {
/// - Note: `data` shouldn't be base 64 encoded.
public static func unwrap(
data: Data,
namespace: Network.SnodeAPI.Namespace,
includesWebSocketMessage: Bool = true
) throws -> SNProtoEnvelope {
do {
let envelopeData: Data = try {
guard includesWebSocketMessage else { return data }
let webSocketMessage = try WebSocketProtoWebSocketMessage.parseData(data)
return webSocketMessage.request!.body!
}()
return try SNProtoEnvelope.parseData(envelopeData)
} catch let error {
throw MessageWrapperError.failedToUnwrapData(error, namespace)
}
}
}