diff --git a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Controllers/DefaultApiExt.cs b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Controllers/DefaultApiExt.cs new file mode 100644 index 0000000000000000000000000000000000000000..6c48dcd6bb1023be7a6a172c0328716958b9f14f --- /dev/null +++ b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Controllers/DefaultApiExt.cs @@ -0,0 +1,153 @@ +/* + * SmartSite Core System API + * + * API ensuring interoperability between the various services, tools and apps in SmartSite + * + * The version of the OpenAPI document: 1.0.2 + * + * Generated by: https://openapi-generator.tech + */ + +using System; +using System.Net; +using System.IO; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Http; +using Swashbuckle.AspNetCore.Annotations; +using Swashbuckle.AspNetCore.SwaggerGen; +using Newtonsoft.Json; +using ETSI.ARF.OpenAPI.WorldStorage.Attributes; +using ETSI.ARF.OpenAPI.WorldStorage.Models; +using ETSI.ARF.OpenAPI.WorldStorage.Services; + +namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers +{ +#pragma warning disable CS1591 // Fehlendes XML-Kommentar für öffentlich sichtbaren Typ oder Element + /// <summary> + /// + /// </summary> + public class DefaultApiControllerExt : DefaultApiController + { + public override IActionResult GetPing() + { + string answer = "Pong"; + return new ObjectResult(answer); + } + + public override IActionResult GetAdmin() + { + string answer = "ETSI ARF Server Running."; + return new ObjectResult(answer); + } + + public override IActionResult GetVersion() + { + string answer = "ETSI ARF RESTful API 1.0.1"; + return new ObjectResult(answer); + } + + [NonAction] + private string writeMsg(string title, string msg) + { + return $"<p>{title}: \t {msg}</p>"; + } + + [NonAction] + public /*override*/ IActionResult GetReport() + { + string projectName = "ETSI ARF - STF 620"; + string machinename = System.Environment.MachineName; + string hostname = Dns.GetHostName(); + var ips = Dns.GetHostAddresses(hostname); + + string status = "Running"; + string mongoStatus = "Running"; + //string mongoCollectionUsers = "Number = " + UserService.Singleton?.NumOfDocuments(); + //string mongoCollectionMachines = "Number = " + MachineService.Singleton?.NumOfDocuments(); + //string mongoCollectionAssets = "Number = " + AssetService.Singleton?.NumOfDocuments(); + //string mongoCollectionJobs = "Number = " + JobService.Singleton?.NumOfDocuments(); + + //List<User> users = UserService.Singleton?.Get(); + //int activeU = 0; + //int nonActiveU = 0; + //foreach (var u in users) + // if (u.IsLogged) activeU++; + // else nonActiveU++; + + //List<Job> jobs = JobService.Singleton?.Get(); + //int jobNum = 0; + //foreach (var j in jobs) + // if (j.Progress != 100) jobNum++; + + // + // Simple output + // + string html = "<!DOCTYPE html> <html>" + + "<head>" + + " <title>SmartSiteCloud</title>" + + "</head>" + + "<body>" + + " <h1>SmartSite Cloud</h1>" + + " <h2>Server based on IIS/ASP.NET</h1>" + + writeMsg("Local Date & Time:", DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString()) + + writeMsg("Machine Name", machinename) + writeMsg("Host Name", hostname) + writeMsg("IPv6", ips[0].ToString()) + + " <h3>Services</h3>" + + writeMsg("WebServer", status) + + writeMsg("MongoDB", mongoStatus) + + //writeMsg(" > Users", mongoCollectionUsers) + + //writeMsg(" > Machines", mongoCollectionMachines) + + //writeMsg(" > Assets", mongoCollectionAssets) + + //writeMsg(" > Jobs", mongoCollectionJobs) + + " <h2>Database</h1>" + + //" <h3>Users</h1>" + + // writeMsg(" - Active", activeU.ToString()) + + // writeMsg(" - Non active", nonActiveU.ToString()) + + //" <h3>Jobs</h1>" + + // writeMsg(" - Running jobs", jobNum.ToString()) + + "</body></html> "; + + // + // Complex output (for RocketCake) + // + // always use https + //string domainName = (HttpContext.Request.IsHttps ? "https://" : "https://") + HttpContext.Request.Host.ToUriComponent() + "/portal"; // Ex: "https://localhost:44301/portal" + //string root = Path.Combine(Startup.wPath, "portal"); + //string htmlFname = Path.Combine(root, "status.html"); + //string[] template = System.IO.File.ReadAllLines(htmlFname); + //string html2 = ""; + + //string msg1 = + // writeMsg("Domain", domainName) + + // writeMsg("Project", projectName) + + // writeMsg("Local Date", DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString()) + + // writeMsg("Machine Name", machinename) + writeMsg("Host Name", hostname) + writeMsg("IPv6", ips[0].ToString()); + //string msg2 = + // writeMsg("WebServer", status) + + // writeMsg("MongoDB", mongoStatus) + + // //writeMsg(" > Users", mongoCollectionUsers) + + // //writeMsg(" > Machines", mongoCollectionMachines) + + // //writeMsg(" > Assets", mongoCollectionAssets) + + // //writeMsg(" > Jobs", mongoCollectionJobs) + + // writeMsg("MinIO", "-"); + + + //foreach (var line in template) + //{ + // string res = line; + // res = res.Replace("src=\"", "src=\"" + domainName + "/"); + // res = res.Replace("href=\"", "href=\"" + domainName + "/"); + // res = res.Replace("$name1$", projectName); + // res = res.Replace("$msg1$", msg1); + // res = res.Replace("$msg2$", msg2); + // html2 += res; + //} + + return Content(html, "text/html"); + //return Content(html2, "text/html"); + } + } +#pragma warning restore CS1591 // Fehlendes XML-Kommentar für öffentlich sichtbaren Typ oder Element +} diff --git a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Models/IModels.cs b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Models/IModels.cs new file mode 100644 index 0000000000000000000000000000000000000000..c6660a8a3463dd627187f42089bce42921385721 --- /dev/null +++ b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Models/IModels.cs @@ -0,0 +1,39 @@ +using System; +using System.Linq; +using System.Text; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using ETSI.ARF.OpenAPI.WorldStorage.Converters; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace ETSI.ARF.OpenAPI.WorldStorage.Models +{ + /// <summary> + /// Base element representing an object in the MongoDB. + /// </summary> + public interface IModels + { + /// <summary> + /// Accessor for the ID managed by mongo + /// </summary> + public ObjectId _mongoID { get; set; } + + // Not used!!! + // public Metadata Metadata { get; set; } + + /// <summary> + /// Name of the object + /// </summary> + public string Name { get; set; } + + /// <summary> + /// GUID is managed by EConoM system + /// </summary> + public Guid GUID { get; set; } + + } +} \ No newline at end of file