Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
b61a86f029 | |||
b9d082f07f | |||
4819dd0bc5 | |||
7250793f95 |
2
package-lock.json
generated
2
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@pushrocks/smartbucket",
|
||||
"version": "1.0.28",
|
||||
"version": "1.0.30",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@pushrocks/smartbucket",
|
||||
"version": "1.0.28",
|
||||
"version": "1.0.30",
|
||||
"description": "simple cloud independent object storage",
|
||||
"main": "dist_ts/index.js",
|
||||
"typings": "dist_ts/index.d.ts",
|
||||
|
@ -76,6 +76,14 @@ tap.test('should correctly build paths for sub directories', async () => {
|
||||
console.log(dir4BasePath);
|
||||
});
|
||||
|
||||
tap.test('should list huge file directory', async () => {
|
||||
const servezoneBucket = await smartbucket.Bucket.getBucketByName(testSmartbucket, 'servezone');
|
||||
const servezoneBaseDirectory = await servezoneBucket.getBaseDirectory();
|
||||
this.brandfileDirectory = await servezoneBaseDirectory.getSubDirectoryByName('brandfiles');
|
||||
const files = servezoneBaseDirectory.listFiles();
|
||||
console.log(files)
|
||||
});
|
||||
|
||||
tap.test('clean up directory style tests', async () => {
|
||||
await myBucket.fastRemove('dir1/file1.txt');
|
||||
await myBucket.fastRemove('dir1/file2.txt');
|
||||
|
@ -65,11 +65,13 @@ export class Bucket {
|
||||
*/
|
||||
public async fastGet(pathArg: string) {
|
||||
const done = plugins.smartpromise.defer();
|
||||
let completeFile: string = '';
|
||||
let completeFile: Buffer;
|
||||
const replaySubject = await this.fastGetStream(pathArg);
|
||||
replaySubject.subscribe(
|
||||
chunkString => {
|
||||
completeFile += chunkString;
|
||||
chunk => {
|
||||
if (completeFile) {
|
||||
completeFile = Buffer.concat([completeFile, chunk]);
|
||||
}
|
||||
},
|
||||
err => {
|
||||
console.log(err);
|
||||
@ -82,15 +84,14 @@ export class Bucket {
|
||||
return completeFile;
|
||||
}
|
||||
|
||||
public async fastGetStream(pathArg: string): Promise<plugins.smartrx.rxjs.ReplaySubject<string>> {
|
||||
public async fastGetStream(pathArg: string): Promise<plugins.smartrx.rxjs.ReplaySubject<Buffer>> {
|
||||
const fileStream = await this.smartbucketRef.minioClient
|
||||
.getObject(this.name, pathArg)
|
||||
.catch(e => console.log(e));
|
||||
const replaySubject = new plugins.smartrx.rxjs.ReplaySubject<string>();
|
||||
const replaySubject = new plugins.smartrx.rxjs.ReplaySubject<Buffer>();
|
||||
const duplexStream = plugins.streamfunction.createDuplexStream<Buffer, Buffer>(
|
||||
async chunk => {
|
||||
const chunkString = chunk.toString();
|
||||
replaySubject.next(chunkString);
|
||||
replaySubject.next(chunk);
|
||||
return chunk;
|
||||
},
|
||||
async cb => {
|
||||
|
@ -44,7 +44,7 @@ export class Directory {
|
||||
let basePath = '';
|
||||
for (const parentDir of parentDirectories) {
|
||||
if (parentDir.name === '') {
|
||||
basePath = this.name;
|
||||
basePath = this.name + '/';
|
||||
continue;
|
||||
}
|
||||
basePath = parentDir.name + '/' + this.name;
|
||||
@ -57,13 +57,17 @@ export class Directory {
|
||||
*/
|
||||
public async listFiles(): Promise<File[]> {
|
||||
const done = plugins.smartpromise.defer();
|
||||
const fileNameStream = await this.bucketRef.smartbucketRef.minioClient.listObjects(
|
||||
const fileNameStream = await this.bucketRef.smartbucketRef.minioClient.listObjectsV2(
|
||||
this.bucketRef.name,
|
||||
this.getBasePath()
|
||||
this.getBasePath(),
|
||||
false
|
||||
);
|
||||
const fileArray: File[] = [];
|
||||
const duplexStream = plugins.streamfunction.createDuplexStream<plugins.minio.BucketItem, void>(
|
||||
async bucketItem => {
|
||||
if (bucketItem.prefix) {
|
||||
return;
|
||||
}
|
||||
if (!bucketItem.name) {
|
||||
return;
|
||||
}
|
||||
@ -89,15 +93,19 @@ export class Directory {
|
||||
*/
|
||||
public async listDirectories(): Promise<Directory[]> {
|
||||
const done = plugins.smartpromise.defer();
|
||||
const completeDirStream = await this.bucketRef.smartbucketRef.minioClient.listObjects(
|
||||
const basePath = this.getBasePath();
|
||||
const completeDirStream = await this.bucketRef.smartbucketRef.minioClient.listObjectsV2(
|
||||
this.bucketRef.name,
|
||||
this.getBasePath(),
|
||||
true
|
||||
false
|
||||
);
|
||||
const directoryArray: Directory[] = [];
|
||||
const duplexStream = plugins.streamfunction.createDuplexStream<plugins.minio.BucketItem, void>(
|
||||
async bucketItem => {
|
||||
let subtractedPath = bucketItem.name.replace(this.getBasePath(), '');
|
||||
if (bucketItem.name) {
|
||||
return;
|
||||
}
|
||||
let subtractedPath = bucketItem.prefix.replace(this.getBasePath(), '');
|
||||
if (subtractedPath.startsWith('/')) {
|
||||
subtractedPath = subtractedPath.substr(1);
|
||||
}
|
||||
@ -122,7 +130,7 @@ export class Directory {
|
||||
* gets an array that has all objects with a certain prefix;
|
||||
*/
|
||||
public async getTreeArray() {
|
||||
const treeArray = await this.bucketRef.smartbucketRef.minioClient.listObjects(
|
||||
const treeArray = await this.bucketRef.smartbucketRef.minioClient.listObjectsV2(
|
||||
this.bucketRef.name,
|
||||
this.getBasePath(),
|
||||
true
|
||||
@ -176,7 +184,7 @@ export class Directory {
|
||||
return result;
|
||||
}
|
||||
|
||||
public async fastGetStream(pathArg: string): Promise<plugins.smartrx.rxjs.ReplaySubject<string>> {
|
||||
public async fastGetStream(pathArg: string): Promise<plugins.smartrx.rxjs.ReplaySubject<Buffer>> {
|
||||
const path = plugins.path.join(this.getBasePath(), pathArg);
|
||||
const result = await this.bucketRef.fastGetStream(path);
|
||||
return result;
|
||||
|
Reference in New Issue
Block a user