/// <summary>Add SimpleS3 services to a service collection.</summary> /// <param name="collection">The service collection</param> public static IClientBuilder AddWasabi(this IServiceCollection collection) { ICoreBuilder coreBuilder = SimpleS3CoreServices.AddSimpleS3Core(collection); coreBuilder.UseWasabi(); IHttpClientBuilder httpBuilder = coreBuilder.UseHttpClientFactory(); httpBuilder.UseDefaultHttpPolicy(); coreBuilder.Services.AddSingleton(x => { //We have to call a specific constructor for dependency injection IObjectClient objectClient = x.GetRequiredService <IObjectClient>(); IBucketClient bucketClient = x.GetRequiredService <IBucketClient>(); IMultipartClient multipartClient = x.GetRequiredService <IMultipartClient>(); IMultipartTransfer multipartTransfer = x.GetRequiredService <IMultipartTransfer>(); ITransfer transfer = x.GetRequiredService <ITransfer>(); ISignedObjectClient?signedObjectClient = x.GetRequiredService <ISignedObjectClient>(); return(new WasabiClient(objectClient, bucketClient, multipartClient, multipartTransfer, transfer, signedObjectClient)); }); //Add the client as the interface too coreBuilder.Services.AddSingleton <ISimpleClient>(x => x.GetRequiredService <WasabiClient>()); return(new ClientBuilder(collection, httpBuilder, coreBuilder)); }