Files
ARM64/MarketDataServer/Program.cs
2025-04-12 01:15:24 -04:00

91 lines
3.5 KiB
C#
Executable File

using System.Diagnostics;
using System.Text.Json;
using System.Text.Json.Serialization;
using MarketData;
using MarketData.Configuration;
using MarketData.Utils;
using Microsoft.AspNetCore.Mvc;
using MarketDataServer.Authorization;
namespace MarketDataServer
{
class Program
{
static void Main(string[] args)
{
String logFileName="marketdataserver";
Authorizations.GetInstance().IsEnabled=false;
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
// Add services to the container.
GlobalConfig.Instance.Configuration = builder.Configuration;
String baseAddress = GlobalConfig.Instance.Configuration["server_address"];
CreateLogging(logFileName);
MDTrace.WriteLine(MarketData.LogLevel.DEBUG,$"Server Address:{baseAddress}");
builder.Services.AddControllers().AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.WriteAsString;
options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter(JsonNamingPolicy.CamelCase));
});
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen( config =>
{
config.ResolveConflictingActions (apiDescriptions => apiDescriptions.First ());
});
builder.Services.AddCors(options =>
{
options.AddPolicy("corsPolicy",
builder =>
{
builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().SetIsOriginAllowedToAllowWildcardSubdomains();
});
});
WebApplication webApplication = builder.Build();
webApplication.UseCors("corsPolicy");
// Configure the HTTP request pipeline.
if (webApplication.Environment.IsDevelopment()||webApplication.Environment.IsProduction() )
{
webApplication.UseSwagger();
webApplication.UseSwaggerUI();
}
webApplication.UseHttpsRedirection();
webApplication.UseAuthorization();
webApplication.MapControllers();
webApplication.MapControllerRoute(name: "default",pattern: "api/{controller}/{action}/{id?}");
webApplication.Run(baseAddress);
}
private static bool CreateLogging(String task)
{
if(String.IsNullOrEmpty(task))return false;
task=task.ToLower();
MDTrace.LogLevel = MarketData.LogLevel.DEBUG;
String logFolder = "/logs";
DateTime currentDate=DateTime.Now;
String strLogFile = "marketdata_" + task + ".log";
String currentWorkingDirectory = Directory.GetCurrentDirectory();
Console.WriteLine($"Current directory is {currentWorkingDirectory}");
Utility.EnsureLogFolder(currentWorkingDirectory+logFolder);
Utility.ExpireLogs(currentWorkingDirectory+logFolder,1);
Trace.Listeners.Remove("Default");
Console.WriteLine($"Adding Trace Listener :{currentWorkingDirectory+logFolder+"/"+strLogFile}");
Trace.Listeners.Add(new TextWriterTraceListener(currentWorkingDirectory+logFolder+"/"+strLogFile));
MDTrace.WriteLine($"Trace Listener added.");
Utility.ShowLogs(currentWorkingDirectory + logFolder);
return true;
}
}
}