public Database(string accountConnection, IAccountStore accountStore, string playerConnection, IPlayerStore playerStore, string guildConnection, IGuildStore guildStore) { _accountStore = accountStore; _playerStore = playerStore; _guildStore = guildStore; _accountStore.Connect(accountConnection); _playerStore.Connect(playerConnection); _guildStore.Connect(guildConnection); }
public async Task Invoke(HttpContext ctx, IOptions <DiscordOAuthOptions> options, IServiceProvider provider, IGuildStore guildStore, ILogger <DiscordCodeTokenExchangeMiddleware> logger) { var error = ctx.Request.Query["error"].FirstOrDefault(); if (!string.IsNullOrEmpty(error)) { var description = ctx.Request.Query["error_description"]; logger.LogWarning($"Error received from Discord:{error}:{description}. Redirecting to error page."); var location = $"{options.Value.ErrorRedirectUri}?details={WebUtility.UrlEncode(error)}"; ctx.Response.Redirect((location)); return; } logger.LogInformation("Installing discord bot!"); var redirectUri = new Uri($"{ctx.Request.Scheme}://{ctx.Request.Host.Value}{ctx.Request.PathBase.Value}"); var code = ctx.Request.Query["code"].FirstOrDefault(); var guildId = ctx.Request.Query["guild_id"].FirstOrDefault(); if (string.IsNullOrEmpty(code)) { logger.LogWarning("No code received"); var location = $"{options.Value.ErrorRedirectUri}?details=no_code"; ctx.Response.Redirect(location); return; } var httpClient = new HttpClient(); var parameters = new List <KeyValuePair <string, string> > { new ("code", code), new ("client_id", options.Value.CLIENT_ID), new ("client_secret", options.Value.CLIENT_SECRET), new ("grant_type", "authorization_code"), new ("redirect_uri", redirectUri.ToString()) };