-
Notifications
You must be signed in to change notification settings - Fork 0
/
Gripmock.java
68 lines (56 loc) · 2.25 KB
/
Gripmock.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
59
60
61
62
63
64
65
66
67
68
package org.github.olex.gripmock4j;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.github.olex.gripmock4j.stub.Stub;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Gripmock {
private final ObjectMapper objectMapper = new ObjectMapper();
private final HttpClient httpClient;
private final String address;
public Gripmock(String address) {
this(address, HttpClient.newHttpClient());
}
public Gripmock(String host, int port) {
this("http://" + host + ":" + port, HttpClient.newHttpClient());
}
public Gripmock(String address, HttpClient httpClient) {
this.address = address;
this.httpClient = httpClient;
}
public void addStubMapping(Stub stubbing) {
try {
String body = objectMapper.writeValueAsString(stubbing);
var request = HttpRequest.newBuilder()
.POST(HttpRequest.BodyPublishers.ofString(body))
.uri(URI.create(address + "/add"))
.build();
doRequest(request, HttpResponse.BodyHandlers.ofString());
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
public void clear() {
var request = HttpRequest.newBuilder()
.GET()
.uri(URI.create(address + "/clear"))
.build();
doRequest(request, HttpResponse.BodyHandlers.ofString());
}
private <T> void doRequest(HttpRequest httpRequest, HttpResponse.BodyHandler<T> bodyHandler) {
try {
HttpResponse<T> response = httpClient.send(httpRequest, bodyHandler);
if (response.statusCode() / 100 != 2) {
throw new GripmockClientException("Request to gripmock server status code is not 2xx, but instead %d"
.formatted(response.statusCode())
);
}
response.body();
} catch (IOException | InterruptedException e) {
throw new GripmockClientException("Unexpected exception while doing http request to gripmock", e);
}
}
}