示例#1
0
        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);
        }
示例#2
0
    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())
        };