<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Bryan

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      37 Posts :: 3 Stories :: 24 Comments :: 0 Trackbacks
    HPE Enovia connector usually generates a lot of xml files in temp folder and It often takes time to list them on linux and we can use this small app to list all the files for a folder in a json format by only using the browser. and we can also get the content of a xml file.

    functions to provide and how to use :
    1. list the content files in a folder, for example /var/user/oemdev/HPEIDOL/IDOLServer/Enovia_1ABackfillCatalog/temp
    http://frmrszvrd006.dc-m.alcatel-lucent.com:8099/listfiles?base_folder=/var/user/oemdev/HPEIDOL/IDOLServer/Enovia_1ABackfillCatalog/temp&page=1&page_size=100

    2. get the content of a file, we should provide the base folder which the file locates
    http://frmrszvrd006.dc-m.alcatel-lucent.com:8099/getcontent?base_folder=/var/user/oemdev/HPEIDOL/IDOLServer/Enovia_1ABackfillCatalog/temp&file=1479950661_45valy5v.xml


    var http = require('http');
    var url = require('url');
    var path = require('path');
    fs = require('fs')

    //load fileslist in a specified folder
    function load_files(base_folder, page, page_size, callback) {
        fs.readdir(base_folder, (err, files) => {
            if (err) {
                console.log(err);
                if (err.code == "ENOENT") {
                    callback(make_error("no_such_folder", "the specified folder " + base_folder + " doesnot exist"));
                } else {
                    callback(make_error("file_error", JSON.stringify(err)));
                }
                return;
            }

            var only_files = [];
            var folder_name = path.basename(base_folder);

            var iterator = (index) => {
                if (index == files.length) {
                    var ps;
                    var start = (page - 1) * page_size;
                    if (start < 0) {
                        start = 0;
                    }
                    ps = only_files.slice(start, start + page_size);
                    var obj = {
                        short_name: folder_name,
                        files_lists: ps
                    };
                    callback(null, obj);
                    return;
                }

                fs.stat(base_folder  +"/" + files[index], (err, stats) => {
                    if (err) {
                        callback(make_error("file_error", JSON.stringify(err)));
                        return;
                    }

                    if (stats.isFile()) {
                        var obj = {
                            filename: files[index],
                            desc: files[index],
                            stats: stats
                        };
                        only_files.push(obj);
                    }
                    iterator(index + 1);
                });
            }
            iterator(0);
        });

    }

    //process the http requests that comes, for example http://frmrszvrd006.dc-m.alcatel-lucent.com:8099/listfiles
    function handle_incoming_request(req, res) {

        req.parsed_url = url.parse(req.url, true);
        var core_url = req.parsed_url.pathname;
        console.log("Incoming requests" + req.method + " " + req.url);
        //list all the files in a folder
        if (core_url.substr(0, 10) == '/listfiles') {
            handle_get_files_list(req, res);
            //get the content of a file
        } else if (core_url.substr(0, 11) == '/getcontent') {
            handle_get_content(req, res);
        } else {
            send_failture(res, 404, invalid_resource());
        }
    }

    //get all the files for a folder, and pagination is supported in the way of ?page=1&page_size=100
    function handle_get_files_list(req, res) {

        var getp = req.parsed_url.query;
        var page_num = getp.page ? parseInt(getp.page) : 1;
        var page_size = getp.page_size ? parseInt(getp.page_size) : 1000;
        var base_folder = getp.base_folder ? getp.base_folder : "/var";

        if (isNaN(parseInt(page_num))) {
            page_num = 1;
        }

        if (isNaN(parseInt(page_size))) {
            page_size = 1000;
        }

        var core_url = req.parsed_url.pathname;

        //core.url -"/listfiles/".length
        load_files(base_folder, page_num, page_size, (err, folder_contents) => {
            if (err && err.error == "no_such_folder") {
                send_failture(res, 404, err);
            } else if (err) {
                send_failture(res, 500, err);
            } else {
                send_success(res, {
                    folder_data: folder_contents
                });
            }
        });
    }

    function handle_get_content(req, res) {

        var getp = req.parsed_url.query;
        var base_folder = getp.base_folder;
        var file = getp.file;
        fs.readFile(base_folder + "/" + file, "utf8", (err, data) => {
            if (err) {
                send_failture(res, 404, err);
                return;
            }
            console.log(data);

            send_success(res, {
                file_content: data
            });
        });

    }

    function send_failture(res, server_code, err) {
        var code = (err.code) ? err.code : err.name
        res.writeHead(server_code, {
            "Content-Type": "application/json"
        });
        res.end(JSON.stringify({
            error: code,
            message: err.message
        }) + "\n");
    }

    function send_success(res, data) {
        res.writeHead(200, {
            'Content-type': 'application/json'
        });
        var output = {
            error: null,
            data: data
        };
        res.end(JSON.stringify(output) + "\n");
    }

    function make_error(err, msg) {
        var e = new Error(msg);
        e.code = err;
        return e;
    }

    function invalid_resource() {
        return make_error("invalid resource", "the requested resource doesnot exist");
    }

    function no_such_folder() {
        return make_error("no_such_folder", "the specified folder doesnot exist");
    }

    function bad_json() {
        return make_error("bad jason", "the jason format is not correct");
    }

    function missing_data(name) {
        return make_error(name + " is missing", "missing data");
    }

    var s = http.createServer(handle_incoming_request);
    s.listen(8099);


    Reference
    Learning Node.js 2nd Edition
    https://nodejs.org/api/fs.html#fs_fs_readfile_path_options_callback
    https://docs.nodejitsu.com/articles/file-system/how-to-read-files-in-nodejs/
    posted on 2017-08-19 20:07 Life is no respector of any genius. 閱讀(287) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 最近2019免费中文字幕视频三| 久久久精品国产亚洲成人满18免费网站 | 最近免费中文字幕mv电影| 亚洲欧洲美洲无码精品VA | 亚洲国产成人高清在线观看| eeuss在线兵区免费观看| 亚洲伊人久久综合影院| 四虎精品免费永久免费视频| 亚洲Av无码乱码在线播放| 五月婷婷免费视频| 亚洲香蕉网久久综合影视| a色毛片免费视频| 亚洲一区二区成人| 91在线视频免费看| 亚洲另类无码一区二区三区| 国产伦一区二区三区免费| 美女啪啪网站又黄又免费| 国产日韩成人亚洲丁香婷婷| 免费无码又爽又刺激网站| 亚洲日韩图片专区第1页| 国产福利在线免费| 猫咪www免费人成网站| 亚洲日韩精品无码一区二区三区| 国产精品免费大片| jlzzjlzz亚洲jzjzjz| 国产精品免费小视频| 久久嫩草影院免费看夜色| 亚洲Aⅴ无码专区在线观看q| 成人免费的性色视频| 久久亚洲中文无码咪咪爱| 亚洲区小说区激情区图片区| 在线观看免费中文视频| 亚洲av无码专区首页| 国产AV无码专区亚洲AV漫画| 永久免费在线观看视频| 婷婷亚洲综合一区二区| 亚洲av永久无码精品国产精品| 日本亚洲免费无线码| a级毛片免费观看网站| 亚洲人成网站在线观看播放青青| 免费看小12萝裸体视频国产 |