View kv-poc.js
addEventListener('fetch', event => event.respondWith(handleRequest(event))); | |
async function handleRequest(event) { | |
const request = event.request; | |
// Parse query string | |
const { searchParams } = new URL(request.url); | |
let qsName = searchParams.get('name'); | |
// If name in query string, add it to kv async | |
if (qsName) { | |
// Run this async to response, but wait for it to complete before terminating |
View pubsub.ts
import { Injectable } from '@angular/core'; | |
@Injectable({ | |
providedIn: 'root', | |
}) | |
export class PubSub { | |
private topics: { [id: string]: PubSubTopic } = {}; | |
private constructor() {} |
View webhook.ts
import flagpole from "flagpole"; | |
import * as ngrok from "ngrok"; | |
flagpole("Just a basic webhook callback", async (suite) => { | |
// Create webhook scenario | |
const webhook = await suite | |
.scenario("Wait for a webhook", "resource") | |
.webhook("GET /foo") | |
.next(async (context) => { | |
context.comment("Webhook was hit!"); |
View asset.ts
const hosts = { | |
cloudFlare: "https://flosports-video.s3.amazon.com", | |
stackPath: "https://cdn.stackpath.flosports.tv", | |
}; | |
function isStackPath(request: Request): boolean { | |
const url = new URL(request.url); | |
return !!url.hostname.match(/stackpath/); | |
} |
View modify-body.ts
export async function personalizeBody( | |
response: Response, | |
request: Request | |
): Promise<Response> { | |
const originalBody = await response.text(); | |
const newBody = originalBody.replace( | |
/{{ timestamp }}/g, | |
new Date().toUTCString() | |
); | |
const modifiedResponse = new Response(newBody, response); |
View custom-header2.ts
export async function addCustomHeader(response: Response): Promise<Response> { | |
const modifiedResponse = new Response(await response.arrayBuffer(), response); | |
modifiedResponse.headers.set("X-My-Custom-Header", "Hello there!"); | |
return modifiedResponse; | |
} |
View custom-header.ts
export async function addCustomHeader(response: Response): Promise<Response> { | |
const modifiedResponse = new Response(response.body, response); | |
modifiedResponse.headers.set("X-My-Custom-Header", "Hello there!"); | |
return modifiedResponse; | |
} |
View lambda.js
'use strict'; | |
exports.handler = (event, context, callback) => { | |
const request = event.Records[0].cf.request; | |
return callback(null, request); | |
}; |
View index.ts
function handleRequest(request: Request): Promise<Response> { | |
return fetch(request); | |
} | |
addEventListener('fetch', (event) => { | |
event.respondWith(handleRequest(event.request)) | |
}); |
View index.ts
import { Router } from "./helpers/router"; | |
import { getQueryString } from "./helpers/querystring"; | |
const MAGIC_WORD = "flo"; | |
function catchAll(request: Request): Response { | |
return fetch(request.url, request); | |
} | |
function validateTokenThenFetch( |
NewerOlder