Exemplo n.º 1
0
 //--- Constructors ---
 /// <summary>
 /// Create new client instance 
 /// </summary>
 /// <param name="config">Client configuration.</param>
 /// <param name="timerFactory">Timer factory.</param>
 public AmazonS3Client(AmazonS3ClientConfig config, TaskTimerFactory timerFactory)
 {
     _config = config;
     _bucketPlug = Plug.New(_config.S3BaseUri)
         .WithS3Authentication(_config.PrivateKey, _config.PublicKey)
         .WithTimeout(_config.Timeout)
         .At(_config.Bucket);
     _rootPlug = _bucketPlug;
     if(!string.IsNullOrEmpty(_config.RootPath)) {
         _keyRootParts = _config.RootPath.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
         if(_keyRootParts != null && _keyRootParts.Any()) {
             _rootPlug = _rootPlug.At(_keyRootParts);
         }
     }
     _expirationEntries = new ExpiringHashSet<string>(timerFactory);
     _expirationEntries.EntryExpired += OnDelete;
 }
Exemplo n.º 2
0
        //--- Constructors ---

        /// <summary>
        /// Create new client instance
        /// </summary>
        /// <param name="config">Client configuration.</param>
        /// <param name="timerFactory">Timer factory.</param>
        public AmazonS3Client(AmazonS3ClientConfig config, TaskTimerFactory timerFactory)
        {
            _config     = config;
            _bucketPlug = Plug.New(_config.S3BaseUri)
                          .WithS3Authentication(_config.PrivateKey, _config.PublicKey)
                          .WithTimeout(_config.Timeout)
                          .At(_config.Bucket);
            _rootPlug = _bucketPlug;
            if (!string.IsNullOrEmpty(_config.RootPath))
            {
                _keyRootParts = _config.RootPath.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
                if (_keyRootParts != null && _keyRootParts.Any())
                {
                    _rootPlug = _rootPlug.At(_keyRootParts);
                }
            }
            _expirationEntries = new ExpiringHashSet <string>(timerFactory);
            _expirationEntries.EntryExpired += OnDelete;
        }
Exemplo n.º 3
0
 public void Init()
 {
     _config = new AmazonS3ClientConfig {
         S3BaseUri = new XUri("http://s3.amazonaws.com"),
         Bucket = "bucket",
         RootPath = "root/path",
         PrivateKey = "private",
         PublicKey = "public",
     };
     _hostInfo = DreamTestHelper.CreateRandomPortHost();
 }
Exemplo n.º 4
0
 public void Setup()
 {
     _config = new AmazonS3ClientConfig {
         S3BaseUri = Helper.AWS,
         Bucket = "bucket",
         Delimiter = "/",
         RootPath = "root/path",
         PrivateKey = "private",
         PublicKey = "public",
         Timeout = TimeSpan.FromSeconds(30)
     };
     _client = new AmazonS3Client(_config, TaskTimerFactory.Current);
     MockPlug.DeregisterAll();
 }
Exemplo n.º 5
0
        //--- Methods ---
        protected override Yield Start(XDoc config, IContainer container, Result result)
        {
            yield return Coroutine.Invoke(base.Start, config, new Result());

            // are we a private storage service?
            _private = config["sid"].Contents == "sid://mindtouch.com/2010/10/dream/s3.storage.private";
            _log.DebugFormat("storage is {0}", _private ? "private" : "public");

            // is the root blocked from access?
            _privateRoot = config["private-root"].AsBool.GetValueOrDefault();
            _log.DebugFormat("storage root is {0}accessible", _privateRoot ? "not " : "");

            // set up S3 client
            var s3Config = new AmazonS3ClientConfig() {
                S3BaseUri = new XUri(config["baseuri"].AsText.IfNullOrEmpty("http://s3.amazonaws.com")),
                Bucket = config["bucket"].AsText,
                Delimiter = "/",
                RootPath = config["folder"].AsText,
                PrivateKey = config["privatekey"].AsText,
                PublicKey = config["publickey"].AsText,
                Timeout = TimeSpan.FromSeconds(config["timeout"].AsDouble ?? DEFAULT_S3_TIMEOUT)
            };
            if(string.IsNullOrEmpty(s3Config.Bucket)) {
                throw new ArgumentException("missing configuration parameter 'bucket'");
            }
            if(string.IsNullOrEmpty(s3Config.PrivateKey)) {
                throw new ArgumentException("missing configuration parameter 'privatekey'");
            }
            if(string.IsNullOrEmpty(s3Config.PublicKey)) {
                throw new ArgumentException("missing configuration parameter 'publickey'");
            }
            if(!container.IsRegistered(typeof(IAmazonS3Client))) {

                // Note (arnec): registering the client in the container to hand over disposal control to the container
                var builder = new ContainerBuilder();
                builder.Register<AmazonS3Client>().As<IAmazonS3Client>();
                builder.Build(container);
            }
            _s3Client = container.Resolve<IAmazonS3Client>(TypedParameter.From(s3Config));
            result.Return();
        }