From 9c80d2b75f0b3c16a546e21d66f9b338d45895d6 Mon Sep 17 00:00:00 2001 From: funeraL Date: Sat, 18 Nov 2023 17:49:32 +0300 Subject: [PATCH 01/15] wip --- README.md | 6 +++ .../qa/allure/notifications/Application.java | 1 - .../notifications/clients/ClientFactory.java | 6 ++- .../clients/rocket/RocketClient.java | 49 +++++++++++++++++++ .../allure/notifications/config/Config.java | 3 ++ .../notifications/config/rocket/Rocket.java | 17 +++++++ .../template/RocketTemplate.java | 17 +++++++ src/main/resources/templates/rocket.ftl | 12 +++++ 8 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java create mode 100644 src/main/java/guru/qa/allure/notifications/config/rocket/Rocket.java create mode 100644 src/main/java/guru/qa/allure/notifications/template/RocketTemplate.java create mode 100644 src/main/resources/templates/rocket.ftl diff --git a/README.md b/README.md index f83eea43..4225fa87 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,12 @@ Languages: 🇬🇧 🇫🇷 🇷🇺 🇺🇦 🇧🇾 🇨🇳 "token": "", "chat": "" }, + "rocket" : { + "url": "", + "auth_token": "", + "user_id": "", + "channel": "" + }, "skype": { "appId": "", "appSecret": "", diff --git a/src/main/java/guru/qa/allure/notifications/Application.java b/src/main/java/guru/qa/allure/notifications/Application.java index c8093cbe..24d024e9 100644 --- a/src/main/java/guru/qa/allure/notifications/Application.java +++ b/src/main/java/guru/qa/allure/notifications/Application.java @@ -3,7 +3,6 @@ import guru.qa.allure.notifications.clients.Notification; import guru.qa.allure.notifications.config.ApplicationConfig; import guru.qa.allure.notifications.config.Config; -import guru.qa.allure.notifications.exceptions.MessagingException; import guru.qa.allure.notifications.util.LogInterceptor; import guru.qa.allure.notifications.util.ProxyManager; import kong.unirest.Unirest; diff --git a/src/main/java/guru/qa/allure/notifications/clients/ClientFactory.java b/src/main/java/guru/qa/allure/notifications/clients/ClientFactory.java index cc054287..c330dc7d 100644 --- a/src/main/java/guru/qa/allure/notifications/clients/ClientFactory.java +++ b/src/main/java/guru/qa/allure/notifications/clients/ClientFactory.java @@ -1,5 +1,6 @@ package guru.qa.allure.notifications.clients; +import guru.qa.allure.notifications.clients.rocket.RocketClient; import java.util.ArrayList; import java.util.List; @@ -18,7 +19,7 @@ public class ClientFactory { public static List from(Config config) { MessageData messageData = new MessageData(config.getBase()); - List notifiers = new ArrayList<>(); + List notifiers = new ArrayList<>(); if (config.getTelegram() != null) { notifiers.add(new TelegramClient(messageData, config.getTelegram())); } @@ -40,6 +41,9 @@ public static List from(Config config) { if (config.getLoop() != null) { notifiers.add(new LoopClient(messageData, config.getLoop())); } + if (config.getRocket() != null) { + notifiers.add(new RocketClient(messageData, config.getRocket())); + } return notifiers; } } diff --git a/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java b/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java new file mode 100644 index 00000000..1b6b180d --- /dev/null +++ b/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java @@ -0,0 +1,49 @@ +package guru.qa.allure.notifications.clients.rocket; + +import guru.qa.allure.notifications.clients.Notifier; +import guru.qa.allure.notifications.config.rocket.Rocket; +import guru.qa.allure.notifications.exceptions.MessagingException; +import guru.qa.allure.notifications.json.JSON; +import guru.qa.allure.notifications.template.RocketTemplate; +import guru.qa.allure.notifications.template.data.MessageData; +import java.io.ByteArrayInputStream; +import kong.unirest.ContentType; +import kong.unirest.Unirest; + +public class RocketClient implements Notifier { + + private final JSON json = new JSON(); + private final Rocket rocket; + private final RocketTemplate template; + + public RocketClient(MessageData messageData, Rocket rocket) { + this.rocket = rocket; + this.template = new RocketTemplate(messageData); + } + + @Override + public void sendText() throws MessagingException { + String body = String.format("{\"channel\": \"%s\", \"text\": \"%s\" }", + rocket.getChannel(), template.create().replace("\r\n", "\\\n")); + String url = String.format("%s/api/v1/chat.postMessage", rocket.getUrl()); + Unirest.post(url) + .header("X-Auth-Token", rocket.getToken()) + .header("X-User-Id", rocket.getUserId()) + .header("Content-Type", "application/json") + .body(json.prettyPrint(body)) + .asString() + .getBody(); + } + + @Override + public void sendPhoto(byte[] chartImage) throws MessagingException { + sendText(); + String url = String.format("%s/api/v1/rooms.upload/%s", rocket.getUrl(), rocket.getChannel()); + Unirest.post(url) + .header("X-Auth-Token", rocket.getToken()) + .header("X-User-Id", rocket.getUserId()) + .field("file", new ByteArrayInputStream(chartImage), ContentType.IMAGE_PNG, "chart.png") + .asString() + .getBody(); + } +} diff --git a/src/main/java/guru/qa/allure/notifications/config/Config.java b/src/main/java/guru/qa/allure/notifications/config/Config.java index 065cf4d9..1748b609 100644 --- a/src/main/java/guru/qa/allure/notifications/config/Config.java +++ b/src/main/java/guru/qa/allure/notifications/config/Config.java @@ -7,6 +7,7 @@ import guru.qa.allure.notifications.config.mail.Mail; import guru.qa.allure.notifications.config.mattermost.Mattermost; import guru.qa.allure.notifications.config.proxy.Proxy; +import guru.qa.allure.notifications.config.rocket.Rocket; import guru.qa.allure.notifications.config.skype.Skype; import guru.qa.allure.notifications.config.slack.Slack; import guru.qa.allure.notifications.config.telegram.Telegram; @@ -35,6 +36,8 @@ public class Config { private Discord discord; @SerializedName("loop") private Loop loop; + @SerializedName("rocket") + private Rocket rocket; @SerializedName("proxy") private Proxy proxy; } diff --git a/src/main/java/guru/qa/allure/notifications/config/rocket/Rocket.java b/src/main/java/guru/qa/allure/notifications/config/rocket/Rocket.java new file mode 100644 index 00000000..6fdcd007 --- /dev/null +++ b/src/main/java/guru/qa/allure/notifications/config/rocket/Rocket.java @@ -0,0 +1,17 @@ +package guru.qa.allure.notifications.config.rocket; + +import com.google.gson.annotations.SerializedName; +import lombok.Getter; + +@Getter +public class Rocket { + + @SerializedName("url") + private String url; + @SerializedName("auth_token") + private String token; + @SerializedName("user_id") + private String userId; + @SerializedName("channel") + private String channel; +} diff --git a/src/main/java/guru/qa/allure/notifications/template/RocketTemplate.java b/src/main/java/guru/qa/allure/notifications/template/RocketTemplate.java new file mode 100644 index 00000000..f07f79e8 --- /dev/null +++ b/src/main/java/guru/qa/allure/notifications/template/RocketTemplate.java @@ -0,0 +1,17 @@ +package guru.qa.allure.notifications.template; + +import guru.qa.allure.notifications.exceptions.MessageBuildException; +import guru.qa.allure.notifications.template.data.MessageData; + +public class RocketTemplate { + + private final MessageData messageData; + + public RocketTemplate(MessageData messageData) { + this.messageData = messageData; + } + + public String create() throws MessageBuildException { + return new MessageTemplate(messageData).of("rocket.ftl"); + } +} diff --git a/src/main/resources/templates/rocket.ftl b/src/main/resources/templates/rocket.ftl new file mode 100644 index 00000000..046c56ec --- /dev/null +++ b/src/main/resources/templates/rocket.ftl @@ -0,0 +1,12 @@ +<#compress> + **${results}:** + **-${environment}:** ${env} + **-${comment}:** ${comm} + **-${totalScenarios}:** ${total} + <#if passed != 0 > **-${totalPassed}:** ${passed} + <#if failed != 0 > **-${totalFailed}:** ${failed} + <#if broken != 0 > **-${totalBroken}:** ${broken} + <#if unknown != 0 > **-${totalUnknown}:** ${unknown} + <#if skipped != 0 > **-${totalSkipped}:** ${skipped} + <#if reportLink??>**${reportAvailableAtLink}:** ${reportLink} + \ No newline at end of file From 464a414706ec96666a9e36cd7368c089a2ded0d4 Mon Sep 17 00:00:00 2001 From: funeraL Date: Sat, 18 Nov 2023 18:56:05 +0300 Subject: [PATCH 02/15] wip --- README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4225fa87..fab997ed 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Allure notifications -**Allure notifications** - это библиотека, позволяющая выполнять автоматическое оповещение о результатах прохождения автотестов, которое направляется в нужный вам мессенджер (Telegram, Slack, Skype, Email, Mattermost, Discord, Loop). +**Allure notifications** - это библиотека, позволяющая выполнять автоматическое оповещение о результатах прохождения автотестов, которое направляется в нужный вам мессенджер (Telegram, Slack, Skype, Email, Mattermost, Discord, Loop, Rocket Chat). Languages: 🇬🇧 🇫🇷 🇷🇺 🇺🇦 🇧🇾 🇨🇳 @@ -252,4 +252,19 @@ java "-DconfigFile=notifications/config.json" -jar ../allure-notifications-4.2.1
  • Click "Save".
  • Copy URL of webhook.
  • + ++
    + RocketChat config + To enable RocketChat notifications it's required to provide 4 configuration parameters: + url, auth_token,user_id,channel +
      +
    • +
        +
      1. First of all you need to generate auth_token from user setting
      2. +
      3. After generation you can get auth_token and user_id
      4. +
      5. You can get the channel parameter using previously generated tokens and following the documentation
      6. ++ Channels info docs +
      +
    • +
    \ No newline at end of file From 65cdddfb1982616bc6c0d9b7d6631ccd06a8bba8 Mon Sep 17 00:00:00 2001 From: Efim Ilin <36734883+exmike@users.noreply.github.com> Date: Mon, 20 Nov 2023 10:10:43 +0300 Subject: [PATCH 03/15] Update src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java Co-authored-by: Valery Yatsynovich --- .../qa/allure/notifications/clients/rocket/RocketClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java b/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java index 1b6b180d..47f6bac7 100644 --- a/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java +++ b/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java @@ -10,7 +10,7 @@ import kong.unirest.ContentType; import kong.unirest.Unirest; -public class RocketClient implements Notifier { +public class RocketChatClient implements Notifier { private final JSON json = new JSON(); private final Rocket rocket; From 129472811bc63a25fc76260610aa563c5daca5cc Mon Sep 17 00:00:00 2001 From: Efim Ilin <36734883+exmike@users.noreply.github.com> Date: Mon, 20 Nov 2023 10:12:08 +0300 Subject: [PATCH 04/15] Update README.md Co-authored-by: Valery Yatsynovich --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fab997ed..cbbe15cb 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Allure notifications -**Allure notifications** - это библиотека, позволяющая выполнять автоматическое оповещение о результатах прохождения автотестов, которое направляется в нужный вам мессенджер (Telegram, Slack, Skype, Email, Mattermost, Discord, Loop, Rocket Chat). +**Allure notifications** - это библиотека, позволяющая выполнять автоматическое оповещение о результатах прохождения автотестов, которое направляется в нужный вам мессенджер (Telegram, Slack, Skype, Email, Mattermost, Discord, Loop, Rocket.Chat). Languages: 🇬🇧 🇫🇷 🇷🇺 🇺🇦 🇧🇾 🇨🇳 From c3873abdea7fae5dafb21ecf4ab4427ed2a3cfb6 Mon Sep 17 00:00:00 2001 From: Efim Ilin <36734883+exmike@users.noreply.github.com> Date: Mon, 20 Nov 2023 10:12:21 +0300 Subject: [PATCH 05/15] Update README.md Co-authored-by: Valery Yatsynovich --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cbbe15cb..dabd848e 100644 --- a/README.md +++ b/README.md @@ -254,7 +254,7 @@ java "-DconfigFile=notifications/config.json" -jar ../allure-notifications-4.2.1 +
    - RocketChat config + Rocket.Chat config To enable RocketChat notifications it's required to provide 4 configuration parameters: url, auth_token,user_id,channel
      From 67aaf0d4db76b80376dc13cf67a2c3e016936a6a Mon Sep 17 00:00:00 2001 From: Efim Ilin <36734883+exmike@users.noreply.github.com> Date: Mon, 20 Nov 2023 10:12:26 +0300 Subject: [PATCH 06/15] Update README.md Co-authored-by: Valery Yatsynovich --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dabd848e..e1b96523 100644 --- a/README.md +++ b/README.md @@ -255,7 +255,7 @@ java "-DconfigFile=notifications/config.json" -jar ../allure-notifications-4.2.1
    +
    Rocket.Chat config - To enable RocketChat notifications it's required to provide 4 configuration parameters: + To enable Rocket.Chat notifications it's required to provide 4 configuration parameters: url, auth_token,user_id,channel
    • From c62bc92b27937e22fe107c10075dce7f9c5468e6 Mon Sep 17 00:00:00 2001 From: Efim Ilin <36734883+exmike@users.noreply.github.com> Date: Mon, 20 Nov 2023 10:12:35 +0300 Subject: [PATCH 07/15] Update README.md Co-authored-by: Valery Yatsynovich --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e1b96523..bfff5f1d 100644 --- a/README.md +++ b/README.md @@ -262,8 +262,8 @@ java "-DconfigFile=notifications/config.json" -jar ../allure-notifications-4.2.1
      1. First of all you need to generate auth_token from user setting
      2. After generation you can get auth_token and user_id
      3. -
      4. You can get the channel parameter using previously generated tokens and following the documentation
      5. -+ Channels info docs +
      6. You can get the channel parameter using previously generated tokens and following the documentation ++ (Channels info docs).
    From 99c71294df29fb6d0e7e1e0a161f4b7a9876db28 Mon Sep 17 00:00:00 2001 From: Efim Ilin <36734883+exmike@users.noreply.github.com> Date: Mon, 20 Nov 2023 10:13:03 +0300 Subject: [PATCH 08/15] Update README.md Co-authored-by: Valery Yatsynovich --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bfff5f1d..4a06a2b2 100644 --- a/README.md +++ b/README.md @@ -261,7 +261,7 @@ java "-DconfigFile=notifications/config.json" -jar ../allure-notifications-4.2.1
    1. First of all you need to generate auth_token from user setting
    2. -
    3. After generation you can get auth_token and user_id
    4. +
    5. After generation you can get auth_token and user_id.
    6. You can get the channel parameter using previously generated tokens and following the documentation + (Channels info docs).
    From cb50c12bfe09bdfeb9a44051fa17d5cf80a96cdc Mon Sep 17 00:00:00 2001 From: Efim Ilin <36734883+exmike@users.noreply.github.com> Date: Mon, 20 Nov 2023 10:13:40 +0300 Subject: [PATCH 09/15] Update src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java Co-authored-by: Valery Yatsynovich --- .../qa/allure/notifications/clients/rocket/RocketClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java b/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java index 47f6bac7..963a1ec6 100644 --- a/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java +++ b/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java @@ -29,7 +29,7 @@ public void sendText() throws MessagingException { Unirest.post(url) .header("X-Auth-Token", rocket.getToken()) .header("X-User-Id", rocket.getUserId()) - .header("Content-Type", "application/json") + .header("Content-Type", ContentType.APPLICATION_JSON.getMimeType()) .body(json.prettyPrint(body)) .asString() .getBody(); From 3de636d12e0ce9061efda1bf38cb1be62a952d93 Mon Sep 17 00:00:00 2001 From: Efim Ilin <36734883+exmike@users.noreply.github.com> Date: Mon, 20 Nov 2023 10:52:02 +0300 Subject: [PATCH 10/15] Apply suggestions from code review Co-authored-by: Valery Yatsynovich --- README.md | 4 ++-- .../qa/allure/notifications/clients/rocket/RocketClient.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4a06a2b2..ae08737a 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ Languages: 🇬🇧 🇫🇷 🇷🇺 🇺🇦 🇧🇾 🇨🇳 "token": "", "chat": "" }, - "rocket" : { + "rocketChat" : { "url": "", "auth_token": "", "user_id": "", @@ -260,7 +260,7 @@ java "-DconfigFile=notifications/config.json" -jar ../allure-notifications-4.2.1
      1. -
      2. First of all you need to generate auth_token from user setting
      3. +
      4. First of all you need to generate auth_token from user setting.
      5. After generation you can get auth_token and user_id.
      6. You can get the channel parameter using previously generated tokens and following the documentation + (Channels info docs).
      7. diff --git a/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java b/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java index 963a1ec6..8af33df1 100644 --- a/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java +++ b/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java @@ -25,7 +25,7 @@ public RocketClient(MessageData messageData, Rocket rocket) { public void sendText() throws MessagingException { String body = String.format("{\"channel\": \"%s\", \"text\": \"%s\" }", rocket.getChannel(), template.create().replace("\r\n", "\\\n")); - String url = String.format("%s/api/v1/chat.postMessage", rocket.getUrl()); + String url = rocket.getUrl() + "/api/v1/chat.postMessage"; Unirest.post(url) .header("X-Auth-Token", rocket.getToken()) .header("X-User-Id", rocket.getUserId()) From 8df98df16422448382f5be94f85209c8521b8ad2 Mon Sep 17 00:00:00 2001 From: funeraL Date: Mon, 20 Nov 2023 11:18:11 +0300 Subject: [PATCH 11/15] fixes after review --- .../qa/allure/notifications/Application.java | 1 + .../notifications/clients/ClientFactory.java | 6 +++--- .../{RocketClient.java => RocketChatClient.java} | 16 +++++++++------- .../qa/allure/notifications/config/Config.java | 2 +- 4 files changed, 14 insertions(+), 11 deletions(-) rename src/main/java/guru/qa/allure/notifications/clients/rocket/{RocketClient.java => RocketChatClient.java} (78%) diff --git a/src/main/java/guru/qa/allure/notifications/Application.java b/src/main/java/guru/qa/allure/notifications/Application.java index 24d024e9..c8093cbe 100644 --- a/src/main/java/guru/qa/allure/notifications/Application.java +++ b/src/main/java/guru/qa/allure/notifications/Application.java @@ -3,6 +3,7 @@ import guru.qa.allure.notifications.clients.Notification; import guru.qa.allure.notifications.config.ApplicationConfig; import guru.qa.allure.notifications.config.Config; +import guru.qa.allure.notifications.exceptions.MessagingException; import guru.qa.allure.notifications.util.LogInterceptor; import guru.qa.allure.notifications.util.ProxyManager; import kong.unirest.Unirest; diff --git a/src/main/java/guru/qa/allure/notifications/clients/ClientFactory.java b/src/main/java/guru/qa/allure/notifications/clients/ClientFactory.java index c330dc7d..629170fb 100644 --- a/src/main/java/guru/qa/allure/notifications/clients/ClientFactory.java +++ b/src/main/java/guru/qa/allure/notifications/clients/ClientFactory.java @@ -1,6 +1,6 @@ package guru.qa.allure.notifications.clients; -import guru.qa.allure.notifications.clients.rocket.RocketClient; +import guru.qa.allure.notifications.clients.rocket.RocketChatClient; import java.util.ArrayList; import java.util.List; @@ -19,7 +19,7 @@ public class ClientFactory { public static List from(Config config) { MessageData messageData = new MessageData(config.getBase()); - List notifiers = new ArrayList<>(); + List notifiers = new ArrayList<>(); if (config.getTelegram() != null) { notifiers.add(new TelegramClient(messageData, config.getTelegram())); } @@ -42,7 +42,7 @@ public static List from(Config config) { notifiers.add(new LoopClient(messageData, config.getLoop())); } if (config.getRocket() != null) { - notifiers.add(new RocketClient(messageData, config.getRocket())); + notifiers.add(new RocketChatClient(messageData, config.getRocket())); } return notifiers; } diff --git a/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java b/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketChatClient.java similarity index 78% rename from src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java rename to src/main/java/guru/qa/allure/notifications/clients/rocket/RocketChatClient.java index 8af33df1..747b653e 100644 --- a/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketClient.java +++ b/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketChatClient.java @@ -4,33 +4,35 @@ import guru.qa.allure.notifications.config.rocket.Rocket; import guru.qa.allure.notifications.exceptions.MessagingException; import guru.qa.allure.notifications.json.JSON; +import guru.qa.allure.notifications.template.MarkdownTemplate; import guru.qa.allure.notifications.template.RocketTemplate; import guru.qa.allure.notifications.template.data.MessageData; import java.io.ByteArrayInputStream; +import java.util.HashMap; +import java.util.Map; import kong.unirest.ContentType; import kong.unirest.Unirest; public class RocketChatClient implements Notifier { - private final JSON json = new JSON(); + private final Map body = new HashMap<>(); private final Rocket rocket; private final RocketTemplate template; - public RocketClient(MessageData messageData, Rocket rocket) { + public RocketChatClient(MessageData messageData, Rocket rocket) { this.rocket = rocket; this.template = new RocketTemplate(messageData); } @Override public void sendText() throws MessagingException { - String body = String.format("{\"channel\": \"%s\", \"text\": \"%s\" }", - rocket.getChannel(), template.create().replace("\r\n", "\\\n")); - String url = rocket.getUrl() + "/api/v1/chat.postMessage"; - Unirest.post(url) + body.put("channel", rocket.getChannel()); + body.put("text", template.create()); + Unirest.post(rocket.getUrl() + "/api/v1/chat.postMessage") .header("X-Auth-Token", rocket.getToken()) .header("X-User-Id", rocket.getUserId()) .header("Content-Type", ContentType.APPLICATION_JSON.getMimeType()) - .body(json.prettyPrint(body)) + .body(body) .asString() .getBody(); } diff --git a/src/main/java/guru/qa/allure/notifications/config/Config.java b/src/main/java/guru/qa/allure/notifications/config/Config.java index 1748b609..81e3c6df 100644 --- a/src/main/java/guru/qa/allure/notifications/config/Config.java +++ b/src/main/java/guru/qa/allure/notifications/config/Config.java @@ -36,7 +36,7 @@ public class Config { private Discord discord; @SerializedName("loop") private Loop loop; - @SerializedName("rocket") + @SerializedName("rocketChat") private Rocket rocket; @SerializedName("proxy") private Proxy proxy; From 27f5f2fd6d09102127c2d97578dac33754610d81 Mon Sep 17 00:00:00 2001 From: funeraL Date: Mon, 20 Nov 2023 11:23:48 +0300 Subject: [PATCH 12/15] rename --- .../notifications/clients/ClientFactory.java | 4 ++-- .../clients/rocket/RocketChatClient.java | 24 +++++++++---------- .../allure/notifications/config/Config.java | 4 ++-- .../rocket/{Rocket.java => RocketChat.java} | 2 +- 4 files changed, 16 insertions(+), 18 deletions(-) rename src/main/java/guru/qa/allure/notifications/config/rocket/{Rocket.java => RocketChat.java} (93%) diff --git a/src/main/java/guru/qa/allure/notifications/clients/ClientFactory.java b/src/main/java/guru/qa/allure/notifications/clients/ClientFactory.java index 629170fb..4314050d 100644 --- a/src/main/java/guru/qa/allure/notifications/clients/ClientFactory.java +++ b/src/main/java/guru/qa/allure/notifications/clients/ClientFactory.java @@ -41,8 +41,8 @@ public static List from(Config config) { if (config.getLoop() != null) { notifiers.add(new LoopClient(messageData, config.getLoop())); } - if (config.getRocket() != null) { - notifiers.add(new RocketChatClient(messageData, config.getRocket())); + if (config.getRocketChat() != null) { + notifiers.add(new RocketChatClient(messageData, config.getRocketChat())); } return notifiers; } diff --git a/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketChatClient.java b/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketChatClient.java index 747b653e..7a1a3085 100644 --- a/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketChatClient.java +++ b/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketChatClient.java @@ -1,10 +1,8 @@ package guru.qa.allure.notifications.clients.rocket; import guru.qa.allure.notifications.clients.Notifier; -import guru.qa.allure.notifications.config.rocket.Rocket; +import guru.qa.allure.notifications.config.rocket.RocketChat; import guru.qa.allure.notifications.exceptions.MessagingException; -import guru.qa.allure.notifications.json.JSON; -import guru.qa.allure.notifications.template.MarkdownTemplate; import guru.qa.allure.notifications.template.RocketTemplate; import guru.qa.allure.notifications.template.data.MessageData; import java.io.ByteArrayInputStream; @@ -16,21 +14,21 @@ public class RocketChatClient implements Notifier { private final Map body = new HashMap<>(); - private final Rocket rocket; + private final RocketChat rocketChat; private final RocketTemplate template; - public RocketChatClient(MessageData messageData, Rocket rocket) { - this.rocket = rocket; + public RocketChatClient(MessageData messageData, RocketChat rocket) { + this.rocketChat = rocket; this.template = new RocketTemplate(messageData); } @Override public void sendText() throws MessagingException { - body.put("channel", rocket.getChannel()); + body.put("channel", rocketChat.getChannel()); body.put("text", template.create()); - Unirest.post(rocket.getUrl() + "/api/v1/chat.postMessage") - .header("X-Auth-Token", rocket.getToken()) - .header("X-User-Id", rocket.getUserId()) + Unirest.post(rocketChat.getUrl() + "/api/v1/chat.postMessage") + .header("X-Auth-Token", rocketChat.getToken()) + .header("X-User-Id", rocketChat.getUserId()) .header("Content-Type", ContentType.APPLICATION_JSON.getMimeType()) .body(body) .asString() @@ -40,10 +38,10 @@ public void sendText() throws MessagingException { @Override public void sendPhoto(byte[] chartImage) throws MessagingException { sendText(); - String url = String.format("%s/api/v1/rooms.upload/%s", rocket.getUrl(), rocket.getChannel()); + String url = String.format("%s/api/v1/rooms.upload/%s", rocketChat.getUrl(), rocketChat.getChannel()); Unirest.post(url) - .header("X-Auth-Token", rocket.getToken()) - .header("X-User-Id", rocket.getUserId()) + .header("X-Auth-Token", rocketChat.getToken()) + .header("X-User-Id", rocketChat.getUserId()) .field("file", new ByteArrayInputStream(chartImage), ContentType.IMAGE_PNG, "chart.png") .asString() .getBody(); diff --git a/src/main/java/guru/qa/allure/notifications/config/Config.java b/src/main/java/guru/qa/allure/notifications/config/Config.java index 81e3c6df..b239b29d 100644 --- a/src/main/java/guru/qa/allure/notifications/config/Config.java +++ b/src/main/java/guru/qa/allure/notifications/config/Config.java @@ -7,7 +7,7 @@ import guru.qa.allure.notifications.config.mail.Mail; import guru.qa.allure.notifications.config.mattermost.Mattermost; import guru.qa.allure.notifications.config.proxy.Proxy; -import guru.qa.allure.notifications.config.rocket.Rocket; +import guru.qa.allure.notifications.config.rocket.RocketChat; import guru.qa.allure.notifications.config.skype.Skype; import guru.qa.allure.notifications.config.slack.Slack; import guru.qa.allure.notifications.config.telegram.Telegram; @@ -37,7 +37,7 @@ public class Config { @SerializedName("loop") private Loop loop; @SerializedName("rocketChat") - private Rocket rocket; + private RocketChat rocketChat; @SerializedName("proxy") private Proxy proxy; } diff --git a/src/main/java/guru/qa/allure/notifications/config/rocket/Rocket.java b/src/main/java/guru/qa/allure/notifications/config/rocket/RocketChat.java similarity index 93% rename from src/main/java/guru/qa/allure/notifications/config/rocket/Rocket.java rename to src/main/java/guru/qa/allure/notifications/config/rocket/RocketChat.java index 6fdcd007..73c175b2 100644 --- a/src/main/java/guru/qa/allure/notifications/config/rocket/Rocket.java +++ b/src/main/java/guru/qa/allure/notifications/config/rocket/RocketChat.java @@ -4,7 +4,7 @@ import lombok.Getter; @Getter -public class Rocket { +public class RocketChat { @SerializedName("url") private String url; From 296ce2d11752a53d5dc026b19b49c4396bf155a5 Mon Sep 17 00:00:00 2001 From: funeraL Date: Mon, 20 Nov 2023 12:30:36 +0300 Subject: [PATCH 13/15] fix README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ae08737a..e088c47f 100644 --- a/README.md +++ b/README.md @@ -262,8 +262,8 @@ java "-DconfigFile=notifications/config.json" -jar ../allure-notifications-4.2.1
        1. First of all you need to generate auth_token from user setting.
        2. After generation you can get auth_token and user_id.
        3. -
        4. You can get the channel parameter using previously generated tokens and following the documentation -+ (Channels info docs).
        5. +
        6. You can get the channel parameter using previously generated tokens and following the documentation.
        7. ++ (Channels info docs)
    From 5bf96efca7d6501b52b573db657b0ee853d37d18 Mon Sep 17 00:00:00 2001 From: funeraL Date: Mon, 20 Nov 2023 13:26:17 +0300 Subject: [PATCH 14/15] update rocket.ftl --- src/main/resources/templates/rocket.ftl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/resources/templates/rocket.ftl b/src/main/resources/templates/rocket.ftl index 046c56ec..da00d574 100644 --- a/src/main/resources/templates/rocket.ftl +++ b/src/main/resources/templates/rocket.ftl @@ -2,9 +2,10 @@ **${results}:** **-${environment}:** ${env} **-${comment}:** ${comm} + **-${duration}:** **${time}** **-${totalScenarios}:** ${total} - <#if passed != 0 > **-${totalPassed}:** ${passed} - <#if failed != 0 > **-${totalFailed}:** ${failed} + <#if passed != 0 > **-${totalPassed}:** ${passed} **(${passedPercentage} %)** + <#if failed != 0 > **-${totalFailed}:** ${failed} **(${failedPercentage} %)** <#if broken != 0 > **-${totalBroken}:** ${broken} <#if unknown != 0 > **-${totalUnknown}:** ${unknown} <#if skipped != 0 > **-${totalSkipped}:** ${skipped} From 4dd4a6477197bf3173e595694633ab498c083408 Mon Sep 17 00:00:00 2001 From: funeraL Date: Mon, 20 Nov 2023 22:49:01 +0300 Subject: [PATCH 15/15] review --- .../allure/notifications/clients/rocket/RocketChatClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketChatClient.java b/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketChatClient.java index 7a1a3085..51cf3499 100644 --- a/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketChatClient.java +++ b/src/main/java/guru/qa/allure/notifications/clients/rocket/RocketChatClient.java @@ -13,7 +13,6 @@ public class RocketChatClient implements Notifier { - private final Map body = new HashMap<>(); private final RocketChat rocketChat; private final RocketTemplate template; @@ -24,6 +23,7 @@ public RocketChatClient(MessageData messageData, RocketChat rocket) { @Override public void sendText() throws MessagingException { + Map body = new HashMap<>(); body.put("channel", rocketChat.getChannel()); body.put("text", template.create()); Unirest.post(rocketChat.getUrl() + "/api/v1/chat.postMessage")