Skip to content

Commit b335b7a

Browse files
committed
add some shortcuts for using ContentType with accepts and contentType methods
1 parent 7375923 commit b335b7a

File tree

5 files changed

+45
-1
lines changed

5 files changed

+45
-1
lines changed

unirest-bdd-tests/src/test/java/BehaviorTests/HeaderTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,17 @@ public void onRequest(HttpRequest<?> request, Config config) {
430430
assertContains(headers, "beatles", "ringo");
431431
}
432432

433+
@Test
434+
void passInMediaTypeAsAcceptsAndContentType() {
435+
Unirest.post(MockServer.POST)
436+
.accept(ContentType.IMAGE_JPEG)
437+
.contentType(ContentType.APPLICATION_JSON)
438+
.asObject(RequestCapture.class)
439+
.getBody()
440+
.assertAccepts(ContentType.IMAGE_JPEG)
441+
.assertContentType(ContentType.APPLICATION_JSON);
442+
}
443+
433444
private void assertContains(Collection<Header> headers, String key, String value) {
434445
assertTrue(headers.stream().anyMatch(h -> key.equalsIgnoreCase(key) && value.equalsIgnoreCase(value)),
435446
"Missing header " + key + " with value " + value);

unirest-bdd-tests/src/test/java/BehaviorTests/RequestCapture.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,10 @@ public void setStatus(int i) {
276276
this.status = i;
277277
}
278278

279+
public RequestCapture assertContentType(ContentType content) {
280+
return assertContentType(content.getMimeType());
281+
}
282+
279283
public RequestCapture assertContentType(String content) {
280284
return assertHeader("Content-Type", content);
281285
}
@@ -329,6 +333,10 @@ public RequestCapture assertBodyPart(String name, Consumer<MultiPart> validator)
329333
return this;
330334
}
331335

336+
public RequestCapture assertAccepts(ContentType type) {
337+
return assertHeader("Accept", type.toString());
338+
}
339+
332340
public static class MultiPart {
333341
public ListMultimap<String, String> headers = LinkedListMultimap.create();
334342
public String content;

unirest/src/main/java/kong/unirest/core/ContentType.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,8 @@ public ContentType withCharset(Charset charset) {
111111
public boolean isBinary() {
112112
return isBinary;
113113
}
114+
115+
public Charset getCharset() {
116+
return encoding;
117+
}
114118
}

unirest/src/main/java/kong/unirest/core/HttpRequest.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.time.Instant;
3232
import java.util.Collection;
3333
import java.util.Map;
34+
import java.util.Objects;
3435
import java.util.Optional;
3536
import java.util.concurrent.CompletableFuture;
3637
import java.util.function.Consumer;
@@ -75,7 +76,17 @@ public interface HttpRequest<R extends HttpRequest> {
7576
R basicAuth(String username, String password);
7677

7778
/**
78-
* The Accept header to send (e.g. application/json
79+
* The Accept header to send (e.g. application/json)
80+
* @param value a valid mime type for the Accept header
81+
* @return this request builder
82+
*/
83+
default R accept(ContentType value){
84+
Objects.requireNonNull(value);
85+
return accept(value.toString());
86+
}
87+
88+
/**
89+
* The Accept header to send (e.g. application/json)
7990
* @param value a valid mime type for the Accept header
8091
* @return this request builder
8192
*/

unirest/src/main/java/kong/unirest/core/HttpRequestWithBody.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.nio.charset.Charset;
3333
import java.util.Collection;
3434
import java.util.Map;
35+
import java.util.Objects;
3536

3637
/**
3738
* A request Builder for POST and PUT operations with a body.
@@ -183,6 +184,15 @@ default HttpRequestWithBody noCharset() {
183184
*/
184185
Charset getCharset();
185186

187+
/**
188+
* @param type The content mime type
189+
* @return this request builder
190+
*/
191+
default HttpRequestWithBody contentType(ContentType type){
192+
Objects.requireNonNull(type);
193+
return contentType(type.toString()).charset(type.getCharset());
194+
}
195+
186196
/**
187197
* @param type The content mime type
188198
* @return this request builder

0 commit comments

Comments
 (0)