aboutsummaryrefslogtreecommitdiff
path: root/src/server/ApiManagers
diff options
context:
space:
mode:
authorbob <bcz@cs.brown.edu>2019-12-09 10:16:58 -0500
committerbob <bcz@cs.brown.edu>2019-12-09 10:16:58 -0500
commit2b5002cb19fd896426df2a26b981b99fb88dc119 (patch)
treed929ea2c4f761146367043c65125f7cd3f904535 /src/server/ApiManagers
parente5ca273b70c2c41f953ad2a534afabdb313f3e99 (diff)
parentcfaf02757f5aebd2ccce0bbef8b6f5e232932693 (diff)
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web
Diffstat (limited to 'src/server/ApiManagers')
-rw-r--r--src/server/ApiManagers/DiagnosticManager.ts30
-rw-r--r--src/server/ApiManagers/SearchManager.ts36
-rw-r--r--src/server/ApiManagers/UtilManager.ts10
3 files changed, 44 insertions, 32 deletions
diff --git a/src/server/ApiManagers/DiagnosticManager.ts b/src/server/ApiManagers/DiagnosticManager.ts
deleted file mode 100644
index 104985481..000000000
--- a/src/server/ApiManagers/DiagnosticManager.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import ApiManager, { Registration } from "./ApiManager";
-import { Method } from "../RouteManager";
-import request = require('request-promise');
-
-export default class DiagnosticManager extends ApiManager {
-
- protected initialize(register: Registration): void {
-
- register({
- method: Method.GET,
- subscription: "/serverHeartbeat",
- onValidation: ({ res }) => res.send(true)
- });
-
- register({
- method: Method.GET,
- subscription: "/solrHeartbeat",
- onValidation: async ({ res }) => {
- try {
- await request("http://localhost:8983");
- res.send({ running: true });
- } catch (e) {
- res.send({ running: false });
- }
- }
- });
-
- }
-
-} \ No newline at end of file
diff --git a/src/server/ApiManagers/SearchManager.ts b/src/server/ApiManagers/SearchManager.ts
index 7afecbb18..ccd0896bd 100644
--- a/src/server/ApiManagers/SearchManager.ts
+++ b/src/server/ApiManagers/SearchManager.ts
@@ -4,13 +4,31 @@ import { Search } from "../Search";
const findInFiles = require('find-in-files');
import * as path from 'path';
import { pathToDirectory, Directory } from "./UploadManager";
+import { command_line } from "../ActionUtilities";
+import request = require('request-promise');
+import { red } from "colors";
+import RouteSubscriber from "../RouteSubscriber";
-export default class SearchManager extends ApiManager {
+export class SearchManager extends ApiManager {
protected initialize(register: Registration): void {
register({
method: Method.GET,
+ subscription: new RouteSubscriber("solr").add("action"),
+ onValidation: async ({ req, res }) => {
+ const { action } = req.params;
+ if (["start", "stop"].includes(action)) {
+ const status = req.params.action === "start";
+ const success = await SolrManager.SetRunning(status);
+ console.log(success ? `Successfully ${status ? "started" : "stopped"} Solr!` : `Uh oh! Check the console for the error that occurred while ${status ? "starting" : "stopping"} Solr`);
+ }
+ res.redirect("/home");
+ }
+ });
+
+ register({
+ method: Method.GET,
subscription: "/textsearch",
onValidation: async ({ req, res }) => {
const q = req.query.q;
@@ -46,4 +64,20 @@ export default class SearchManager extends ApiManager {
}
+}
+
+export namespace SolrManager {
+
+ export async function SetRunning(status: boolean): Promise<boolean> {
+ const args = status ? "start" : "stop -p 8983";
+ try {
+ console.log(`Solr management: trying to ${args}`);
+ console.log(await command_line(`solr.cmd ${args}`, "../../solr-8.1.1/bin"));
+ return true;
+ } catch (e) {
+ console.log(red(`Solr management error: unable to ${args}`));
+ return false;
+ }
+ }
+
} \ No newline at end of file
diff --git a/src/server/ApiManagers/UtilManager.ts b/src/server/ApiManagers/UtilManager.ts
index 601a7d0d0..e959645e0 100644
--- a/src/server/ApiManagers/UtilManager.ts
+++ b/src/server/ApiManagers/UtilManager.ts
@@ -3,6 +3,7 @@ import { Method } from "../RouteManager";
import { exec } from 'child_process';
import { command_line } from "../ActionUtilities";
import RouteSubscriber from "../RouteSubscriber";
+import { red } from "colors";
export default class UtilManager extends ApiManager {
@@ -11,7 +12,14 @@ export default class UtilManager extends ApiManager {
register({
method: Method.GET,
subscription: new RouteSubscriber("environment").add("key"),
- onValidation: ({ req, res }) => res.send(process.env[req.params.key])
+ onValidation: ({ req, res }) => {
+ const { key } = req.params;
+ const value = process.env[key];
+ if (!value) {
+ console.log(red(`process.env.${key} is not defined.`));
+ }
+ return res.send(value);
+ }
});
register({