Prepare structure to handle 3PID sessions and bindings validation/proxy
This commit is contained in:
@@ -28,8 +28,8 @@ public class ThreePidValidation extends ThreePid {
|
||||
|
||||
private Instant validation;
|
||||
|
||||
public ThreePidValidation(String medium, String address, Instant validation) {
|
||||
super(medium, address);
|
||||
public ThreePidValidation(ThreePid tpid, Instant validation) {
|
||||
super(tpid);
|
||||
this.validation = validation;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,10 @@ interface LookupStrategy {
|
||||
|
||||
Optional<SingleLookupReply> find(String medium, String address, boolean recursive)
|
||||
|
||||
Optional<SingleLookupReply> findLocal(String medium, String address);
|
||||
|
||||
Optional<SingleLookupReply> findRemote(String medium, String address);
|
||||
|
||||
Optional<SingleLookupReply> find(SingleLookupRequest request)
|
||||
|
||||
Optional<SingleLookupReply> findRecursive(SingleLookupRequest request)
|
||||
|
||||
@@ -118,17 +118,44 @@ class RecursivePriorityLookupStrategy implements LookupStrategy, InitializingBea
|
||||
}).collect(Collectors.toList())
|
||||
}
|
||||
|
||||
@Override
|
||||
Optional<SingleLookupReply> find(String medium, String address, boolean recursive) {
|
||||
List<IThreePidProvider> getRemoteProviders() {
|
||||
return providers.stream().filter(new Predicate<IThreePidProvider>() {
|
||||
@Override
|
||||
boolean test(IThreePidProvider iThreePidProvider) {
|
||||
return iThreePidProvider.isEnabled() && !iThreePidProvider.isLocal()
|
||||
}
|
||||
}).collect(Collectors.toList())
|
||||
}
|
||||
|
||||
private static SingleLookupRequest build(String medium, String address) {
|
||||
SingleLookupRequest req = new SingleLookupRequest();
|
||||
req.setType(medium)
|
||||
req.setThreePid(address)
|
||||
req.setRequester("Internal")
|
||||
return find(req, recursive)
|
||||
return req;
|
||||
}
|
||||
|
||||
@Override
|
||||
Optional<SingleLookupReply> find(String medium, String address, boolean recursive) {
|
||||
return find(build(medium, address), recursive)
|
||||
}
|
||||
|
||||
@Override
|
||||
Optional<SingleLookupReply> findLocal(String medium, String address) {
|
||||
return find(build(medium, address), getLocalProviders())
|
||||
}
|
||||
|
||||
@Override
|
||||
Optional<SingleLookupReply> findRemote(String medium, String address) {
|
||||
return find(build(medium, address), getRemoteProviders())
|
||||
}
|
||||
|
||||
Optional<SingleLookupReply> find(SingleLookupRequest request, boolean forceRecursive) {
|
||||
for (IThreePidProvider provider : listUsableProviders(request, forceRecursive)) {
|
||||
return find(request, listUsableProviders(request, forceRecursive));
|
||||
}
|
||||
|
||||
Optional<SingleLookupReply> find(SingleLookupRequest request, List<IThreePidProvider> providers) {
|
||||
for (IThreePidProvider provider : providers) {
|
||||
Optional<SingleLookupReply> lookupDataOpt = provider.find(request)
|
||||
if (lookupDataOpt.isPresent()) {
|
||||
return lookupDataOpt
|
||||
|
||||
Reference in New Issue
Block a user