예제 #1
0
        public ChunkedSignatureTests()
        {
            S3Config config = new S3Config(new StringAccessKey("AKIAIOSFODNN7EXAMPLE", "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"), AwsRegion.UsEast1);

            _options = Options.Create(config);

            SigningKeyBuilder keyBuilder = new SigningKeyBuilder(_options, NullLogger <SigningKeyBuilder> .Instance);

            _scopeBuilder      = new ScopeBuilder(_options);
            _sigBuilder        = new SignatureBuilder(keyBuilder, _scopeBuilder, NullLogger <SignatureBuilder> .Instance, _options);
            _chunkedSigBuilder = new ChunkedSignatureBuilder(keyBuilder, _scopeBuilder, NullLogger <ChunkedSignatureBuilder> .Instance);
            _authHeaderBuilder = new AuthorizationHeaderBuilder(_options, _scopeBuilder, _sigBuilder, NullLogger <AuthorizationHeaderBuilder> .Instance);
        }
        public ChunkedSignatureTests()
        {
            S3Config config = new S3Config(new StringAccessKey("AKIAIOSFODNN7EXAMPLE", "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"), AwsRegion.UsEast1);

            //The tests here have signatures built using path style
            config.NamingMode = NamingMode.PathStyle;

            _options = Options.Create(config);

            SigningKeyBuilder keyBuilder = new SigningKeyBuilder(_options, NullLogger <SigningKeyBuilder> .Instance);

            _scopeBuilder      = new ScopeBuilder(_options);
            _sigBuilder        = new SignatureBuilder(keyBuilder, _scopeBuilder, NullLogger <SignatureBuilder> .Instance, _options);
            _chunkedSigBuilder = new ChunkedSignatureBuilder(keyBuilder, _scopeBuilder, NullLogger <ChunkedSignatureBuilder> .Instance);
            _authBuilder       = new HeaderAuthorizationBuilder(_options, _scopeBuilder, _sigBuilder, NullLogger <HeaderAuthorizationBuilder> .Instance);
        }
예제 #3
0
        public SignatureBenchmarks()
        {
            S3Config config = new S3Config(new StringAccessKey("AKIAIOSFODNN7EXAMPLE", "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"), AwsRegion.UsEast1);

            config.PayloadSignatureMode = SignatureMode.FullSignature;

            IOptions <S3Config> options = Options.Create(config);

            _signingKeyBuilder = new SigningKeyBuilder(options, NullLogger <SigningKeyBuilder> .Instance);
            IScopeBuilder scopeBuilder = new ScopeBuilder(options);

            _signatureBuilder = new SignatureBuilder(_signingKeyBuilder, scopeBuilder, NullLogger <SignatureBuilder> .Instance, options);
            _chunkSigBuilder  = new ChunkedSignatureBuilder(_signingKeyBuilder, scopeBuilder, NullLogger <ChunkedSignatureBuilder> .Instance);

            byte[] data = Encoding.UTF8.GetBytes("Hello world");

            _req = new PutObjectRequest("examplebucket", "benchmark", new MemoryStream(data));
            _req.SetHeader(AmzHeaders.XAmzContentSha256, CryptoHelper.Sha256Hash(data).HexEncode());

            _date = DateTimeOffset.UtcNow;
        }
예제 #4
0
        private void Initialize(IOptions <S3Config> options, INetworkDriver networkDriver, ILoggerFactory loggerFactory)
        {
            Assembly assembly = typeof(S3Config).Assembly;

            SimpleServiceProvider provider = new SimpleServiceProvider((typeof(IOptions <S3Config>), options));

            IEnumerable <IValidator>       validators       = CreateInstances <IValidator>(assembly, provider);
            IEnumerable <IRequestMarshal>  requestMarshals  = CreateInstances <IRequestMarshal>(assembly, provider);
            IEnumerable <IResponseMarshal> responseMarshals = CreateInstances <IResponseMarshal>(assembly, provider);
            IEnumerable <IPostMapper>      postMappers      = CreateInstances <IPostMapper>(assembly, provider);
            IEnumerable <IRequestWrapper>  requestWrappers  = CreateInstances <IRequestWrapper>(assembly, provider).ToList();
            IEnumerable <IResponseWrapper> responseWrappers = CreateInstances <IResponseWrapper>(assembly, provider).ToList();

            ValidatorFactory           validatorFactory     = new ValidatorFactory(validators);
            IMarshalFactory            marshalFactory       = new MarshalFactory(requestMarshals, responseMarshals);
            IPostMapperFactory         postMapperFactory    = new PostMapperFactory(postMappers);
            IScopeBuilder              scopeBuilder         = new ScopeBuilder(options);
            ISigningKeyBuilder         signingKeyBuilder    = new SigningKeyBuilder(options, loggerFactory.CreateLogger <SigningKeyBuilder>());
            ISignatureBuilder          signatureBuilder     = new SignatureBuilder(signingKeyBuilder, scopeBuilder, loggerFactory.CreateLogger <SignatureBuilder>(), options);
            HeaderAuthorizationBuilder authorizationBuilder = new HeaderAuthorizationBuilder(options, scopeBuilder, signatureBuilder, loggerFactory.CreateLogger <HeaderAuthorizationBuilder>());

            ChunkedSignatureBuilder            chunkedBuilder       = new ChunkedSignatureBuilder(signingKeyBuilder, scopeBuilder, loggerFactory.CreateLogger <ChunkedSignatureBuilder>());
            ChunkedContentRequestStreamWrapper chunkedStreamWrapper = new ChunkedContentRequestStreamWrapper(options, chunkedBuilder, signatureBuilder);

            DefaultRequestHandler requestHandler = new DefaultRequestHandler(options, validatorFactory, marshalFactory, postMapperFactory, networkDriver, authorizationBuilder, loggerFactory.CreateLogger <DefaultRequestHandler>(), new[] { chunkedStreamWrapper });

            ObjectOperations objectOperations = new ObjectOperations(requestHandler, requestWrappers, responseWrappers);

            _objectClient = new S3ObjectClient(objectOperations);

            BucketOperations bucketOperations = new BucketOperations(requestHandler);

            _bucketClient = new S3BucketClient(bucketOperations);

            MultipartOperations multipartOperations = new MultipartOperations(requestHandler, requestWrappers, responseWrappers);

            _multipartClient = new S3MultipartClient(multipartOperations, objectOperations);

            Transfer = new Transfer(objectOperations, multipartOperations);
        }
예제 #5
0
    public ChunkedSignatureTests()
    {
        ServiceCollection services = new ServiceCollection();

        services.AddLogging();

        SimpleS3CoreServices.AddSimpleS3Core(services).UseAmazonS3(x =>
        {
            x.Credentials = new StringAccessKey("AKIAIOSFODNN7EXAMPLE", "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY");
            x.Region      = AmazonS3Region.UsEast1;

            //The tests here have signatures built using path style
            x.NamingMode = NamingMode.PathStyle;
        });

        ServiceProvider?provider = services.BuildServiceProvider();

        _scopeBuilder      = (ScopeBuilder)provider.GetRequiredService <IScopeBuilder>();
        _sigBuilder        = (SignatureBuilder)provider.GetRequiredService <ISignatureBuilder>();
        _chunkedSigBuilder = (ChunkedSignatureBuilder)provider.GetRequiredService <IChunkedSignatureBuilder>();
        _authBuilder       = provider.GetRequiredService <HeaderAuthorizationBuilder>();
        _config            = provider.GetRequiredService <IOptions <SimpleS3Config> >().Value;
    }