//
// Copyright © 2023 Nevis Security AG. All rights reserved.
//

import NevisMobileAuthentication

struct IsPolicyCompliantMethodHandler: UserInteractionMethodHandler {
	func execute(using _: MobileAuthenticationClient, with message: ChannelInMessage, operation: UserInteractionOperation) {
		let message: IsPolicyCompliantMessage = validate(message: message)
		let state: UserInteractionState = validate(state: operation.state)
		let isPolicyCompliant = state.isPolicyCompliant(aaid: message.aaid,
		                                                for: message.username)
		let resultMessage = IsPolicyCompliantOutMessage(operationId: message.operationId, isPolicyCompliant: isPolicyCompliant)
		MethodChannelHandler.shared.resolve(method: .isPolicyCompliant, message: resultMessage)
	}
}
