예제 #1
0
    /// <summary>Add SimpleS3 services to a service collection.</summary>
    /// <param name="collection">The service collection</param>
    public static IClientBuilder AddAmazonS3(this IServiceCollection collection)
    {
        ICoreBuilder coreBuilder = SimpleS3CoreServices.AddSimpleS3Core(collection);

        coreBuilder.UseAmazonS3();

        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 AmazonS3Client(objectClient, bucketClient, multipartClient, multipartTransfer, transfer, signedObjectClient));
        });

        //Add the client as the interface too
        coreBuilder.Services.AddSingleton <ISimpleClient>(x => x.GetRequiredService <AmazonS3Client>());

        return(new ClientBuilder(collection, httpBuilder, coreBuilder));
    }
예제 #2
0
 protected override void ConfigureCoreBuilder(ICoreBuilder builder)
 {
     builder.UseHttpClientFactory()
     .ConfigurePrimaryHttpMessageHandler(() => _handler)
     .UseRetryPolicy(3, attempt => TimeSpan.Zero)
     // Set an extraordinary timeout
     .UseTimeoutPolicy(TimeSpan.FromSeconds(3));
 }
예제 #3
0
    protected override void ConfigureCoreBuilder(ICoreBuilder coreBuilder, IConfigurationRoot configuration)
    {
        coreBuilder.UseHttpClientFactory()
        .ConfigurePrimaryHttpMessageHandler(() => _handler)
        .UseRetryPolicy(3, attempt => TimeSpan.Zero);

        base.ConfigureCoreBuilder(coreBuilder, configuration);
    }
예제 #4
0
        protected OnlineTestBase(ITestOutputHelper outputHelper)
        {
            ConfigurationBuilder configBuilder = new ConfigurationBuilder();

            configBuilder.AddJsonFile("Config.json", false);

            //Set the configuration from the config file
            IConfigurationRoot configRoot = configBuilder.Build();

            ServiceCollection collection = new ServiceCollection();

            ICoreBuilder coreBuilder = collection.AddSimpleS3Core(config =>
            {
                //Set the configuration from the config file
                configRoot.Bind(config);
            });

            string profileName = configRoot["ProfileName"];

            coreBuilder.UseProfileManager()
            .BindConfigToProfile(profileName)
            .UseDataProtection();

            IHttpClientBuilder httpBuilder = coreBuilder.UseHttpClientFactory();

            httpBuilder.UseTimeoutPolicy(TimeSpan.FromMinutes(10));

            IConfigurationSection proxySection = configRoot.GetSection("Proxy");

            if (proxySection != null && proxySection["UseProxy"].Equals("true", StringComparison.OrdinalIgnoreCase))
            {
                httpBuilder.WithProxy(proxySection["ProxyAddress"]);
            }

            collection.AddLogging(x =>
            {
                x.AddConfiguration(configRoot.GetSection("Logging"));
                x.AddXUnit(outputHelper);
            });

            //A small hack to remove all validators, as we test them separately
            collection.RemoveAll(typeof(IValidator <>));
            collection.RemoveAll <IValidator>();

            _services = collection.BuildServiceProvider();

            BucketName = configRoot["BucketName"] ?? "main-test-bucket-2019";

            ObjectClient       = _services.GetRequiredService <IObjectClient>();
            BucketClient       = _services.GetRequiredService <IBucketClient>();
            MultipartClient    = _services.GetRequiredService <IMultipartClient>();
            Transfer           = _services.GetRequiredService <Fluent.Transfer>();
            SignedObjectClient = _services.GetRequiredService <ISignedObjectClient>();
        }
예제 #5
0
        /// <summary>Add SimpleS3 services to a service collection.</summary>
        /// <param name="collection">The service collection</param>
        public static IS3ClientBuilder AddSimpleS3(this IServiceCollection collection)
        {
            ICoreBuilder coreBuilder = collection.AddSimpleS3Core();

            coreBuilder.UseS3Client();

            IHttpClientBuilder httpBuilder = coreBuilder.UseHttpClientFactory();

            httpBuilder.UseDefaultHttpPolicy();

            return(new S3ClientBuilder(collection, httpBuilder, coreBuilder));
        }
예제 #6
0
        /// <summary>Add SimpleS3 services to a service collection.</summary>
        /// <param name="collection">The service collection</param>
        public static IS3ClientBuilder AddSimpleS3(this IServiceCollection collection)
        {
            S3ClientBuilder builder = new S3ClientBuilder(collection);

            ICoreBuilder clientBuilder = collection.AddSimpleS3Core();

            clientBuilder.UseS3Client();
            builder.CoreBuilder = clientBuilder;

            IHttpClientBuilder httpBuilder = clientBuilder.UseHttpClientFactory();

            httpBuilder.UseDefaultHttpPolicy();
            builder.HttpBuilder = httpBuilder;

            return(builder);
        }
예제 #7
0
파일: Program.cs 프로젝트: Genbox/SimpleS3
    private static ISimpleClient BuildClient(IWebProxy?proxy = null)
    {
        //Create the dependency injection container
        ServiceCollection services = new ServiceCollection();

        //We use Microsoft.Extensions.Logging to log to the console
        services.AddLogging(x => x.AddConsole());

        //Here we create a core client. It has no network driver at this point.
        ICoreBuilder coreBuilder = SimpleS3CoreServices.AddSimpleS3Core(services);

        //We want to use HttpClientFactory as the HTTP driver
        IHttpClientBuilder httpBuilder = coreBuilder.UseHttpClientFactory();

        //Add a default timeout and retry policy
        httpBuilder.UseDefaultHttpPolicy();

        //If you set a proxy, this is where it gets added
        if (proxy != null)
        {
            httpBuilder.UseProxy(proxy);
        }

        //This adds the S3Client service. This service combines ObjectClient, MultipartClient and BucketClient into a single client. Makes it easier for new people to use the library.
        coreBuilder.UseAmazonS3();

        //Here we add the profile manager. It is a profile system that persist your credentials to disk in a very secure way.
        coreBuilder.UseProfileManager()
        .BindConfigToDefaultProfile() //We can either name the profile (so you can have more than one) or use the default one.
        .UseConsoleSetup();           //This adds a service that ask you to setup your profile if it does not exist.

        //Finally we build the service provider and return the S3Client
        IServiceProvider serviceProvider = services.BuildServiceProvider();

        IProfileManager profileManager = serviceProvider.GetRequiredService <IProfileManager>();
        IProfile?       profile        = profileManager.GetDefaultProfile();

        if (profile == null)
        {
            IProfileSetup setup = serviceProvider.GetRequiredService <IProfileSetup>();
            setup.SetupDefaultProfile();
        }

        return(serviceProvider.GetRequiredService <ISimpleClient>());
    }
예제 #8
0
    protected internal ClientBase(IInputValidator inputValidator, SimpleS3Config config, IWebProxy?proxy = null)
    {
        ServiceCollection services = new ServiceCollection();

        services.AddSingleton(inputValidator);
        services.AddSingleton(Options.Create(config));
        services.AddLogging();

        ICoreBuilder builder = SimpleS3CoreServices.AddSimpleS3Core(services);

        IHttpClientBuilder httpBuilder = builder.UseHttpClientFactory();

        if (proxy != null)
        {
            httpBuilder.UseProxy(proxy);
        }

        Build(services);
    }
        public static IS3ClientBuilder AddSimpleS3(this IServiceCollection collection, Action <S3Config> configureS3)
        {
            S3ClientBuilder builder = new S3ClientBuilder(collection);

            ICoreBuilder clientBuilder = collection.AddSimpleS3Core();

            clientBuilder.UseS3Client();
            builder.CoreBuilder = clientBuilder;

            IHttpClientBuilder httpBuilder = clientBuilder.UseHttpClientFactory();

            httpBuilder.UseDefaultHttpPolicy();
            builder.HttpBuilder = httpBuilder;

            if (configureS3 != null)
            {
                collection.Configure(configureS3);
            }

            return(builder);
        }
 protected override void ConfigureCoreBuilder(ICoreBuilder builder)
 {
     builder.UseHttpClientFactory()
     .ConfigurePrimaryHttpMessageHandler(() => _handler)
     .UseRetryPolicy(3, attempt => TimeSpan.Zero);
 }