669addf799
Build and Push Reader Image / docker (push) Failing after 22s
- Introduced a new batch import client for handling multiple EPUB files simultaneously. - Updated API routes for previewing and importing EPUB files, improving error handling and response management. - Enhanced genre management during import, allowing for dynamic creation and association of genres. - Implemented long-fetch handling to accommodate lengthy processing times for large EPUB files. - Refined UI components for better user experience in the import workflow.
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server"
|
|
import { AUTH_COOKIE_NAME } from "@/lib/auth-cookie"
|
|
import { readerApiLongFetch } from "@/lib/reader-api-long-fetch"
|
|
|
|
export const runtime = "nodejs"
|
|
export const dynamic = "force-dynamic"
|
|
export const maxDuration = 900
|
|
|
|
const readerApiOrigin = (process.env.READER_API_ORIGIN || "http://localhost:8000").replace(/\/+$/, "")
|
|
|
|
async function proxyUploadPreview(req: NextRequest) {
|
|
const accessToken = req.cookies.get(AUTH_COOKIE_NAME)?.value || null
|
|
|
|
const url = new URL(req.url)
|
|
const query = url.search || ""
|
|
const targetUrl = `${readerApiOrigin}/api/import/uploads/preview${query}`
|
|
|
|
const headers = new Headers(req.headers)
|
|
headers.delete("host")
|
|
headers.delete("cookie")
|
|
if (accessToken) {
|
|
headers.set("authorization", `Bearer ${accessToken}`)
|
|
}
|
|
|
|
const upstream = await readerApiLongFetch(targetUrl, {
|
|
method: req.method,
|
|
headers,
|
|
body: req.method !== "GET" && req.method !== "HEAD" ? req.body : undefined,
|
|
cache: "no-store",
|
|
duplex: "half",
|
|
})
|
|
|
|
return new NextResponse(upstream.body, {
|
|
status: upstream.status,
|
|
headers: upstream.headers,
|
|
})
|
|
}
|
|
|
|
export async function POST(req: NextRequest) {
|
|
return proxyUploadPreview(req)
|
|
}
|