Compare commits

..

4 Commits

Author SHA1 Message Date
b61a86f029 1.0.30 2020-06-19 00:42:26 +00:00
b9d082f07f fix(core): update 2020-06-19 00:42:26 +00:00
4819dd0bc5 1.0.29 2020-05-17 19:23:27 +00:00
7250793f95 fix(core): update 2020-05-17 19:23:26 +00:00
5 changed files with 34 additions and 17 deletions

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "@pushrocks/smartbucket",
"version": "1.0.28",
"version": "1.0.30",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -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",

View File

@ -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');

View File

@ -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 => {

View File

@ -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;