//--- 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; }
//--- 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; }
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(); }
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(); }
//--- 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(); }