Basic commandline invocation working

This commit is contained in:
Nathan McRae 2025-02-04 20:24:11 -08:00
parent e2d9878e8e
commit eb07e42ab0
2 changed files with 71 additions and 0 deletions

View File

@ -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<MainSettings, Exception> 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);
}
}

View File

@ -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;
}