Commit bfcffe4f authored by Sylvain Renault's avatar Sylvain Renault
Browse files

Now all...

parent e2d05c36
Loading
Loading
Loading
Loading
+153 −0
Original line number Diff line number Diff line
/*
 * 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 fr 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 fr ffentlich sichtbaren Typ oder Element
}
+39 −0
Original line number Diff line number Diff line
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