Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: getObject and fGetObject #1225

Merged
merged 29 commits into from
Dec 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
13a7696
update
trim21 Oct 31, 2023
79d121d
fix test
trim21 Oct 31, 2023
87303f6
Update API.md
trim21 Oct 31, 2023
2123db3
Update API.md
trim21 Oct 31, 2023
7ca02ac
docs
trim21 Oct 31, 2023
a89b4ae
Update get-partialobject.js
trim21 Oct 31, 2023
9c3280b
Update get-partialobject.js
trim21 Oct 31, 2023
7163e53
Update API.md
trim21 Oct 31, 2023
f4d600a
Update API.md
trim21 Oct 31, 2023
4e7b208
Update API.md
trim21 Oct 31, 2023
ed27e2a
Merge branch 'master' into getObject
trim21 Nov 3, 2023
c4c3f1b
Merge branch 'master' into getObject
trim21 Nov 14, 2023
7fec665
Merge branch 'master' into getObject
trim21 Nov 18, 2023
041d1ad
Merge branch 'master' into getObject
trim21 Nov 21, 2023
3b7fa2f
Merge branch 'master' into getObject
trim21 Nov 22, 2023
40c0f93
Update docs/zh_CN/API.md
trim21 Nov 22, 2023
97daa9c
Merge branch 'master' into getObject
trim21 Nov 22, 2023
e35ab52
Merge remote-tracking branch 'upstream/master' into getObject
trim21 Nov 28, 2023
7ac81fa
Update get-partialobject.js file extension to .mjs
trim21 Nov 28, 2023
c6274f4
Add fGetObject method to TypedClient
trim21 Nov 28, 2023
7f7b093
update example file
trim21 Nov 28, 2023
a79e92d
Update get-object.js to use async/await syntax
trim21 Nov 28, 2023
05909f7
Add code to get an object from an S3-compatible
trim21 Nov 28, 2023
b823a01
Update minio.d.ts
trim21 Nov 28, 2023
e4e4e3f
Update minio.js
trim21 Nov 28, 2023
993a64a
Merge branch 'master' into getObject
trim21 Nov 29, 2023
2b77475
refactor: `bucketExists` (#1223)
trim21 Nov 30, 2023
f57a18f
Merge remote-tracking branch 'upstream/master' into getObject
trim21 Nov 30, 2023
881ee84
Merge branch 'master' into getObject
prakashsvmx Dec 6, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,14 +187,14 @@ The full API Reference is available here.
#### Full Examples : File Object Operations

- [fput-object.js](https://github.com/minio/minio-js/blob/master/examples/fput-object.js)
- [fget-object.js](https://github.com/minio/minio-js/blob/master/examples/fget-object.js)
- [fget-object.mjs](https://github.com/minio/minio-js/blob/master/examples/fget-object.mjs)

#### Full Examples : Object Operations

- [put-object.js](https://github.com/minio/minio-js/blob/master/examples/put-object.js)
- [get-object.js](https://github.com/minio/minio-js/blob/master/examples/get-object.js)
- [get-object.mjs](https://github.com/minio/minio-js/blob/master/examples/get-object.mjs)
- [copy-object.js](https://github.com/minio/minio-js/blob/master/examples/copy-object.js)
- [get-partialobject.js](https://github.com/minio/minio-js/blob/master/examples/get-partialobject.js)
- [get-partialobject.mjs](https://github.com/minio/minio-js/blob/master/examples/get-partialobject.mjs)
- [remove-object.js](https://github.com/minio/minio-js/blob/master/examples/remove-object.js)
- [remove-incomplete-upload.js](https://github.com/minio/minio-js/blob/master/examples/remove-incomplete-upload.js)
- [stat-object.mjs](https://github.com/minio/minio-js/blob/master/examples/stat-object.mjs)
Expand Down
6 changes: 3 additions & 3 deletions README_zh_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,13 +161,13 @@ mc ls play/europetrip/

#### 完整示例 : 操作文件对象
* [fput-object.js](https://github.com/minio/minio-js/blob/master/examples/fput-object.js)
* [fget-object.js](https://github.com/minio/minio-js/blob/master/examples/fget-object.js)
* [fget-object.mjs](https://github.com/minio/minio-js/blob/master/examples/fget-object.mjs)

#### 完整示例 : 操作对象
* [put-object.js](https://github.com/minio/minio-js/blob/master/examples/put-object.js)
* [get-object.js](https://github.com/minio/minio-js/blob/master/examples/get-object.js)
* [get-object.mjs](https://github.com/minio/minio-js/blob/master/examples/get-object.mjs)
* [copy-object.js](https://github.com/minio/minio-js/blob/master/examples/copy-object.js)
* [get-partialobject.js](https://github.com/minio/minio-js/blob/master/examples/get-partialobject.js)
* [get-partialobject.mjs](https://github.com/minio/minio-js/blob/master/examples/get-partialobject.mjs)
* [remove-object.js](https://github.com/minio/minio-js/blob/master/examples/remove-object.js)
* [remove-incomplete-upload.js](https://github.com/minio/minio-js/blob/master/examples/remove-incomplete-upload.js)
* [stat-object.mjs](https://github.com/minio/minio-js/blob/master/examples/stat-object.mjs)
Expand Down
116 changes: 46 additions & 70 deletions docs/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -878,42 +878,37 @@ s3Client.removeBucketEncryption('my-bucketname', function (err) {

<a name="getObject"></a>

### getObject(bucketName, objectName, getOpts[, callback])
### getObject(bucketName, objectName, getOpts)

Downloads an object as a stream.

**Parameters**

| Param | Type | Description |
| ----------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `bucketName` | _string_ | Name of the bucket. |
| `objectName` | _string_ | Name of the object. |
| `getOpts` | _object_ | Version of the object in the form `{versionId:"my-versionId"}`. Default is `{}`. (optional) |
| `callback(err, stream)` | _function_ | Callback is called with `err` in case of error. `stream` is the object content stream. If no callback is passed, a `Promise` is returned. |
| Param | Type | Description |
| ------------ | -------- | ------------------------------------------------------------------------------------------- |
| `bucketName` | _string_ | Name of the bucket. |
| `objectName` | _string_ | Name of the object. |
| `getOpts` | _object_ | Version of the object in the form `{versionId:"my-versionId"}`. Default is `{}`. (optional) |

**Return Value**

| Param | Type | Description |
| -------- | -------- | ----------------------------------- |
| `stream` | _Stream_ | Stream emitting the object content. |
| Param | Type | Description |
| -------- | ----------------- | ----------------------------------- |
| `stream` | `stream.Readable` | Stream emitting the object content. |

**Example**

```js
let size = 0
minioClient.getObject('mybucket', 'photo.jpg', function (err, dataStream) {
if (err) {
return console.log(err)
}
dataStream.on('data', function (chunk) {
size += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + size)
})
dataStream.on('error', function (err) {
console.log(err)
})
const dataStream = await minioClient.getObject('mybucket', 'photo.jpg')
dataStream.on('data', function (chunk) {
size += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + size)
})
dataStream.on('error', function (err) {
console.log(err)
})
```

Expand All @@ -923,19 +918,15 @@ Get a specific object version.

```js
let size = 0
minioClient.getObject('mybucket', 'photo.jpg', { versionId: 'my-versionId' }, function (err, dataStream) {
if (err) {
return console.log(err)
}
dataStream.on('data', function (chunk) {
size += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + size)
})
dataStream.on('error', function (err) {
console.log(err)
})
const dataStream = await minioClient.getObject('mybucket', 'photo.jpg', { versionId: 'my-versionId' })
dataStream.on('data', function (chunk) {
size += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + size)
})
dataStream.on('error', function (err) {
console.log(err)
})
```

Expand Down Expand Up @@ -967,19 +958,15 @@ Downloads the specified range bytes of an object as a stream.
```js
let size = 0
// reads 30 bytes from the offset 10.
minioClient.getPartialObject('mybucket', 'photo.jpg', 10, 30, function (err, dataStream) {
if (err) {
return console.log(err)
}
dataStream.on('data', function (chunk) {
size += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + size)
})
dataStream.on('error', function (err) {
console.log(err)
})
const dataStream = await minioClient.getPartialObject('mybucket', 'photo.jpg', 10, 30)
dataStream.on('data', function (chunk) {
size += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + size)
})
dataStream.on('error', function (err) {
console.log(err)
})
```

Expand All @@ -989,27 +976,16 @@ To get a specific version of an object
```js
const versionedObjSize = 0
// reads 30 bytes from the offset 10.
minioClient.getPartialObject(
'mybucket',
'photo.jpg',
10,
30,
{ versionId: 'my-versionId' },
function (err, dataStream) {
if (err) {
return console.log(err)
}
dataStream.on('data', function (chunk) {
versionedObjSize += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + versionedObjSize)
})
dataStream.on('error', function (err) {
console.log(err)
})
},
)
const dataStream = await minioClient.getPartialObject('mybucket', 'photo.jpg', 10, 30, { versionId: 'my-versionId' })
dataStream.on('data', function (chunk) {
versionedObjSize += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + versionedObjSize)
})
dataStream.on('error', function (err) {
console.log(err)
})
```

<a name="fGetObject"></a>
Expand Down
53 changes: 22 additions & 31 deletions docs/zh_CN/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ Stream.on('error', function(err) {
## 3. 操作对象

<a name="getObject"></a>
### getObject(bucketName, objectName[, callback])
### async getObject(bucketName, objectName,[ getOpts]): Promise<stream.Readable>

下载对象。

Expand All @@ -348,63 +348,54 @@ __参数__
|---|---|---|
|`bucketName` | _string_ | 存储桶名称。 |
|`objectName` | _string_ | 对象名称。 |
|`callback(err, stream)` | _function_ | 回调函数,第一个参数是错误信息。`stream`是对象的内容。如果没有传callback的话,则返回一个`Promise`对象。 |
|`getOpts` | _string_ | 对象名称。 |

__示例__


```js
let size = 0
minioClient.getObject('mybucket', 'photo.jpg', function(err, dataStream) {
if (err) {
return console.log(err)
}
dataStream.on('data', function(chunk) {
const dataStream = await minioClient.getObject('mybucket', 'photo.jpg')
dataStream.on('data', function(chunk) {
size += chunk.length
})
dataStream.on('end', function() {
})
dataStream.on('end', function() {
console.log('End. Total size = ' + size)
})
dataStream.on('error', function(err) {
})
dataStream.on('error', function(err) {
console.log(err)
})
})
```
<a name="getPartialObject"></a>
### getPartialObject(bucketName, objectName, offset, length[, callback])
### async getPartialObject(bucketName, objectName, offset,[ length, getOpts]): Promise<stream.Readable>

下载对象中指定区间的字节数组,并返回流。

__参数__


| 参数 | 类型 | 描述 |
|---|---|---|
| `bucketName` | _string_ | 存储桶名称。 |
| `objectName` | _string_ | 对象名称。 |
| `offset` | _number_ | `offset`是从第几个字节始 |
| `length` | _number_ | `length`是要下载的字节数组长度(可选值,如果为空的话则代表从offset一直到文件的末尾)。 |
|`callback(err, stream)` | _function_ | 回调函数,第一个参数是错误信息。`stream`是对象的内容。如果没有传callback的话,则返回一个`Promise`对象。 |

| 参数 | 类型 | 描述 |
|---|---|----------------------------------------------------|
| `bucketName` | _string_ | 存储桶名称。 |
| `objectName` | _string_ | 对象名称。 |
| `offset` | _number_ | `offset`是从第几个字节始 |
| `length` | _number_ | `length`是要下载的字节数组长度(可选值,如果为空的话则代表从offset一直到文件的末尾)。 |
| `getOpts` | object| 获取对象时的额外选项,例如:`{versionId: '...'}` |
__示例__


```js
let size = 0
// reads 30 bytes from the offset 10.
minioClient.getPartialObject('mybucket', 'photo.jpg', 10, 30, function(err, dataStream) {
if (err) {
return console.log(err)
}
dataStream.on('data', function(chunk) {
const dataStream = await minioClient.getPartialObject('mybucket', 'photo.jpg', 10, 30)
dataStream.on('data', function(chunk) {
size += chunk.length
})
dataStream.on('end', function() {
})
dataStream.on('end', function() {
console.log('End. Total size = ' + size)
})
dataStream.on('error', function(err) {
})
dataStream.on('error', function(err) {
console.log(err)
})
})
```

Expand Down
24 changes: 6 additions & 18 deletions examples/fget-object.js → examples/fget-object.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -26,23 +26,11 @@ const s3Client = new Minio.Client({
})

// Get a full object.
s3Client.fGetObject('my-bucketname', 'my-objectname', '/tmp/objfile', function (e) {
if (e) {
return console.log(e)
}
console.log('done')
})
await s3Client.fGetObject('my-bucketname', 'my-objectname', '/tmp/objfile')
console.log('done')

//To get a specific version of an object
s3Client.fGetObject(
'my-bucketname',
'my-objectname',
'/tmp/objfile',
{ versionId: '03fd1247-90d9-4b71-a27e-209d484a234b' },
function (e) {
if (e) {
return console.log(e)
}
console.log('success')
},
)
await s3Client.fGetObject('my-bucketname', 'my-objectname', '/tmp/objfile', {
versionId: '03fd1247-90d9-4b71-a27e-209d484a234b',
})
console.log('success')
55 changes: 23 additions & 32 deletions examples/get-object.js → examples/get-object.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -27,39 +27,30 @@ const s3Client = new Minio.Client({

let size = 0
// Get a full object.
s3Client.getObject('my-bucketname', 'my-objectname', function (e, dataStream) {
if (e) {
return console.log(e)
}
dataStream.on('data', function (chunk) {
size += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + size)
})
dataStream.on('error', function (e) {
console.log(e)
})
const dataStream1 = await s3Client.getObject('my-bucketname', 'my-objectname')

dataStream1.on('data', function (chunk) {
size += chunk.length
})
dataStream1.on('end', function () {
console.log('End. Total size = ' + size)
})
dataStream1.on('error', function (e) {
console.log(e)
})

//Get a specific version of an object
let versionedObjSize = 0
s3Client.getObject(
'my-versioned-bucket',
'my-versioned-object',
{ versionId: 'my-versionId' },
function (err, dataStream) {
if (err) {
return console.log(err)
}
dataStream.on('data', function (chunk) {
versionedObjSize += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + versionedObjSize)
})
dataStream.on('error', function (err) {
console.log(err)
})
},
)
const dataStream2 = await s3Client.getObject('my-versioned-bucket', 'my-versioned-object', {
versionId: 'my-versionId',
})

dataStream2.on('data', function (chunk) {
versionedObjSize += chunk.length
})
dataStream2.on('end', function () {
console.log('End. Total size = ' + versionedObjSize)
})
dataStream2.on('error', function (err) {
console.log(err)
})
Loading
Loading