From 1fca084fc910972ad57d6970b2122846b41580c7 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Thu, 28 Sep 2023 23:34:02 -0700 Subject: [PATCH] Added printing of status code by response classes. Close #8 --- README.md | 11 ++++++++++ .../net/thauvin/erik/httpstatus/Reasons.java | 15 ++++++++++--- .../erik/httpstatus/ReasonsMainTest.java | 22 ++++++++++++------- 3 files changed, 37 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 28f6eaa..883723b 100644 --- a/README.md +++ b/README.md @@ -302,3 +302,14 @@ $ java -jar httpstatus-1.1.0.jar 226: IM Used ... ``` +You can also print status codes by [response classes](https://www.rfc-editor.org/rfc/rfc9110.html#name-status-codes): + +```sh +$ java -jar httpstatus-1.1.0.jar 2xx +200: OK +201: Created +202: Accepted +203: Non-Authoritative Information +204: No Content +... +``` \ No newline at end of file diff --git a/src/main/java/net/thauvin/erik/httpstatus/Reasons.java b/src/main/java/net/thauvin/erik/httpstatus/Reasons.java index 66491df..e863ac5 100644 --- a/src/main/java/net/thauvin/erik/httpstatus/Reasons.java +++ b/src/main/java/net/thauvin/erik/httpstatus/Reasons.java @@ -100,9 +100,18 @@ public final class Reasons { public static void main(final String... args) { if (args.length >= 1) { for (final String key : args) { - final String value = REASON_PHRASES.get(key); - if (value != null) { - System.out.println(key + ": " + value); + if (key.endsWith("xx")) { + var cat = key.charAt(0); + REASON_PHRASES.forEach((k, v) -> { + if (k.charAt(0) == cat) { + System.out.println(k + ": " + v); + } + }); + } else { + final String value = REASON_PHRASES.get(key); + if (value != null) { + System.out.println(key + ": " + value); + } } } } else { diff --git a/src/test/java/net/thauvin/erik/httpstatus/ReasonsMainTest.java b/src/test/java/net/thauvin/erik/httpstatus/ReasonsMainTest.java index fac29f9..859b65f 100644 --- a/src/test/java/net/thauvin/erik/httpstatus/ReasonsMainTest.java +++ b/src/test/java/net/thauvin/erik/httpstatus/ReasonsMainTest.java @@ -71,28 +71,34 @@ class ReasonsMainTest { @Test void testMain() { Reasons.main("401"); - assertThat(outContent.toString().contains(Reasons.getReasonPhrase("401"))).as("401").isTrue(); - assertThat(outContent.toString().contains("500")).as("401 no 500").isFalse(); + assertThat(outContent.toString()).contains(Reasons.getReasonPhrase("401")).as("401"); + assertThat(outContent.toString()).doesNotContain("500").as("401 no 500"); } @Test void testMainAll() { Reasons.main(); - assertThat(outContent.toString().contains(Reasons.getReasonPhrase(301))).as("301").isTrue(); - assertThat(outContent.toString().contains(Reasons.getReasonPhrase(404))).as("404").isTrue(); + assertThat(outContent.toString()).contains(Reasons.getReasonPhrase(301)).as("301"); + assertThat(outContent.toString()).contains(Reasons.getReasonPhrase(404)).as("404"); } @Test void testMainArgs() { Reasons.main("500", "302"); - assertThat(outContent.toString().contains(Reasons.getReasonPhrase("500"))).as("500 (302)").isTrue(); - assertThat(outContent.toString().contains(Reasons.getReasonPhrase("302"))).as("(500) 302").isTrue(); - assertThat(outContent.toString().contains("404")).as("500/302 not 404").isFalse(); + assertThat(outContent.toString()).contains(Reasons.getReasonPhrase("500")).as("500 (302)"); + assertThat(outContent.toString()).contains(Reasons.getReasonPhrase("302")).as("(500) 302"); + assertThat(outContent.toString()).doesNotContain("404").as("500/302 not 404"); + } + + @Test + void testMainArgsClass() { + Reasons.main("2xx"); + assertThat(outContent.toString()).contains(Reasons.getReasonPhrase("200")).as("2xx"); } @Test void testMainInvalid() { Reasons.main("aaa"); - assertThat(outContent.toString().isEmpty()).as("invalid argument: aaa").isTrue(); + assertThat(outContent.toString()).as("invalid argument: aaa").isEmpty(); } }