-
Notifications
You must be signed in to change notification settings - Fork 215
/
PlainCredentialsSupplier.java
58 lines (50 loc) · 1.84 KB
/
PlainCredentialsSupplier.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*
* Copyright (c) 2021 Contributors to the Eclipse Foundation
*
* See the NOTICE file(s) distributed with this work for additional
* information regarding copyright ownership.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.connectivity.service.messaging.amqp;
import java.util.Optional;
import org.eclipse.ditto.connectivity.model.Connection;
import org.eclipse.ditto.connectivity.model.UserPasswordCredentials;
import akka.http.javadsl.model.Uri;
/**
* Supplier of optional username-password credentials.
*/
@FunctionalInterface
public interface PlainCredentialsSupplier {
/**
* Get the username-password credentials of a connection.
*
* @param connection the connection.
* @param doubleDecodingEnabled whether double decoding of usernames and passwords is enabled.
* @return the optional credentials.
*/
Optional<UserPasswordCredentials> get(Connection connection, boolean doubleDecodingEnabled);
/**
* Remove userinfo from a connection URI.
*
* @param uri the URI.
* @return the URI without userinfo.
*/
default String getUriWithoutUserinfo(final String uri) {
return Uri.create(uri).userInfo("").toString();
}
/**
* Create a {@code PlainCredentialsSupplier} from the URI of the connection.
*
* @return the URI.
*/
static PlainCredentialsSupplier fromUri() {
return (connection, doubleDecodingEnabled) -> connection.getUsername(doubleDecodingEnabled).flatMap(username ->
connection.getPassword(doubleDecodingEnabled)
.map(password -> UserPasswordCredentials.newInstance(username, password)));
}
}