<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 99久久国产精品免费一区二区 | 亚洲精品一品区二品区三品区| 亚洲Aⅴ在线无码播放毛片一线天 亚洲avav天堂av在线网毛片 | 5555在线播放免费播放| 亚洲国产精品无码成人片久久 | 国产精品入口麻豆免费观看| 91精品国产亚洲爽啪在线观看| 亚洲欧洲免费视频| 亚洲经典在线中文字幕| 亚洲v国产v天堂a无码久久| 国产一区二区三区亚洲综合 | 日本免费人成视频播放| 国产精品亚洲二区在线| 亚洲第一黄片大全| 日本一道本不卡免费| 亚洲剧场午夜在线观看| 毛色毛片免费观看| 免费无码一区二区| 亚洲国产精品成人精品无码区 | 一二三四在线观看免费中文在线观看| 亚洲成av人片天堂网老年人| 中文字幕手机在线免费看电影| 久久精品国产亚洲麻豆| 波多野结衣中文字幕免费视频| 亚洲中文无码mv| 亚洲国产成人久久综合野外| 免费一级毛片无毒不卡| 亚洲狠狠成人综合网| 久久精品国产亚洲精品| 亚洲免费中文字幕| 免费VA在线观看无码| 亚洲综合一区二区精品导航| 四虎在线视频免费观看| 大地资源中文在线观看免费版| 国产精品亚洲自在线播放页码| 亚洲 综合 国产 欧洲 丝袜| 最好看最新的中文字幕免费| 老司机精品视频免费| 亚洲视频一区在线| 亚洲中文无韩国r级电影| 99热在线精品免费全部my|