diff --git a/pom.xml b/pom.xml
index 84dace3..c4d1c70 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,16 @@
-
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.0
+
+ ${java.version}
+
+
+
diff --git a/src/main/java/DiscordApi.java b/src/main/java/DiscordApi.java
index f62402a..23d8b30 100644
--- a/src/main/java/DiscordApi.java
+++ b/src/main/java/DiscordApi.java
@@ -10,24 +10,25 @@
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
+import java.util.List;
public class DiscordApi {
- public static void main(String[] args) throws IOException, InterruptedException, JSONException {
+ private static SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ public static void main(String[] args) throws IOException, InterruptedException, JSONException {
String uriToManager = args[0];
-
String urlDiscord = args[1];
- HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.GET()
.uri(URI.create(uriToManager))
.build();
- HttpResponse response = client.send(request,
- HttpResponse.BodyHandlers.ofString());
+ HttpClient client = HttpClient.newHttpClient();
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
JSONArray jsonArray = new JSONArray(response.body());
@@ -35,46 +36,55 @@ public static void main(String[] args) throws IOException, InterruptedException,
ArrayList listOfTopics = new ArrayList<>();
ArrayList listOfLeaders = new ArrayList<>();
- for (int i = 0 ; i < jsonArray.length(); i++){
+ for (int i = 0; i < jsonArray.length(); i++) {
listOfDates.add(jsonArray.getJSONObject(i).get("date").toString());
listOfTopics.add(jsonArray.getJSONObject(i).get("topic").toString());
listOfLeaders.add(jsonArray.getJSONObject(i).get("leader").toString());
}
- long firstDate = Long.parseLong(listOfDates.get(0));
- long secondDate = Long.parseLong(listOfDates.get(1));
-
- Timestamp firstDateTimestamp = new Timestamp(firstDate);
- Date firstDateToDateTime = new Date(firstDateTimestamp.getTime());
-
- Timestamp secondDateTimestamp = new Timestamp(secondDate);
- Date secondDateToDateTime = new Date(secondDateTimestamp.getTime());
+ DiscordWebhook.EmbedObject nearestTopicMessage = createNearestTopicMessage(formatDate(listOfDates.get(0)), listOfTopics.get(0), listOfLeaders.get(0));
+ DiscordWebhook.EmbedObject nextTopicMessage = createNextTopicMessage(formatDate(listOfDates.get(1)), listOfTopics.get(1), listOfLeaders.get(1));
- SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-
- String nearestDate = sdfDate.format(firstDateToDateTime);
- String nextDate = sdfDate.format(secondDateToDateTime);
+ sendWebhook(urlDiscord, Arrays.asList(nearestTopicMessage, nextTopicMessage));
+ }
+ private static void sendWebhook(String urlDiscord, List messages) throws IOException {
DiscordWebhook webhook = new DiscordWebhook(urlDiscord);
webhook.setContent("@everyone");
webhook.setAvatarUrl("https://cdn3.vectorstock.com/i/1000x1000/99/37/white-tree-icon-in-green-round-vector-1869937.jpg");
webhook.setUsername("Przypominajka");
webhook.setTts(true);
- webhook.addEmbed(new DiscordWebhook.EmbedObject()
+
+ for (DiscordWebhook.EmbedObject eo : messages) {
+ webhook.addEmbed(eo);
+ }
+
+ webhook.execute();
+ }
+
+ private static DiscordWebhook.EmbedObject createNearestTopicMessage(String nearestDate, String topic, String leader) {
+ return new DiscordWebhook.EmbedObject()
.setTitle(":exclamation: Najbliższe spotkanie już " + nearestDate + " :exclamation:")
.setColor(Color.green)
-// .addField("Data", nearestDate, false)
- .addField(":mega: Temat", listOfTopics.get(0), false)
- .addField(":speaking_head: Prowadzący", listOfLeaders.get(0), false)
+ .addField(":mega: Temat", topic, false)
+ .addField(":speaking_head: Prowadzący", leader, false)
.addField(":arrow_right: Link do aplikacji - linkiem może być tytuł postu, wtedy bedzie na niebiesko", "jakiś url", true)
.setThumbnail("https://www.kindpng.com/picc/m/73-737324_abstract-submission-nutrition-congress-circle-meeting-icon-png.png")
- .setImage("https://cdn3.iconfinder.com/data/icons/roles-computer-it/128/programmer-2-512.png"));
-// .setAuthor("Coding Tree", "https://kryptongta.com", "https://kryptongta.com/images/kryptonlogowide.png")
- webhook.addEmbed(new DiscordWebhook.EmbedObject()
+ .setImage("https://cdn3.iconfinder.com/data/icons/roles-computer-it/128/programmer-2-512.png");
+ }
+
+ private static DiscordWebhook.EmbedObject createNextTopicMessage(String nextDate, String topic, String leader) {
+ return new DiscordWebhook.EmbedObject()
.setColor(Color.lightGray)
.setAuthor("Kolejne spotkanie " + nextDate, " ", " ")
- .addField(":mega: Temat ", listOfTopics.get(1), true)
- .addField(":speaking_head: Prowadzący ", listOfLeaders.get(1), true));
- webhook.execute();
+ .addField(":mega: Temat ", topic, true)
+ .addField(":speaking_head: Prowadzący ", leader, true);
+ }
+
+ private static String formatDate(String date) {
+ long firstDate = Long.parseLong(date);
+ Timestamp firstDateTimestamp = new Timestamp(firstDate);
+ Date firstDateToDateTime = new Date(firstDateTimestamp.getTime());
+ return sdfDate.format(firstDateToDateTime);
}
}
diff --git a/src/main/java/DiscordWebhook.java b/src/main/java/DiscordWebhook.java
index 11e8cb9..3afcbe4 100644
--- a/src/main/java/DiscordWebhook.java
+++ b/src/main/java/DiscordWebhook.java
@@ -1,14 +1,12 @@
+import org.json.JSONObject;
+
import javax.net.ssl.HttpsURLConnection;
-import java.awt.Color;
+import java.awt.*;
import java.io.IOException;
import java.io.OutputStream;
-import java.lang.reflect.Array;
import java.net.URL;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
public class DiscordWebhook {
@@ -75,15 +73,14 @@ public void execute() throws IOException {
jsonEmbed.put("color", rgb);
}
- EmbedObject.Footer footer = embed.getFooter();
- EmbedObject.Image image = embed.getImage();
- EmbedObject.Thumbnail thumbnail = embed.getThumbnail();
- EmbedObject.Author author = embed.getAuthor();
- List fields = embed.getFields();
+ Footer footer = embed.getFooter();
+ Image image = embed.getImage();
+ Thumbnail thumbnail = embed.getThumbnail();
+ Author author = embed.getAuthor();
+ List fields = embed.getFields();
if (footer != null) {
JSONObject jsonFooter = new JSONObject();
-
jsonFooter.put("text", footer.getText());
jsonFooter.put("icon_url", footer.getIconUrl());
jsonEmbed.put("footer", jsonFooter);
@@ -91,21 +88,18 @@ public void execute() throws IOException {
if (image != null) {
JSONObject jsonImage = new JSONObject();
-
jsonImage.put("url", image.getUrl());
jsonEmbed.put("image", jsonImage);
}
if (thumbnail != null) {
JSONObject jsonThumbnail = new JSONObject();
-
jsonThumbnail.put("url", thumbnail.getUrl());
jsonEmbed.put("thumbnail", jsonThumbnail);
}
if (author != null) {
JSONObject jsonAuthor = new JSONObject();
-
jsonAuthor.put("name", author.getName());
jsonAuthor.put("url", author.getUrl());
jsonAuthor.put("icon_url", author.getIconUrl());
@@ -113,7 +107,7 @@ public void execute() throws IOException {
}
List jsonFields = new ArrayList<>();
- for (EmbedObject.Field field : fields) {
+ for (Field field : fields) {
JSONObject jsonField = new JSONObject();
jsonField.put("name", field.getName());
@@ -240,143 +234,95 @@ public EmbedObject addField(String name, String value, boolean inline) {
return this;
}
- private static class Footer {
- private String text;
- private String iconUrl;
-
- private Footer(String text, String iconUrl) {
- this.text = text;
- this.iconUrl = iconUrl;
- }
+ }
- private String getText() {
- return text;
- }
+ private static class Footer {
+ private String text;
+ private String iconUrl;
- private String getIconUrl() {
- return iconUrl;
- }
+ private Footer(String text, String iconUrl) {
+ this.text = text;
+ this.iconUrl = iconUrl;
}
- private static class Thumbnail {
- private String url;
-
- private Thumbnail(String url) {
- this.url = url;
- }
-
- private String getUrl() {
- return url;
- }
+ private String getText() {
+ return text;
}
- private static class Image {
- private String url;
+ private String getIconUrl() {
+ return iconUrl;
+ }
+ }
- private Image(String url) {
- this.url = url;
- }
+ private static class Thumbnail {
+ private String url;
- private String getUrl() {
- return url;
- }
+ private Thumbnail(String url) {
+ this.url = url;
}
- private static class Author {
- private String name;
- private String url;
- private String iconUrl;
-
- private Author(String name, String url, String iconUrl) {
- this.name = name;
- this.url = url;
- this.iconUrl = iconUrl;
- }
+ private String getUrl() {
+ return url;
+ }
+ }
- private String getName() {
- return name;
- }
+ private static class Image {
+ private String url;
- private String getUrl() {
- return url;
- }
+ private Image(String url) {
+ this.url = url;
+ }
- private String getIconUrl() {
- return iconUrl;
- }
+ private String getUrl() {
+ return url;
}
+ }
- private static class Field {
- private String name;
- private String value;
- private boolean inline;
+ private static class Author {
+ private String name;
+ private String url;
+ private String iconUrl;
- private Field(String name, String value, boolean inline) {
- this.name = name;
- this.value = value;
- this.inline = inline;
- }
+ private Author(String name, String url, String iconUrl) {
+ this.name = name;
+ this.url = url;
+ this.iconUrl = iconUrl;
+ }
- private String getName() {
- return name;
- }
+ private String getName() {
+ return name;
+ }
- private String getValue() {
- return value;
- }
+ private String getUrl() {
+ return url;
+ }
- private boolean isInline() {
- return inline;
- }
+ private String getIconUrl() {
+ return iconUrl;
}
}
- private static class JSONObject {
+ private static class Field {
+ private String name;
+ private String value;
+ private boolean inline;
- private final HashMap map = new HashMap<>();
-
- void put(String key, Object value) {
- if (value != null) {
- map.put(key, value);
- }
+ private Field(String name, String value, boolean inline) {
+ this.name = name;
+ this.value = value;
+ this.inline = inline;
}
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder();
- Set> entrySet = map.entrySet();
- builder.append("{");
-
- int i = 0;
- for (Map.Entry entry : entrySet) {
- Object val = entry.getValue();
- builder.append(quote(entry.getKey())).append(":");
-
- if (val instanceof String) {
- builder.append(quote(String.valueOf(val)));
- } else if (val instanceof Integer) {
- builder.append(Integer.valueOf(String.valueOf(val)));
- } else if (val instanceof Boolean) {
- builder.append(val);
- } else if (val instanceof JSONObject) {
- builder.append(val.toString());
- } else if (val.getClass().isArray()) {
- builder.append("[");
- int len = Array.getLength(val);
- for (int j = 0; j < len; j++) {
- builder.append(Array.get(val, j).toString()).append(j != len - 1 ? "," : "");
- }
- builder.append("]");
- }
-
- builder.append(++i == entrySet.size() ? "}" : ",");
- }
+ private String getName() {
+ return name;
+ }
- return builder.toString();
+ private String getValue() {
+ return value;
}
- private String quote(String string) {
- return "\"" + string + "\"";
+ private boolean isInline() {
+ return inline;
}
}