public async Task <ProgramDetails> PublishAsync(ProgramDetails program, Package package) { Ensure.NotNull(program, nameof(program)); Ensure.NotNull(package, nameof(package)); using (var stream = new MemoryStream()) { await package.ToZipStreamAsync(stream, leaveStreamOpen : true); stream.Position = 0; return(await api.PutStreamAsync <ProgramDetails>( path : $"/programs/{program.Id}@{program.Version}", contentType : "application/zip", stream : stream, properties : JsonObject.FromObject(program) )); } }