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
{
///
/// Adds the DiscordRestClient as a Scoped Service to be able to use through DI.
///
/// This is the IServiceCollection where all the services are located.
/// Set this to true to use proxies, default is false.
///
public static IServiceCollection AddDiscordRestClient(this IServiceCollection services, bool useProxy = false)
{
services.AddHttpClient("HttpClientFactoryRestClientProvider")
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip,
UseCookies = false,
UseProxy = useProxy,
});
//services.AddScoped(provider => new HttpClientFactoryRestClientProvider(provider.GetRequiredService()));
services.AddSingleton(provider =>
{
var config = new DiscordRestConfig
{
RestClientProvider = url => new HttpClientFactoryRestClient(url, provider.GetRequiredService().CreateClient("HttpClientFactoryRestClientProvider"), useProxy)
};
return new DiscordRestClient(config);
});
return services;
}
}
}