From 2491e9de8e281855141cc7cd435365546f5bf914 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 15 Nov 2018 19:45:13 +0000 Subject: [PATCH] --- app/ayanova/src/api/apimeta.js | 19 ++++ app/ayanova/src/api/apiutil.js | 8 ++ app/ayanova/src/views/About.vue | 97 +++++++++++++++++++ .../AyaNova/Controllers/ApiRootController.cs | 22 +++++ 4 files changed, 146 insertions(+) create mode 100644 app/ayanova/src/api/apimeta.js diff --git a/app/ayanova/src/api/apimeta.js b/app/ayanova/src/api/apimeta.js new file mode 100644 index 00000000..c7fc85bf --- /dev/null +++ b/app/ayanova/src/api/apimeta.js @@ -0,0 +1,19 @@ +/* xeslint-disable */ +import apiUtil from "./apiutil"; + +export default { + fetchAPIInfo() { + return new Promise(function(resolve, reject) { + //step 2: get it + fetch(apiUtil.APIUrl("ServerInfo"), apiUtil.fetch()) + .then(apiUtil.status) + .then(apiUtil.json) + .then(response => { + resolve(response); + }) + .catch(function(error) { + reject(error); + }); + }); + } +}; diff --git a/app/ayanova/src/api/apiutil.js b/app/ayanova/src/api/apiutil.js index 6c815fdc..411e44d8 100644 --- a/app/ayanova/src/api/apiutil.js +++ b/app/ayanova/src/api/apiutil.js @@ -51,6 +51,14 @@ export default { body: JSON.stringify(data) }; }, + fetch() { + /* GET WITH AUTH */ + return { + method: "get", + mode: "cors", + headers: this.postAuthorizedHeaders() + }; + }, APIUrl(apiPath) { if ("" == store.state.apiUrl) { //construct the api url and store it diff --git a/app/ayanova/src/views/About.vue b/app/ayanova/src/views/About.vue index f85d522a..f0c8f03f 100644 --- a/app/ayanova/src/views/About.vue +++ b/app/ayanova/src/views/About.vue @@ -2,5 +2,102 @@

About AyaNova

+ + Server + + + API version + {{ serverInfo.serverVersion }} + + + + + DB Schema version + {{ serverInfo.dbSchemaVersion }} + + + + + Server local time + {{ serverInfo.serverLocalTime }} + + + + + Server timezone + {{ serverInfo.serverTimeZone }} + + + + + + License + + + Licensed to + {{ serverInfo.license.license.licensedTo }} + + + + + DB instance ID + {{ serverInfo.license.license.dbId }} + + + + + Key serial + {{ serverInfo.license.license.keySerial }} + + + + + License expiration + {{ serverInfo.license.license.licenseExpiration }} + + + + + Maintenance expiration + {{ serverInfo.license.license.maintenanceExpiration }} + + + + + Licensed features + {{ serverInfo.license.license.features}} + + + +

{{ serverInfo }}

+ + + + diff --git a/server/AyaNova/Controllers/ApiRootController.cs b/server/AyaNova/Controllers/ApiRootController.cs index 0ec5c834..2ed19b10 100644 --- a/server/AyaNova/Controllers/ApiRootController.cs +++ b/server/AyaNova/Controllers/ApiRootController.cs @@ -71,6 +71,28 @@ namespace AyaNova.Api.Controllers } + /// + /// Get API server info for general display + /// + /// Required roles: Any + /// + /// + /// API server info + [HttpGet("ServerInfo")] + public ActionResult ServerInfo() + { + return Ok(new + { + data = new + { + ServerVersion = AyaNovaVersion.FullNameAndVersion, + DBSchemaVersion = AySchema.currentSchema, + ServerLocalTime = DateUtil.ServerDateTimeString(System.DateTime.UtcNow), + ServerTimeZone = TimeZoneInfo.Local.Id, + License = AyaNova.Core.License.LicenseInfoAsJson + } + }); + } #if (DEBUG) ///