dh_demo

DreamHanks demo project
git clone git://git.lair.cx/dh_demo
Log | Files | Refs | README

wiki.ts (865B)


      1 import { WikiText } from '@/lib/models/wiki_text'
      2 import { GetServerSidePropsContext, NextApiRequest } from 'next'
      3 import { NextRouter } from 'next/router'
      4 import { unzip as decompressGzip } from 'node:zlib'
      5 
      6 export const getSlugAndPath = (
      7   context: GetServerSidePropsContext | NextApiRequest | NextRouter,
      8 ): [slug: string | null, path: string | null] => {
      9   const { slug, path } = context.query
     10   return [
     11     typeof slug === 'string' ? slug : null,
     12     path != null && Array.isArray(path) ? path.join('/') : null
     13   ]
     14 }
     15 
     16 export const getStringFromWikiText = async (wikiText: WikiText): Promise<string> => {
     17   switch (wikiText.encoding) {
     18     case 'gzip':
     19       // TODO: implement gzipped wiki text
     20       return 'TODO'
     21 
     22     case 'utf-8':
     23       return wikiText.content
     24 
     25     default:
     26       throw new Error(`Unknown wiki text encoding: ${wikiText.encoding}`)
     27   }
     28 }