1 package org.onap.integration.test.mocks.sniroemulator.extension;
3 import com.github.tomakehurst.wiremock.common.Notifier;
4 import com.github.tomakehurst.wiremock.core.Admin;
5 import com.github.tomakehurst.wiremock.extension.Parameters;
6 import com.github.tomakehurst.wiremock.extension.PostServeAction;
7 import com.github.tomakehurst.wiremock.http.HttpClientFactory;
8 import com.github.tomakehurst.wiremock.http.HttpHeader;
9 import com.github.tomakehurst.wiremock.stubbing.ServeEvent;
10 import org.apache.http.HttpResponse;
11 import org.apache.http.client.HttpClient;
12 import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
13 import org.apache.http.client.methods.HttpUriRequest;
14 import org.apache.http.entity.ByteArrayEntity;
15 import org.apache.http.util.EntityUtils;
17 import java.io.IOException;
18 import java.util.concurrent.Executors;
19 import java.util.concurrent.ScheduledExecutorService;
21 import static com.github.tomakehurst.wiremock.common.Exceptions.throwUnchecked;
22 import static com.github.tomakehurst.wiremock.common.LocalNotifier.notifier;
23 import static com.github.tomakehurst.wiremock.http.HttpClientFactory.getHttpRequestFor;
24 import static java.util.concurrent.TimeUnit.SECONDS;
26 public class Webhooks extends PostServeAction {
28 private final ScheduledExecutorService scheduler;
29 private final HttpClient httpClient;
32 scheduler = Executors.newScheduledThreadPool(10);
33 httpClient = HttpClientFactory.createClient();
37 public String getName() {
42 public void doAction(ServeEvent serveEvent, Admin admin, Parameters parameters) {
43 final WebhookDefinition definition = parameters.as(WebhookDefinition.class);
44 final Notifier notifier = notifier();
50 HttpUriRequest request = buildRequest(definition);
53 HttpResponse response = httpClient.execute(request);
55 String.format("Webhook %s request to %s returned status %s\n\n%s",
56 definition.getMethod(),
58 response.getStatusLine(),
59 EntityUtils.toString(response.getEntity())
62 System.out.println(String.format("Webhook %s request to %s returned status %s\n\n%s",
63 definition.getMethod(),
65 response.getStatusLine(),
66 EntityUtils.toString(response.getEntity())
69 } catch (IOException e) {
79 private static HttpUriRequest buildRequest(WebhookDefinition definition) {
80 HttpUriRequest request = getHttpRequestFor(
81 definition.getMethod(),
82 definition.getUrl().toString()
85 for (HttpHeader header: definition.getHeaders().all()) {
86 request.addHeader(header.key(), header.firstValue());
89 if (definition.getMethod().hasEntity()) {
90 HttpEntityEnclosingRequestBase entityRequest = (HttpEntityEnclosingRequestBase) request;
91 entityRequest.setEntity(new ByteArrayEntity(definition.getBinaryBody()));
97 public static WebhookDefinition webhook() {
98 return new WebhookDefinition();