-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathsitemap-builder.js
97 lines (77 loc) · 2.31 KB
/
sitemap-builder.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
require("babel-register")({
presets: ["es2015", "react"]
});
// import fetch from "node-fetch";
const router = require('./sitemap-routes').default;
const Sitemap = require('react-router-sitemap').default;
const fs = require('firebase-admin');
const serviceAccount = require('./server/key.json');
fs.initializeApp({
credential: fs.credential.cert(serviceAccount),
databaseURL: "https://cosh-website-default-rtdb.firebaseio.com"
});
const db = fs.firestore();
var paramsConfig = {};
async function main() {
var blogSlugs = await getBlogs();
var projects = await getProjectIds();
projects = [].concat(...projects);
var events = await getEventIds();
// console.log(events);
paramsConfig = {
'/blog/:slug': blogSlugs,
'/events/:id': [
{ id: events },
],
'/project/:id': [
{ id: projects },
],
};
(
new Sitemap(router)
.applyParams(paramsConfig)
.build('https://cosh.nitk.ac.in/')
.save('./public/sitemap.xml')
);
}
main();
async function getBlogs(){
var axios = require('axios');
return new Promise((resolve, reject) => {
var config = {
method: 'get',
url: 'https://cosh.nitk.ac.in/ghost-blog/ghost/api/v4/content/posts/?key=740bb3f520006dca9d07cdf0f5&fields=slug',
headers: { }
};
axios(config)
.then(function (response) {
resolve(response.data.posts);
})
.catch(function (error) {
console.log(error);
});
})
}
async function getProjectIds(){
async function getProjects(id) {
var list = await db.collection('domains/' + id + '/projects').get();
list = await list.docs.map(async doc => {
// console.log(doc.id);
return doc.id;
});
// console.log(list);
return Promise.all(list);
}
var list = await db.collection('domains').get();
var ids = await list.docs.map(async doc => {
return getProjects(doc.id);
});
return Promise.all(ids);
}
async function getEventIds(){
var list = await db.collection('events').get();
var ids = await list.docs.map(async doc => {
return doc.id;
});
return Promise.all(ids);
}