From eb07e42ab0e83e41b592df4166f9b47e7c9adda2 Mon Sep 17 00:00:00 2001 From: Nathan McRae Date: Tue, 4 Feb 2025 20:24:11 -0800 Subject: [PATCH] Basic commandline invocation working --- .../name/nathanmcrae/numbersstation/Main.java | 55 +++++++++++++++++++ .../numbersstation/StationSettings.java | 16 ++++++ 2 files changed, 71 insertions(+) diff --git a/src/main/java/name/nathanmcrae/numbersstation/Main.java b/src/main/java/name/nathanmcrae/numbersstation/Main.java index 3af52f0..c0c1d16 100644 --- a/src/main/java/name/nathanmcrae/numbersstation/Main.java +++ b/src/main/java/name/nathanmcrae/numbersstation/Main.java @@ -1,11 +1,18 @@ package name.nathanmcrae.numbersstation; +import com.jcraft.jsch.JSchException; +import com.jcraft.jsch.SftpException; import com.leakyabstractions.result.api.Result; import com.leakyabstractions.result.core.Results; +import com.tearsofaunicorn.wordpress.api.model.Post; +import com.tearsofaunicorn.wordpress.api.WordpressClient; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.logging.FileHandler; import java.util.logging.Logger; import java.util.logging.Level; @@ -133,12 +140,14 @@ public class Main extends Application { public static void runStation(String stationName) { if (stationName == null || stationName == "") { logger.log(Level.SEVERE, "Station name must be provided and not empty"); + // TODO: Notification System.exit(1); } Result result = MainSettings.load(); if (!result.hasSuccess()) { logger.log(Level.SEVERE, "Unable to load settings"); + // TODO: Notification System.exit(1); } MainSettings settings = result.getSuccess().get(); @@ -150,11 +159,57 @@ public class Main extends Application { if (loadedStation == null) { logger.log(Level.SEVERE, "Unable to find station " + stationName); + // TODO: Notification System.exit(1); } logger.info("Loaded station " + stationName); + Path stationDirPath = loadedStation.stationPath(); + + try { + boolean generateMessage = false; + if (!Files.exists(stationDirPath)) { + Files.createDirectories(stationDirPath); + } + + Path nextMessagePath = stationDirPath.resolve("next-message.txt"); + String messageText; + if (!Files.exists(nextMessagePath)) { + messageText = loadedStation.generateMessage(); + } else { + messageText = new String(Files.readAllBytes(nextMessagePath)); + } + + // Send message using appropriate method + switch (loadedStation.getMessageMethod()) { + case StationSettings.MessageMethod.SFTP: + //loadedStation.uploadNextMessageToSFTP(); + break; + case StationSettings.MessageMethod.WORDPRESS: + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String dateStr = dateFormat.format(new Date()); + System.setProperty("wordpress.username", loadedStation.getUsername()); + System.setProperty("wordpress.password", loadedStation.getPassword()); + System.setProperty("wordpress.url", loadedStation.getAddress()); + Post post = new Post(dateStr, messageText); + WordpressClient client = new WordpressClient(); + String newPostId = client.newPost(post); + break; + default: + logger.log(Level.SEVERE, "Message method " + loadedStation.getMessageMethod() + " not supported"); + // TODO: Notification + System.exit(1); + } + + String newMessageText = loadedStation.generateMessage(); + Files.write(nextMessagePath, newMessageText.getBytes(StandardCharsets.UTF_8)); + } catch (IOException e) { + logger.log(Level.SEVERE, "Exception while posting message to station " + stationName, e); + // TODO: Notification + System.exit(1); + } + System.exit(0); } } diff --git a/src/main/java/name/nathanmcrae/numbersstation/StationSettings.java b/src/main/java/name/nathanmcrae/numbersstation/StationSettings.java index e57902e..f115c1e 100644 --- a/src/main/java/name/nathanmcrae/numbersstation/StationSettings.java +++ b/src/main/java/name/nathanmcrae/numbersstation/StationSettings.java @@ -3,9 +3,11 @@ package name.nathanmcrae.numbersstation; import java.io.UnsupportedEncodingException; import java.nio.file.Path; import java.nio.file.Paths; +import java.security.SecureRandom; import java.time.LocalDate; import java.time.LocalTime; import java.util.ArrayList; +import java.util.Random; public class StationSettings { private String address; @@ -74,6 +76,20 @@ public class StationSettings { return directoryPath.resolve(stationDirName); } + public String generateMessage() { + SecureRandom random = new SecureRandom(); + StringBuilder messageBuilder = new StringBuilder(); + + for (int i = 0; i < messageLength; i++) { + if (i > 0 && i % digitsPerGroup == 0) { + messageBuilder.append(" "); + } + messageBuilder.append(random.nextInt(10)); + } + + return messageBuilder.toString(); + } + public String getAddress() { return address; }