TF-320 Add capability validator for Jmap request
This commit is contained in:
committed by
Dat H. Pham
parent
0d199b5c9a
commit
0c1d069856
@@ -0,0 +1,20 @@
|
||||
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:tmail_ui_user/main/error/request_error.dart';
|
||||
|
||||
void requireCapability(Session session, List<CapabilityIdentifier> requiredCapabilities) {
|
||||
final matchedCapabilities = session.capabilities.keys
|
||||
.fold<Set<CapabilityIdentifier>>(
|
||||
Set<CapabilityIdentifier>(),
|
||||
(previousValue, element) {
|
||||
if (requiredCapabilities.contains(element)) {
|
||||
previousValue.add(element);
|
||||
}
|
||||
return previousValue;
|
||||
}
|
||||
);
|
||||
final missingCapabilities = requiredCapabilities.toSet().difference(matchedCapabilities);
|
||||
if (missingCapabilities.length > 0) {
|
||||
throw SessionMissingCapability(missingCapabilities);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
|
||||
|
||||
class SessionMissingCapability extends Equatable implements Exception {
|
||||
final Set<CapabilityIdentifier> capabilityIdentifiers;
|
||||
|
||||
SessionMissingCapability(this.capabilityIdentifiers);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [capabilityIdentifiers];
|
||||
}
|
||||
Reference in New Issue
Block a user