<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. 閱讀(288) 評論(0)  編輯  收藏

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


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 成人免费网站视频www| 国国内清清草原免费视频99 | 一区二区三区视频免费观看| 亚洲欧洲精品一区二区三区| 男女污污污超污视频免费在线看| 久久亚洲私人国产精品vA| 亚洲国产成人乱码精品女人久久久不卡| 真人做人试看60分钟免费视频| 亚洲AV无码国产精品色| 亚洲AV无码一区东京热久久 | 亚洲a视频在线观看| 亚洲VA成无码人在线观看天堂| 亚洲国产小视频精品久久久三级| 免费黄色一级毛片| **真实毛片免费观看| 久久国产精品2020免费m3u8| 波霸在线精品视频免费观看| 日韩在线视频线视频免费网站| 亚洲国产aⅴ成人精品无吗| 亚洲资源最新版在线观看| 亚洲精品**中文毛片| 亚洲黄色在线电影| 久久亚洲精品无码VA大香大香| 亚洲AV无码日韩AV无码导航 | 一区二区免费视频| 久久大香伊焦在人线免费| a级男女仿爱免费视频| 久久精品国产亚洲av麻豆蜜芽 | 日韩精品免费一级视频| 亚洲av日韩综合一区久热| 亚洲砖码砖专无区2023| 亚洲一区二区三区写真 | 全免费a级毛片免费看无码| 久久这里只有精品国产免费10| 18国产精品白浆在线观看免费| 免费在线视频你懂的| 在线看片v免费观看视频777| 免费精品国产自产拍在线观看图片 | 日本黄色动图免费在线观看| 国内精品免费在线观看| 亚洲国产一区二区三区在线观看|