private static async Task<int> ExecuteAsync(Options options) { // build the implementation models using (var stdin = Console.OpenStandardInput()) { var client = new Client(new SystemTime(), new PathBuilder()); if (options.OnlyUnique) { var uniqueClient = new UniqueClient(client); // we have to buffer the input for byte-by-byte comparison using (var buffer = new MemoryStream()) { await stdin.CopyToAsync(buffer); buffer.Seek(0, SeekOrigin.Begin); var request = new UniqueUploadRequest { ConnectionString = options.ConnectionString, Container = options.Container, ContentType = options.ContentType, PathFormat = options.PathFormat, Stream = buffer, EqualsAsync = null, UploadDirect = !options.NoDirect, Trace = Console.Out }; // upload await uniqueClient.UploadAsync(request); } } else { var request = new UploadRequest { ConnectionString = options.ConnectionString, Container = options.Container, ContentType = options.ContentType, PathFormat = options.PathFormat, UploadDirect = !options.NoDirect, UploadLatest = !options.NoLatest, Stream = stdin, Trace = Console.Out }; // upload await client.UploadAsync(request); } } return 0; }
public TestContext() { // data UtcNow = new DateTimeOffset(2015, 1, 2, 3, 4, 5, 6, TimeSpan.Zero); Content = "newContent"; Container = TestSupport.GetTestContainer(); EqualsAsyncCalled = false; UniqueUploadRequest = new UniqueUploadRequest { ConnectionString = TestSupport.ConnectionString, Container = Container, ContentType = "text/plain", PathFormat = "testpath/{0}.txt", UploadDirect = true, Stream = new MemoryStream(Encoding.UTF8.GetBytes(Content)), Trace = TextWriter.Null, EqualsAsync = async x => { EqualsAsyncCalled = true; var actualContent = await new StreamReader(x.Stream).ReadLineAsync(); return actualContent == Content; } }; GetLatestRequest = new GetLatestRequest { ConnectionString = UniqueUploadRequest.ConnectionString, Container = UniqueUploadRequest.Container, PathFormat = UniqueUploadRequest.PathFormat, Trace = TextWriter.Null }; // dependencies SystemTime = new Mock<ISystemTime>(); PathBuilder = new PathBuilder(); Client = new Client(SystemTime.Object, PathBuilder); // setup SystemTime.Setup(x => x.UtcNow).Returns(() => UtcNow); // target Target = new UniqueClient(Client); }