Skip to content

Commit

Permalink
store image data in json files
Browse files Browse the repository at this point in the history
  • Loading branch information
JosiasAurel committed Jun 13, 2024
1 parent debe832 commit 7333a39
Showing 1 changed file with 10 additions and 19 deletions.
29 changes: 10 additions & 19 deletions src/pages/api/thumbnail.ts → src/integrations/thumbnail.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { APIRoute } from 'astro'
import { baseEngine, palette } from 'sprig/base'
import { RawThumbnail, Thumbnail } from '../../lib/thumbnail'
import { RawThumbnail, Thumbnail } from '../lib/thumbnail'
import fs from 'fs'
import path from 'path'
import { dirname } from 'path'
Expand Down Expand Up @@ -102,8 +101,7 @@ const drawGameImage = (src: string): RawThumbnail => {
}
}

export const get: APIRoute = async ({ url }) => {
const name = url.searchParams.get('key') || ''
export const generateImageJson = async (name: string) => {
let gameContentString = loadGameContentFromDisk(name)
let gameImageBase64 = loadImageBase64FromDisk(name)

Expand All @@ -126,28 +124,22 @@ export const get: APIRoute = async ({ url }) => {
}
} catch (error) {
// If everything breaks, use a default image
console.error(error)
// console.error(error)
const image = await fetch('https://cloud-i203j2e6a-hack-club-bot.vercel.app/1confused_dinosaur.png')
thumbnail = {
kind: 'png',
data: Buffer.from(await image.arrayBuffer()).toString('base64')
}
}

return new Response(JSON.stringify(thumbnail), {
status: 200,
headers: {
'Access-Control-Allow-Credentials': 'true',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET,OPTIONS',
'Access-Control-Allow-Headers': '*',
'Cache-Control': 'max-age=86400'
}
})
// write/overwrite image json to public folder
let imgFilePath = path.resolve(__dirname, `../../public/${name}.json`);
fs.writeFileSync(imgFilePath, JSON.stringify(thumbnail), { encoding: "utf-8" });
}

function loadImageBase64FromDisk(name: string) {
try {
let imgPath = path.resolve(__dirname, `../../../games/img/${name}.png`)
let imgPath = path.resolve(__dirname, `../../games/img/${name}.png`)
if (!fs.existsSync(imgPath)) return null
return fs.readFileSync(imgPath).toString("base64")
} catch {
Expand All @@ -156,8 +148,7 @@ function loadImageBase64FromDisk(name: string) {
}

function loadGameContentFromDisk(name: string) {
let gameContentPath = path.resolve(__dirname, `../../../games/${name}.js`)
let gameContentPath = path.resolve(__dirname, `../../games/${name}.js`)
if (!fs.existsSync(gameContentPath)) return null
return fs.readFileSync(gameContentPath).toString()
}

}

0 comments on commit 7333a39

Please sign in to comment.