sitemap api using node and graphql

Here product details are json format.

function xmlCreation(json_data) {
    const { STATIC_URL } = require('../../global/sitemapconstant');
    const siteMapArray = [`<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">`];
    console.log("xml ", json_data)
    const currentDate = new Date().toISOString();
    siteMapArray.push(...STATIC_URL.map((el, i) => {
        return i == 0 ? (`
         <url>
             <loc>${WEBSITE_CONSTANT.website_url.decodeHTML()}</loc>
             <changefreq>daily</changefreq>
             <priority>1.00</priority>
             <lastmod>${currentDate}</lastmod>
         </url>
         `) : (`
                 <url>
                     <loc>${WEBSITE_CONSTANT.website_url.decodeHTML()}/${el.decodeHTML()}</loc>
                     <changefreq>daily</changefreq>
                     <priority>0.75</priority>
                     <lastmod>${currentDate}</lastmod>
                 </url>
                 `);
    }));

    siteMapArray.push(...json_data.map((el, i) => {
        let encodedItemName = encodeURIComponent(`${el.name.decodeHTML()} (Case -${el.wine_packsize}/${el.wine_bottlesize}cl)`);
        return `
           <url>
               <loc>${WEBSITE_CONSTANT.website_url.decodeHTML()}/product/${el.record_row_id}?${encodedItemName}</loc>
               <changefreq>daily</changefreq>
               <priority>0.95</priority>
               <lastmod>${currentDate}</lastmod>
           </url>
           `;
    }));

    siteMapArray.push(`
     </urlset>
     `);
 const site_map = await server.updatesitemap({ data: siteMapArray.join("") });
   
}
function updatesitemap({ data, headers }) {
    const options = {

        url: WEBSTORE_CONSTANT.upload + 'sitemap',
        method: 'POST',
        headers: {
            //"Content-Length": Buffer.byteLength(data)
            // "Content-Type": "multipart/form-data",
            ...headers
        },
        data: data
    };

    return axios(options)
        .then(function (response) {

            return response.data;
        })
        .catch(function (error) {
            console.log(error);
            return { summary: { status: "SUCCESS", reason: "RECORD_NOT_FOUND" } }
        });

}
node
router.post('/upload/sitemap', (req, res) => {

    let writeStream = fs.createWriteStream("./static/sitemap.xml");
    req.pipe(writeStream);
    writeStream.on('data', function (chunk) {
        //console.log(chunk.toString());
    });
    req.on('error', function (err) {
        //  console.log(err)
    })
    req.on('end', function () {
        let cron_job = {
            "summary": {
                status: "SUCCESS", reason: "RECORD_UPDATED"
            }
        }
        res.send(cron_job);
    })

});

Leave a comment

Your email address will not be published. Required fields are marked *