xLog/src/app/api/tweet/route.ts

27 lines
808 B
TypeScript

import { getTweet, Tweet } from "react-tweet/api"
import { cacheGet } from "~/lib/redis.server"
import { getQuery, NextServerResponse } from "~/lib/server-helper"
export async function GET(req: Request): Promise<Response> {
let { id: tweetId } = getQuery(req)
const res = new NextServerResponse()
if (!tweetId) {
return res.status(400).json({ error: "Bad request." })
}
try {
const tweet = (await cacheGet({
key: `tweet/${tweetId}`,
noUpdate: true,
expireTime: 60 * 60 * 24 * 3,
getValueFun: async () => await getTweet(tweetId),
})) as Tweet | undefined
return res.status(tweet ? 200 : 404).json({ data: tweet ?? null })
} catch (error: any) {
console.error(error)
return res.status(400).json({ error: error?.message ?? "Bad request." })
}
}