You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
carbon/pages/[id].js

37 lines
796 B
JavaScript

import React from 'react'
import Router from 'next/router'
import IndexPage from './index'
import api from '../lib/api'
export async function getServerSideProps({ req, res, query }) {
const { id: path, filename } = query
const parameter = path.length >= 19 && path.indexOf('.') < 0 ? path : null
let snippet
if (parameter) {
const host = req ? req.headers.host : undefined
snippet = await api.snippet.get(parameter, { host, filename })
if (snippet) {
return { props: { snippet, host } }
}
// 404 Not found
if (res) {
res.writeHead(302, {
Location: '/',
})
res.end()
} else {
Router.push('/')
}
}
return { props: {} }
}
export default React.memo(function IdPage(props) {
return <IndexPage {...props} />
})