about summary refs log tree commit diff
path: root/api/api.js
diff options
context:
space:
mode:
Diffstat (limited to 'api/api.js')
-rw-r--r--api/api.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/api/api.js b/api/api.js
new file mode 100644
index 0000000..9603f3f
--- /dev/null
+++ b/api/api.js
@@ -0,0 +1,65 @@
+const fs = require('fs')
+const frontmatter = require('front-matter')
+const md = require('markdown-it')()
+const { JSDOM } = require('jsdom')
+
+const POSTS_PATH = './content/wpisy'
+
+function getPostAttributes(fileContent) {
+  const post = frontmatter(fileContent)
+
+  const { document } = new JSDOM(`<body>${md.render(post.body)}</body>`).window
+  const element = document.getElementsByTagName('p')
+
+  post.body = `<div>${md.render(post.body)}</div>`
+  post.description = element[1].textContent
+
+  return post
+}
+
+function getPosts() {
+  const routesArray = []
+  try {
+    const years = fs.readdirSync(`${POSTS_PATH}`)
+    years.forEach(year => {
+      const months = fs.readdirSync(`${POSTS_PATH}/${year}`)
+      months.forEach(month => {
+        const days = fs.readdirSync(`${POSTS_PATH}/${year}/${month}`)
+        days.forEach(day => {
+          const files = fs.readdirSync(`${POSTS_PATH}/${year}/${month}/${day}`)
+          files.forEach(file => {
+            const title = file.substr(0, file.lastIndexOf('.'))
+            const route = `/kronika/${year}/${month}/${day}/${title}/`
+            const fsRoute = `${POSTS_PATH}/${year}/${month}/${day}/${file}`
+
+            const data = getPostAttributes(fs.readFileSync(fsRoute, 'utf-8'))
+
+            routesArray.push({
+              year,
+              month,
+              day,
+              title,
+              data,
+              file,
+              fsRoute,
+              route
+            })
+          })
+        })
+      })
+    })
+  } finally {
+    return routesArray
+  }
+}
+
+function createRoutesArray() {
+  let posts = getPosts()
+  return posts.map(post => post.route)
+}
+
+module.exports = {
+  getPosts,
+  createRoutesArray,
+  getPostAttributes
+}