91 lines
3.5 KiB
C#
Executable File
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;
|
|
}
|
|
}
|
|
}
|
|
|