add args parser

This commit is contained in:
Дмитрий Шиманский
2023-12-19 20:24:16 +03:00
parent a690cd5b40
commit 09bcf505cb
5 changed files with 30 additions and 17 deletions

View File

@@ -1,4 +1,7 @@
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. #See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
ARG CLIENTID
ARG CLIENTSECRET
ARG REDIRECTURL
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app WORKDIR /app
@@ -11,10 +14,10 @@ COPY ["yaflay.ru.csproj", "."]
RUN dotnet restore "./yaflay.ru.csproj" RUN dotnet restore "./yaflay.ru.csproj"
COPY . . COPY . .
WORKDIR "/src/." WORKDIR "/src/."
RUN dotnet build "yaflay.ru.csproj" -c Release -o /app/build RUN dotnet build "yaflay.ru.csproj" -c Release -o /app/build
FROM build AS publish FROM build AS publish
RUN dotnet publish "yaflay.ru.csproj" -c Release -o /app/publish /p:UseAppHost=false RUN dotnet publish "yaflay.ru.csproj" -c Release -o /app/publish /p:UseAppHost=false;redirectUrl=$REDIRECTURL;clientId=$CLIENTID;clientSecret=$CLIENTSECRET
FROM base AS final FROM base AS final
WORKDIR /app WORKDIR /app

View File

@@ -42,7 +42,7 @@
new HttpRequestMessage(HttpMethod.Post, "https://discordapp.com/api/oauth2/token")) new HttpRequestMessage(HttpMethod.Post, "https://discordapp.com/api/oauth2/token"))
{ {
requestMessage.Content = new StringContent( requestMessage.Content = new StringContent(
@$"grant_type=authorization_code&code={Model.code}&client_id={Startup.clientId}&client_secret={Startup.clientSecret}&scope=identify&redirect_uri=https://yawaflua.ru/authorize", @$"grant_type=authorization_code&code={Model.code}&client_id={Startup.clientId}&client_secret={Startup.clientSecret}&scope=identify&redirect_uri={Startup.redirectUrl}",
new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded") new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded")
); );
message = await Startup.client.SendAsync(requestMessage); message = await Startup.client.SendAsync(requestMessage);

View File

@@ -2,9 +2,18 @@ using Microsoft.AspNetCore.Hosting;
using yaflay.ru; using yaflay.ru;
public class Program public class Program
{ {
public static void Main() => CreateHostBuilder() public static void Main(string[] args)
{
var parsedArgs = args.FirstOrDefault(k => k.StartsWith("/p:")).Replace("/p:", "").Split(";");
var parse = (string name) => parsedArgs.FirstOrDefault(k => k.StartsWith(name))?.Split("=")[1] ?? null;
Startup.clientId = parse("clientId");
Startup.clientSecret = parse("clientSecret");
Startup.redirectUrl = parse("redirectUrl");
CreateHostBuilder()
.Build() .Build()
.Run(); .Run();
}
private static IHostBuilder CreateHostBuilder() private static IHostBuilder CreateHostBuilder()
{ {
return Host.CreateDefaultBuilder() return Host.CreateDefaultBuilder()

View File

@@ -17,24 +17,22 @@ namespace yaflay.ru
public static HttpClientHandler handler = new() { CookieContainer = cookieContainer}; public static HttpClientHandler handler = new() { CookieContainer = cookieContainer};
public static HttpClient client = new(handler); public static HttpClient client = new(handler);
public static AppDbContext? dbContext; public static AppDbContext? dbContext;
public static string applicationId; public static string? clientId = null;
public static string appToken; public static string? clientSecret = null;
public static string clientId; public static string? redirectUrl = null;
public static string clientSecret;
public static string redirectUrl;
public Startup() public Startup()
{ {
configuration = new ConfigurationBuilder() configuration = new ConfigurationBuilder()
.AddEnvironmentVariables(prefix: "m.") .AddEnvironmentVariables(prefix: "m.")
.AddJsonFile("appsettings.json", optional: false) .AddJsonFile("appsettings.json", optional: true)
.Build(); .Build();
if (clientId == null | clientSecret == null | redirectUrl == null)
{
clientId = configuration.GetValue<string>("clientId");
clientSecret = configuration.GetValue<string>("clientSecret");
redirectUrl = configuration.GetValue<string>("redirectUrl");
}
Console.WriteLine(configuration.GetValue<string>("applicationId"));
applicationId = configuration.GetValue<string>("applicationId");
appToken = configuration.GetValue<string>("appToken");
clientId = configuration.GetValue<string>("clientId");
clientSecret = configuration.GetValue<string>("clientSecret");
redirectUrl = configuration.GetValue<string>("redirectUrl");
} }
public void ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {

View File

@@ -5,5 +5,8 @@
"Default": "Information", "Default": "Information",
"Microsoft.AspNetCore": "Warning" "Microsoft.AspNetCore": "Warning"
} }
} },
"clientId": "111111111111",
"clientSecret": "aAbBcCdD",
"redirectUrl": "https://example.com/authorize"
} }