Event name now is the end part of the endpoint URL, removed Accept header to avoid Conductor issue and client identy (to construct authorization header) now is optional
This commit is contained in:
parent
6b7326636e
commit
86afd4c162
|
@ -16,13 +16,13 @@ public class HTTPEventSender implements EventSender {
|
|||
|
||||
protected static final Logger log = LoggerFactory.getLogger(HTTPEventSender.class);
|
||||
|
||||
private URL endpoint;
|
||||
private URL baseEnndpointURL;
|
||||
private String clientId;
|
||||
private String clientSecret;
|
||||
private URL tokenURL;
|
||||
|
||||
public HTTPEventSender(URL endpointURL, String clientId, String clientSecret, URL tokenURL) {
|
||||
this.endpoint = endpointURL;
|
||||
public HTTPEventSender(URL baseEnndpointURL, String clientId, String clientSecret, URL tokenURL) {
|
||||
this.baseEnndpointURL = baseEnndpointURL;
|
||||
this.clientId = clientId;
|
||||
this.clientSecret = clientSecret;
|
||||
this.tokenURL = tokenURL;
|
||||
|
@ -31,14 +31,14 @@ public class HTTPEventSender implements EventSender {
|
|||
@Override
|
||||
public void send(Event event) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Starting HTTP POST thread to: " + endpoint);
|
||||
log.debug("Starting HTTP POST thread to: " + baseEnndpointURL);
|
||||
}
|
||||
try {
|
||||
URL eventEndpoint = new URL(endpoint, event.getName());
|
||||
URL eventEndpoint = new URL(baseEnndpointURL, event.getName());
|
||||
new Thread(new HTTPost(eventEndpoint, event.toJSONString())).start();
|
||||
} catch (MalformedURLException e) {
|
||||
log.error("Cannot compute event endpoint URL. Event name: " + event.getName() + ", base endpoint: "
|
||||
+ endpoint, e);
|
||||
+ baseEnndpointURL, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -61,11 +61,18 @@ public class HTTPEventSender implements EventSender {
|
|||
if (log.isDebugEnabled()) {
|
||||
log.debug("Getting OIDC token for client: " + clientId);
|
||||
}
|
||||
JWTToken token = OpenIdConnectRESTHelper.queryClientToken(clientId, clientSecret, tokenURL);
|
||||
JWTToken token = null;
|
||||
if (clientId != null && clientSecret != null && tokenURL != null) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Getting OIDC token for clientId '" + clientId + "' from: " + tokenURL);
|
||||
}
|
||||
token = OpenIdConnectRESTHelper.queryClientToken(clientId, clientSecret, tokenURL);
|
||||
}
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Performing HTTP POST to: " + endpoint);
|
||||
}
|
||||
HttpURLConnection connection = (HttpURLConnection) endpoint.openConnection();
|
||||
connection.setRequestMethod("POST");
|
||||
connection.setConnectTimeout(CONNECTION_TIMEOUT);
|
||||
if (log.isTraceEnabled()) {
|
||||
log.trace("HTTP connection timeout set to: " + connection.getConnectTimeout());
|
||||
|
@ -74,17 +81,26 @@ public class HTTPEventSender implements EventSender {
|
|||
if (log.isTraceEnabled()) {
|
||||
log.trace("HTTP connection Read timeout set to: " + connection.getReadTimeout());
|
||||
}
|
||||
connection.setDoOutput(true);
|
||||
connection.setDoInput(true);
|
||||
connection.setRequestProperty("Content-Type", "application/json");
|
||||
connection.setRequestProperty("Accept", "application/json");
|
||||
connection.setRequestProperty("Method", "POST");
|
||||
connection.setRequestProperty("Authorization", token.getAsBearer());
|
||||
// Commented out as per the Conductor issue: https://github.com/Netflix/conductor/issues/376
|
||||
// connection.setRequestProperty("Accept", "application/json");
|
||||
connection.setDoOutput(true);
|
||||
if (token != null) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Setting authorization header as: " + token.getAsBearer());
|
||||
}
|
||||
connection.setRequestProperty("Authorization", token.getAsBearer());
|
||||
} else {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Sending request without authorization header");
|
||||
}
|
||||
}
|
||||
OutputStream os = connection.getOutputStream();
|
||||
if (log.isTraceEnabled()) {
|
||||
log.trace("Sending event JSON: " + jsonString);
|
||||
}
|
||||
os.write(jsonString.getBytes("UTF-8"));
|
||||
os.flush();
|
||||
os.close();
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
@ -109,6 +125,7 @@ public class HTTPEventSender implements EventSender {
|
|||
sb.append(line + "\n");
|
||||
}
|
||||
br.close();
|
||||
isr.close();
|
||||
if (ok) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("[" + httpResultCode + "] Event publish OK. Results: " + sb.toString());
|
||||
|
|
Loading…
Reference in New Issue