workers-site: sync from redirekt

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
Harsh Shandilya 2020-12-18 00:31:06 +05:30
parent ba6339974e
commit c54dedcb03

View File

@ -1,74 +1,71 @@
import { getAssetFromKV } from '@cloudflare/kv-asset-handler'; import { getAssetFromKV } from '@cloudflare/kv-asset-handler'
const GITHUB_USERNAME = 'msfjarvis'; const GITHUB_USERNAME = 'msfjarvis'
const APS_SLUG = 'Android-Password-Store/Android-Password-Store'; const APS_SLUG = 'Android-Password-Store/Android-Password-Store'
const GITHUB_URL = `https://github.com/${GITHUB_USERNAME}`; const GITHUB_URL = `https://github.com/${GITHUB_USERNAME}`
const APS_GITHUB_URL = `https://github.com/${APS_SLUG}`; const APS_GITHUB_URL = `https://github.com/${APS_SLUG}`
export async function handleRequest(event: FetchEvent): Promise<Response> { export async function handleRequest(event: FetchEvent): Promise<Response> {
return redirectGitHub(event); return redirectGitHub(event)
} }
async function getPageFromKV(event: FetchEvent): Promise<Response> { async function getPageFromKV(event: FetchEvent): Promise<Response> {
const options = {}; const options = {}
try {
const page = await getAssetFromKV(event, options)
const response = new Response(page.body, page)
response.headers.set('X-XSS-Protection', '1; mode=block')
response.headers.set('X-Content-Type-Options', 'nosniff')
response.headers.set('X-Frame-Options', 'DENY')
response.headers.set('Referrer-Policy', 'unsafe-url')
response.headers.set('Feature-Policy', 'none')
return response
} catch (e) {
try { try {
const page = await getAssetFromKV(event, options); let notFoundResponse = await getAssetFromKV(event, {
const response = new Response(page.body, page); mapRequestToAsset: (req) =>
response.headers.set('X-XSS-Protection', '1; mode=block'); new Request(`${new URL(req.url).origin}/404.html`, req),
response.headers.set('X-Content-Type-Options', 'nosniff'); })
response.headers.set('X-Frame-Options', 'DENY'); return new Response(notFoundResponse.body, {
response.headers.set('Referrer-Policy', 'unsafe-url'); ...notFoundResponse,
response.headers.set('Feature-Policy', 'none'); status: 404,
return response; })
} catch (e) { } catch (e) {}
try { return new Response(e.message || e.toString(), { status: 500 })
let notFoundResponse = await getAssetFromKV(event, { }
mapRequestToAsset: (req) =>
new Request(`${new URL(req.url).origin}/404.html`, req),
});
return new Response(notFoundResponse.body, {
...notFoundResponse,
status: 404,
});
} catch (e) {}
return new Response(e.message || e.toString(), { status: 500 });
}
} }
async function redirectGitHub(event: FetchEvent): Promise<Response> { async function redirectGitHub(event: FetchEvent): Promise<Response> {
const urlParts = event.request.url.replace(BASE_URL, '').split('/'); const urlParts = event.request.url.replace(BASE_URL, '').split('/')
switch (urlParts[0]) { switch (urlParts[0]) {
case 'g': case 'g':
switch (urlParts.length) { switch (urlParts.length) {
case 1: case 1:
return Response.redirect(GITHUB_URL, 301); return Response.redirect(GITHUB_URL, 301)
case 2: case 2:
return Response.redirect( return Response.redirect(`${GITHUB_URL}/${urlParts[1]}`, 301)
`${GITHUB_URL}/${urlParts[1]}`, case 3:
301 return Response.redirect(
); `${GITHUB_URL}/${urlParts[1]}/commit/${urlParts[2]}`,
case 3: 301,
return Response.redirect( )
`${GITHUB_URL}/${urlParts[1]}/commit/${urlParts[2]}`, }
301 case 'aps':
); switch (urlParts.length) {
} case 1:
case 'aps': return Response.redirect(APS_GITHUB_URL, 301)
switch (urlParts.length) { case 2:
case 1: return Response.redirect(
return Response.redirect(APS_GITHUB_URL, 301); `${APS_GITHUB_URL}/commit/${urlParts[1]}`,
case 2: 301,
return Response.redirect( )
`${APS_GITHUB_URL}/commit/${urlParts[1]}`, case 3:
301 return Response.redirect(
); `${APS_GITHUB_URL}/issues/${urlParts[2]}`,
case 3: 301,
return Response.redirect( )
`${APS_GITHUB_URL}/issues/${urlParts[2]}`, }
301 default:
); return getPageFromKV(event)
} }
default:
return getPageFromKV(event);
}
} }