sitemap.js 1.78 KB
'use strict';

// const helpers = global.yoho.helpers;
const _ = require('lodash');
const sm = require('sitemap');
const staticUrls = require('../../../config/staticUrls');
const getStaticUrls = (currentStatics) => {
    let urls = [];

    _.forEach(_.get(currentStatics, 'loc', []), url => {
        urls.push({
            url: url,
            changefreq: currentStatics.changefreq,
            priority: currentStatics.priority
        });
    });


    _.forEach(currentStatics, (value) => {
        _.forEach(value.loc, url => {
            urls.push({
                url: url,
                changefreq: value.changefreq,
                priority: value.priority
            });
        });
    });
    return urls;
};

// www 地图数据
const wwwXmlData = () => {// eslint-disable-line
    return getStaticUrls(_.get(staticUrls, 'www'));
};

// list 地图数据
const listXmlData = () => {// eslint-disable-line
    return getStaticUrls(_.get(staticUrls, 'list'));
};

// item 地图数据
const itemXmlData = () => {// eslint-disable-line
    return getStaticUrls(_.get(staticUrls, 'item'));
};

// guang 地图数据
const guangXmlData = () => {// eslint-disable-line
    return getStaticUrls(_.get(staticUrls, 'guang'));
};

//  站点地图
const siteMap = (req, res) => {
    let siteList = ['www', 'list', 'item', 'guang'],
        subdomain = req.subdomains[0] || 'www';

    if (!siteList.subdomain) {
        res.end();
    }

    sm.createSitemap({
        hostname: `https://${subdomain}.yohobuy.com`,
        urls: eval(subdomain + 'XmlData')() // eslint-disable-line
    }).toXML(function(err, xml) {
        if (err) {
            return res.status(500).end();
        }
        res.header('Content-Type', 'application/xml');
        res.send(xml);
    });
};

module.exports = {
    siteMap
};