25 lines
602 B
TypeScript
25 lines
602 B
TypeScript
import { encode } from 'urlsafe-base64'
|
|
import crypto from 'crypto'
|
|
import { env } from '../env'
|
|
|
|
function signImageProxyUrl(url: string): string {
|
|
return encode(
|
|
crypto.createHmac('sha256', env.imageProxy.secretKey).update(url).digest()
|
|
)
|
|
}
|
|
|
|
export function createImageProxyUrl(
|
|
url: string,
|
|
width = 0,
|
|
height = 0
|
|
): string {
|
|
if (!env.imageProxy.url || !env.imageProxy.secretKey) {
|
|
return url
|
|
}
|
|
|
|
const urlWithOptions = `${url}#${width}x${height}`
|
|
const signature = signImageProxyUrl(urlWithOptions)
|
|
|
|
return `${env.imageProxy.url}/${width}x${height},s${signature}/${url}`
|
|
}
|