Home Reference Source Test

packages/causality-utils/src/bufferUtils.js

import { default as  fetch } from './fetch';
/**
 * This BufferUtils class provide methods
 * for fetch/write/read buffer
 * @todo: verify on web environment
 * @class BufferUtils
 */
class BufferUtils{
    
    constructor(fetch){
        this.fetch = fetch;
        this.fs = require('fs');
    }
    
    /**
     * fetch buffer content from given url
     * @todo enhance reject case
     * @param { URL } url - url for csv content
     * @returns { Promise } - data promise with data if success
     * @memberof BufferUtils
     */
    async fetchBuffer(url){
        let data = await fetch.fetchData(url);
        return await new Buffer.from(data);
    }

    /**
     * write buffer content from given content
     * @todo enhance reject case
     * @param { URL } url - url for csv content
     * @returns { Promise } - data promise with data if success
     * @memberof BufferUtils
     */
    async writeBuffer(data, filePath){
        const fs = this.fs;
        if(!fs.writeFile){
            throw Error('method is not supported');
        }
        return new Promise(async (resolve, reject)=>{
            fs.writeFile(filePath, data, (err)=>{
                if(err){
                    reject(err);
                }
                else{
                    resolve(filePath);
                }
            });
        });
    }

    /**
     * fetch buffer content from given url
     * @todo enhance reject case
     * @param { URL } url - url for csv content
     * @returns { Promise } - data promise with data if success
     * @memberof BufferUtils
     */
    readBuffer(filePath){
        const fs = this.fs;
        if(!fs.readFile){
            throw Error('method is not supported');
        }
        return new Promise(async (resolve, reject)=>{
            fs.readFile(filePath, (err, data)=>{
                if(err){
                    reject(err);
                }
                else{
                    resolve(Buffer.from(data));
                }
            });
        });
    }
}
export default new BufferUtils();