// using System.IO; // using System.Threading.Tasks; // using Microsoft.AspNetCore.Http; // using Microsoft.AspNetCore.Mvc; // using Microsoft.AspNetCore.Routing; // using Microsoft.AspNetCore.Authorization; // using Microsoft.Extensions.Logging; // using Newtonsoft.Json.Linq; // using AyaNova.Models; // using AyaNova.Api.ControllerHelpers; // using AyaNova.Biz; // namespace AyaNova.Api.Controllers // { // /// // /// Log files controller // /// // [ApiController] // [ApiVersion("8.0")] // [Route("api/v{version:apiVersion}/metric")] // [Authorize] // public class MetricsController : ControllerBase // { // private readonly AyContext ct; // private readonly ILogger log; // private readonly ApiServerState serverState; // /// // /// ctor // /// // /// // /// // /// // public MetricsController(AyContext dbcontext, ILogger logger, ApiServerState apiServerState) // { // ct = dbcontext; // log = logger; // serverState = apiServerState; // } // /// // /// Get metrics as text document // /// // /// Snapshot of metrics // [HttpGet("textsnapshot")] // public async Task GetMetrics() // { // if (serverState.IsClosed) // return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); // if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.Metrics)) // { // return StatusCode(403, new ApiNotAuthorizedResponse()); // } // string sResult = await GetTheMetrics("plain"); // //Log // await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.Metrics, AyaEvent.Retrieved), ct); // return Content(sResult); // } // /// // /// Get metrics as json object // /// // /// Snapshot of metrics // [HttpGet("jsonsnapshot")] // public async Task GetJsonMetrics() // { // if (serverState.IsClosed) // return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); // if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.Metrics)) // { // return StatusCode(403, new ApiNotAuthorizedResponse()); // } // string sResult = await GetTheMetrics("json"); // JObject json = JObject.Parse(sResult); // //Log // await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.Metrics, AyaEvent.Retrieved), ct); // return Ok(ApiOkResponse.Response(json)); // } // /// // /// Get the metrics snapshot // /// // /// Either "json" for json format or "plain" for plaintext format // /// // private async Task GetTheMetrics(string format) // { // var snapshot = metrics.Snapshot.Get(); // var formatters = ((IMetricsRoot)metrics).OutputMetricsFormatters; // string sResult = $"ERROR GETTING METRICS IN {format} FORMAT"; // foreach (var formatter in formatters) // { // if (formatter.MediaType.Format == format) // { // using (var stream = new MemoryStream()) // { // await formatter.WriteAsync(stream, snapshot); // sResult = System.Text.Encoding.UTF8.GetString(stream.ToArray()); // } // } // } // return sResult; // } // //------------ // } // }