using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using System.Net;
using Discord.Net.Rest;
using Discord.Rest.Net;
namespace Discord.Rest.Extensions
{
///
/// Here you will find all the extensions to be able to add a Discord Client to an IServiceCollection
///
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddScopedDiscordRestClient(this IServiceCollection services, bool useProxy = false)
{
services.AddHttpClient("HttpFactoryRestClientProvider")
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip,
UseCookies = false,
UseProxy = useProxy,
});
services.AddTransient(provider => new HttpFactoryRestClientProvider(provider.GetRequiredService()));
services.AddScoped(provider =>
{
var config = new DiscordRestConfig
{
RestClientProvider = provider.GetRequiredService().Instance
};
return new DiscordRestClient(config);
});
return services;
}
public static IServiceCollection AddTransientDiscordRestClient(this IServiceCollection services, bool useProxy = false) //where should we put this useProxy options, I haven't fully understood where the original code takes this from.
{
services.AddHttpClient("HttpFactoryRestClientProvider")
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip,
UseCookies = false,
UseProxy = useProxy,
});
services.AddTransient(provider => new HttpFactoryRestClientProvider(provider.GetRequiredService()));
services.AddTransient(provider =>
{
var config = new DiscordRestConfig
{
RestClientProvider = provider.GetRequiredService().Instance
};
return new DiscordRestClient(config);
});
return services;
}
}
}