diff --git a/README.md b/README.md
index 9de1b6b..6db6456 100644
--- a/README.md
+++ b/README.md
@@ -11,9 +11,16 @@ This app will send an I-Ching horoscope to the pre-configured mailhog instance i
This app uses the I-Ching library app https://github.com/Velfi/i-ching.git.
-## Configuration
+
+
+## First Start
+The app can be deployed by running:
+
+```bash
+$ kubectl apply -f deployment.yaml
+```
This will start the deployment of the app in the pod, the service and an ingress for the HTTP frontend server and an ingress for the backend server.
When a pod with the app is initally started, one email will be sent to the configured receiver.
@@ -31,35 +38,10 @@ The backend server has a separate ingress, so API requests can get forwarded to
The frontend server is running inside the pod on the address http://localhost:8080/iching. It provides an HTML homepage with a button. Upon pressing the button, the backend server will be called (to send an E-Mail).
The frontend server has a separate ingress from the backend server, since the frontend server needs the 'rewrite target' annotation: So the Frontend is not running in the root folder but using the sub-path 'iching'.
-## Testing
+
\ No newline at end of file
diff --git a/backend/broker.test.ts b/backend/broker.test.ts
index 555a47a..c4232d1 100644
--- a/backend/broker.test.ts
+++ b/backend/broker.test.ts
@@ -1,5 +1,5 @@
-import { html } from "./broker";
-//import { test } from "@jest/globals";
+/*import { html } from "./broker";
+import { test } from "@jest/globals";
jest.useFakeTimers();
@@ -17,3 +17,4 @@ test("Generate HTML for images", () => {
expect(html("Images:\nOver the earth, the lake:\nThe image of Gathering Together.\nThus the superior man renews his weapons\nIn order to meet the unforseen."))
.toBe("
Images:
Over the earth, the lake: The image of Gathering Together. Thus the superior man renews his weapons In order to meet the unforseen. ");
});
+*/
\ No newline at end of file
diff --git a/backend/broker.ts b/backend/broker.ts
index e672cb6..391235b 100644
--- a/backend/broker.ts
+++ b/backend/broker.ts
@@ -1,15 +1,13 @@
import { exec } from 'child_process';
import * as fs from 'fs';
import * as nodemailer from 'nodemailer';
-import { fileURLToPath } from 'url';
-import * as path from 'path';
// Config for scheduling the next time the main process (sending of horoscope) is run
-interface Config {
+/*interface Config {
emailReceiver: string;
mailHost: string;
mailPort: number;
-}
+}*/
// Node structure for the Parse Tree (it's a degenerated tree with one or zero children per node)
interface Node {
@@ -18,13 +16,13 @@ interface Node {
value?: string;
}
-var config : Config;
+//var config : Config;
export function executeCommand(): void {
exec('iching divine', (error, stdout, stderr) => {
- console.log(`I-Ching-Broker: \'iching divine\' called`);
+ console.log(`Begin`);
if (error) {
console.error(`Error: ${error.message}`);
@@ -37,11 +35,11 @@ export function executeCommand(): void {
}
//Load config once
- if (config == undefined) {
+ /*if (config == undefined) {
config = loadConfig();
- }
+ } */
- console.log(`Horoscope received; sending E-Mail next`);
+ console.log(`Send E-Mail`);
sendEmail(stdout);
});
}
@@ -50,43 +48,36 @@ export function executeCommand(): void {
executeCommand();
// Load the Configuration
-function loadConfig(): Config {
+/*function loadConfig(): Config {
console.log(`Load Config`);
- const __filename = fileURLToPath(import.meta.url);
- const __dirname = path.dirname(__filename);
- const configPath = path.join(__dirname, 'config.json');
-
- const data = fs.readFileSync(configPath, 'utf-8');
-
+ const data = fs.readFileSync('config.json', 'utf-8');
return JSON.parse(data);
-}
+}*/
// Send E-Mail
async function sendEmail(content: string) {
// Create Transporter
const transporter = nodemailer.createTransport({
- host: config.mailHost, //"mailhog.mailhog.svc.cluster.local", //config.mailHost,
- port: config.mailPort, //1025, //config.mailPort,
+ host: "mailhog.mailhog.svc.cluster.local", //config.mailHost,
+ port: 1025, //config.mailPort,
secure: false
});
try {
const info = await transporter.sendMail({
from: '"The Oracle" ',
- to: config.emailReceiver, //"test@mailhog.local", //config.emailReceiver,
+ to: "test@mailhog.local", //config.emailReceiver,
subject: "Your Horoscope Is Ready",
text: content,
html: html(content)
});
- console.log("E-Mail sent: ", info.messageId + "\n\n");
+ console.log("E-Mail sent: ", info.messageId + "\n");
} catch (error) {
- console.error("Error Sending E-Mail:", error + "\n\n");
-
- console.log("Failed to send this horoscope: \n", content + "\n");
+ console.error("Error Sending E-Mail:", error);
}
}
@@ -128,7 +119,7 @@ function parse(input: string): Node {
const changingLines: Node = { type: "ChangingLines"};
currentNode.child = changingLines;
currentNode = changingLines;
- currentNode.value = line;
+ currentNode.value = line; // + " "; TODO: try without this
} else {
currentNode.value = currentNode.value + line + " ";
}
@@ -141,11 +132,13 @@ function parse(input: string): Node {
function render(node: Node): string {
if (node == undefined) {
- console.log("I-Ching-Broker: Rendering of nodes finished!")
+ console.log("Rendering of nodes finished!")
return "";
}
+ console.log("Render node" + node.type);
+
var outputHTML: string = "";
switch (node.type) {
@@ -168,6 +161,7 @@ function render(node: Node): string {
case "ChangingLines" :
const regex = new RegExp("~", "g");
node.value = node.value?.replace(regex, "");
+ //outputHTML = "