public async Task UploadFileAsync(string filename, Stream file, CancellationToken cancellationToken) { var buffer = new byte[500]; int read; int offset = 0; while ((read = await file.ReadAsync(buffer, 0, buffer.Length, cancellationToken).ConfigureAwait(false)) != -1) { var request = new PutFile { Name = filename, Offset = offset, Data = Convert.ToBase64String(buffer, 0, read), }; await SendAsync <PutFile, PutFileResp>(request, cancellationToken).ConfigureAwait(false); offset += read; } var eof = new PutFile { Name = filename, Offset = offset, Eof = true }; await SendAsync <PutFile, PutFileResp>(eof, cancellationToken).ConfigureAwait(false); }
public void CanSerializePutFile() { var putFile = new PutFile { Name = ":license", Data = "bnNlRmlsZT4=", Offset = 1000, }; var xml = _serializer.Serialize(putFile); Assert.AreEqual("<PutFile name=\":license\" offset=\"1000\" data=\"bnNlRmlsZT4=\" />", xml); putFile = new PutFile { Name = ":license", Eof = true, Offset = 1008, }; xml = _serializer.Serialize(putFile); Assert.AreEqual("<PutFile name=\":license\" offset=\"1008\" data=\"\" eof=\"true\" />", xml); }