diff options
author | Rutger Broekhoff | 2023-12-29 21:31:53 +0100 |
---|---|---|
committer | Rutger Broekhoff | 2023-12-29 21:31:53 +0100 |
commit | 404aeae4545d2426c089a5f8d5e82dae56f5212b (patch) | |
tree | 2d84e00af272b39fc04f3795ae06bc48970e57b5 /vendor/github.com/minio/minio-go/v7/core.go | |
parent | 209d8b0187ed025dec9ac149ebcced3462877bff (diff) | |
download | gitolfs3-404aeae4545d2426c089a5f8d5e82dae56f5212b.tar.gz gitolfs3-404aeae4545d2426c089a5f8d5e82dae56f5212b.zip |
Make Nix builds work
Diffstat (limited to 'vendor/github.com/minio/minio-go/v7/core.go')
-rw-r--r-- | vendor/github.com/minio/minio-go/v7/core.go | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/vendor/github.com/minio/minio-go/v7/core.go b/vendor/github.com/minio/minio-go/v7/core.go new file mode 100644 index 0000000..132ea70 --- /dev/null +++ b/vendor/github.com/minio/minio-go/v7/core.go | |||
@@ -0,0 +1,150 @@ | |||
1 | /* | ||
2 | * MinIO Go Library for Amazon S3 Compatible Cloud Storage | ||
3 | * Copyright 2015-2017 MinIO, Inc. | ||
4 | * | ||
5 | * Licensed under the Apache License, Version 2.0 (the "License"); | ||
6 | * you may not use this file except in compliance with the License. | ||
7 | * You may obtain a copy of the License at | ||
8 | * | ||
9 | * http://www.apache.org/licenses/LICENSE-2.0 | ||
10 | * | ||
11 | * Unless required by applicable law or agreed to in writing, software | ||
12 | * distributed under the License is distributed on an "AS IS" BASIS, | ||
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
14 | * See the License for the specific language governing permissions and | ||
15 | * limitations under the License. | ||
16 | */ | ||
17 | |||
18 | package minio | ||
19 | |||
20 | import ( | ||
21 | "context" | ||
22 | "io" | ||
23 | "net/http" | ||
24 | |||
25 | "github.com/minio/minio-go/v7/pkg/encrypt" | ||
26 | ) | ||
27 | |||
28 | // Core - Inherits Client and adds new methods to expose the low level S3 APIs. | ||
29 | type Core struct { | ||
30 | *Client | ||
31 | } | ||
32 | |||
33 | // NewCore - Returns new initialized a Core client, this CoreClient should be | ||
34 | // only used under special conditions such as need to access lower primitives | ||
35 | // and being able to use them to write your own wrappers. | ||
36 | func NewCore(endpoint string, opts *Options) (*Core, error) { | ||
37 | var s3Client Core | ||
38 | client, err := New(endpoint, opts) | ||
39 | if err != nil { | ||
40 | return nil, err | ||
41 | } | ||
42 | s3Client.Client = client | ||
43 | return &s3Client, nil | ||
44 | } | ||
45 | |||
46 | // ListObjects - List all the objects at a prefix, optionally with marker and delimiter | ||
47 | // you can further filter the results. | ||
48 | func (c Core) ListObjects(bucket, prefix, marker, delimiter string, maxKeys int) (result ListBucketResult, err error) { | ||
49 | return c.listObjectsQuery(context.Background(), bucket, prefix, marker, delimiter, maxKeys, nil) | ||
50 | } | ||
51 | |||
52 | // ListObjectsV2 - Lists all the objects at a prefix, similar to ListObjects() but uses | ||
53 | // continuationToken instead of marker to support iteration over the results. | ||
54 | func (c Core) ListObjectsV2(bucketName, objectPrefix, startAfter, continuationToken, delimiter string, maxkeys int) (ListBucketV2Result, error) { | ||
55 | return c.listObjectsV2Query(context.Background(), bucketName, objectPrefix, continuationToken, true, false, delimiter, startAfter, maxkeys, nil) | ||
56 | } | ||
57 | |||
58 | // CopyObject - copies an object from source object to destination object on server side. | ||
59 | func (c Core) CopyObject(ctx context.Context, sourceBucket, sourceObject, destBucket, destObject string, metadata map[string]string, srcOpts CopySrcOptions, dstOpts PutObjectOptions) (ObjectInfo, error) { | ||
60 | return c.copyObjectDo(ctx, sourceBucket, sourceObject, destBucket, destObject, metadata, srcOpts, dstOpts) | ||
61 | } | ||
62 | |||
63 | // CopyObjectPart - creates a part in a multipart upload by copying (a | ||
64 | // part of) an existing object. | ||
65 | func (c Core) CopyObjectPart(ctx context.Context, srcBucket, srcObject, destBucket, destObject, uploadID string, | ||
66 | partID int, startOffset, length int64, metadata map[string]string, | ||
67 | ) (p CompletePart, err error) { | ||
68 | return c.copyObjectPartDo(ctx, srcBucket, srcObject, destBucket, destObject, uploadID, | ||
69 | partID, startOffset, length, metadata) | ||
70 | } | ||
71 | |||
72 | // PutObject - Upload object. Uploads using single PUT call. | ||
73 | func (c Core) PutObject(ctx context.Context, bucket, object string, data io.Reader, size int64, md5Base64, sha256Hex string, opts PutObjectOptions) (UploadInfo, error) { | ||
74 | hookReader := newHook(data, opts.Progress) | ||
75 | return c.putObjectDo(ctx, bucket, object, hookReader, md5Base64, sha256Hex, size, opts) | ||
76 | } | ||
77 | |||
78 | // NewMultipartUpload - Initiates new multipart upload and returns the new uploadID. | ||
79 | func (c Core) NewMultipartUpload(ctx context.Context, bucket, object string, opts PutObjectOptions) (uploadID string, err error) { | ||
80 | result, err := c.initiateMultipartUpload(ctx, bucket, object, opts) | ||
81 | return result.UploadID, err | ||
82 | } | ||
83 | |||
84 | // ListMultipartUploads - List incomplete uploads. | ||
85 | func (c Core) ListMultipartUploads(ctx context.Context, bucket, prefix, keyMarker, uploadIDMarker, delimiter string, maxUploads int) (result ListMultipartUploadsResult, err error) { | ||
86 | return c.listMultipartUploadsQuery(ctx, bucket, keyMarker, uploadIDMarker, prefix, delimiter, maxUploads) | ||
87 | } | ||
88 | |||
89 | // PutObjectPartOptions contains options for PutObjectPart API | ||
90 | type PutObjectPartOptions struct { | ||
91 | Md5Base64, Sha256Hex string | ||
92 | SSE encrypt.ServerSide | ||
93 | CustomHeader, Trailer http.Header | ||
94 | } | ||
95 | |||
96 | // PutObjectPart - Upload an object part. | ||
97 | func (c Core) PutObjectPart(ctx context.Context, bucket, object, uploadID string, partID int, | ||
98 | data io.Reader, size int64, opts PutObjectPartOptions, | ||
99 | ) (ObjectPart, error) { | ||
100 | p := uploadPartParams{ | ||
101 | bucketName: bucket, | ||
102 | objectName: object, | ||
103 | uploadID: uploadID, | ||
104 | reader: data, | ||
105 | partNumber: partID, | ||
106 | md5Base64: opts.Md5Base64, | ||
107 | sha256Hex: opts.Sha256Hex, | ||
108 | size: size, | ||
109 | sse: opts.SSE, | ||
110 | streamSha256: true, | ||
111 | customHeader: opts.CustomHeader, | ||
112 | trailer: opts.Trailer, | ||
113 | } | ||
114 | return c.uploadPart(ctx, p) | ||
115 | } | ||
116 | |||
117 | // ListObjectParts - List uploaded parts of an incomplete upload.x | ||
118 | func (c Core) ListObjectParts(ctx context.Context, bucket, object, uploadID string, partNumberMarker, maxParts int) (result ListObjectPartsResult, err error) { | ||
119 | return c.listObjectPartsQuery(ctx, bucket, object, uploadID, partNumberMarker, maxParts) | ||
120 | } | ||
121 | |||
122 | // CompleteMultipartUpload - Concatenate uploaded parts and commit to an object. | ||
123 | func (c Core) CompleteMultipartUpload(ctx context.Context, bucket, object, uploadID string, parts []CompletePart, opts PutObjectOptions) (UploadInfo, error) { | ||
124 | res, err := c.completeMultipartUpload(ctx, bucket, object, uploadID, completeMultipartUpload{ | ||
125 | Parts: parts, | ||
126 | }, opts) | ||
127 | return res, err | ||
128 | } | ||
129 | |||
130 | // AbortMultipartUpload - Abort an incomplete upload. | ||
131 | func (c Core) AbortMultipartUpload(ctx context.Context, bucket, object, uploadID string) error { | ||
132 | return c.abortMultipartUpload(ctx, bucket, object, uploadID) | ||
133 | } | ||
134 | |||
135 | // GetBucketPolicy - fetches bucket access policy for a given bucket. | ||
136 | func (c Core) GetBucketPolicy(ctx context.Context, bucket string) (string, error) { | ||
137 | return c.getBucketPolicy(ctx, bucket) | ||
138 | } | ||
139 | |||
140 | // PutBucketPolicy - applies a new bucket access policy for a given bucket. | ||
141 | func (c Core) PutBucketPolicy(ctx context.Context, bucket, bucketPolicy string) error { | ||
142 | return c.putBucketPolicy(ctx, bucket, bucketPolicy) | ||
143 | } | ||
144 | |||
145 | // GetObject is a lower level API implemented to support reading | ||
146 | // partial objects and also downloading objects with special conditions | ||
147 | // matching etag, modtime etc. | ||
148 | func (c Core) GetObject(ctx context.Context, bucketName, objectName string, opts GetObjectOptions) (io.ReadCloser, ObjectInfo, http.Header, error) { | ||
149 | return c.getObject(ctx, bucketName, objectName, opts) | ||
150 | } | ||