Skip to content

Commit 1abfbcb

Browse files
committed
feat: Add copy to container query parameters
1 parent 136a287 commit 1abfbcb

File tree

5 files changed

+28
-8
lines changed

5 files changed

+28
-8
lines changed

src/Docker.DotNet/Endpoints/ContainerOperations.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ public async Task<ContainerArchiveResponse> GetArchiveFromContainerAsync(string
366366
};
367367
}
368368

369-
public Task ExtractArchiveToContainerAsync(string id, ContainerPathStatParameters parameters, Stream stream, CancellationToken cancellationToken = default)
369+
public Task ExtractArchiveToContainerAsync(string id, CopyToContainerParameters parameters, Stream stream, CancellationToken cancellationToken = default)
370370
{
371371
if (string.IsNullOrEmpty(id))
372372
{
@@ -378,7 +378,7 @@ public Task ExtractArchiveToContainerAsync(string id, ContainerPathStatParameter
378378
throw new ArgumentNullException(nameof(parameters));
379379
}
380380

381-
IQueryString queryParameters = new QueryString<ContainerPathStatParameters>(parameters);
381+
IQueryString queryParameters = new QueryString<CopyToContainerParameters>(parameters);
382382

383383
var data = new BinaryRequestContent(stream, "application/x-tar");
384384
return _client.MakeRequestAsync(new[] { NoSuchContainerHandler }, HttpMethod.Put, $"containers/{id}/archive", queryParameters, data, cancellationToken);

src/Docker.DotNet/Endpoints/IContainerOperations.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ public interface IContainerOperations
368368
/// <exception cref="DockerApiException">Permission is denied (the volume or container rootfs is marked read-only),
369369
/// the input is invalid, or the daemon experienced an error.</exception>
370370
/// <exception cref="HttpRequestException">The request failed due to an underlying issue such as network connectivity, DNS failure, server certificate validation or timeout.</exception>
371-
Task ExtractArchiveToContainerAsync(string id, ContainerPathStatParameters parameters, Stream stream, CancellationToken cancellationToken = default);
371+
Task ExtractArchiveToContainerAsync(string id, CopyToContainerParameters parameters, Stream stream, CancellationToken cancellationToken = default);
372372

373373
/// <summary>
374374
/// Deletes stopped containers.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
2+
namespace Docker.DotNet.Models
3+
{
4+
public class CopyToContainerParameters // (main.CopyToContainerParameters)
5+
{
6+
[QueryStringParameter("path", true)]
7+
public string Path { get; set; }
8+
9+
[QueryStringParameter("noOverwriteDirNonDir", false, typeof(BoolQueryStringConverter))]
10+
public bool? AllowOverwriteDirWithFile { get; set; }
11+
12+
[QueryStringParameter("copyUIDGID", false, typeof(BoolQueryStringConverter))]
13+
public bool? CopyUIDGID { get; set; }
14+
}
15+
}

tools/specgen/modeldefs.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,13 @@ type ContainerPathStatParameters struct {
8686
Path string `rest:"query,path,required"`
8787
}
8888

89+
// CopyToContainerParameters for PUT /containers/(id)/archive
90+
type CopyToContainerParameters struct {
91+
Path string `rest:"query,path,required"`
92+
AllowOverwriteDirWithFile bool `rest:"query,noOverwriteDirNonDir"`
93+
CopyUIDGID bool `rest:"query,copyUIDGID"`
94+
}
95+
8996
// ContainerAttachParameters for POST /containers/(id)/attach
9097
type ContainerAttachParameters struct {
9198
Stream bool `rest:"query"`

tools/specgen/specgen.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,9 @@ var dockerTypesToReflect = []reflect.Type{
200200
reflect.TypeOf(ContainerPathStatParameters{}),
201201
reflect.TypeOf(container.PathStat{}),
202202

203+
// PUT /containers/(id)/archive
204+
reflect.TypeOf(CopyToContainerParameters{}),
205+
203206
// POST /containers/(id)/attach
204207
reflect.TypeOf(ContainerAttachParameters{}),
205208

@@ -208,11 +211,6 @@ var dockerTypesToReflect = []reflect.Type{
208211
// GET /containers/(id)/changes
209212
reflect.TypeOf(container.FilesystemChange{}),
210213

211-
// OBSOLETE - POST /containers/(id)/copy
212-
213-
// GET /containers/(id)/export
214-
// TODO: TAR Stream
215-
216214
// POST /containers/(id)/exec
217215
reflect.TypeOf(ContainerExecCreateParameters{}),
218216
reflect.TypeOf(ContainerExecCreateResponse{}),

0 commit comments

Comments
 (0)