1
0
Fork 0
mirror of https://github.com/alangrainger/immich-public-proxy.git synced 2024-12-28 20:01:57 +00:00
immich-public-proxy/index.js
2024-10-28 09:08:16 +01:00

32 lines
919 B
JavaScript

const express = require('express')
const api = require('./immich').default
const dayjs = require('dayjs')
const app = express()
require('dotenv').config()
app.get('/share/:key', async (req, res) => {
if (req.params.key.match(/[^A-Za-z0-9\-]/)) {
// Invalid characters in the incoming URL
res.status(404).send()
} else {
const share = await api.getShareByKey(req.params.key)
if (share?.assets?.length === 1) {
// This is an individual item (not a gallery)
// Return the full-size image.
const image = await api.getImage(share.assets[0].id, req.query.size)
for (const header of ['content-type', 'content-length']) {
res.set(header, image.headers[header])
}
const data = await image.arrayBuffer()
res.send(Buffer.from(data))
} else {
res.send()
}
}
})
app.listen(3000, () => {
console.log(dayjs().format() + ' Server started')
})