Skip to content

Instantly share code, notes, and snippets.

View danielreiser's full-sized avatar

Daniel Reiser danielreiser

View GitHub Profile
@danielreiser
danielreiser / levenshtein-redirect-404.guard.ts
Created August 7, 2021 15:00
Angular 2+ Route Guard to correct user typos in urls with the help of the levenshtein distance calculation. Full repo can be found here https://github.com/danielreiser/medium-levenshtein-404-redirect
import { Injectable } from '@angular/core'
import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router'
import { Observable } from 'rxjs'
import { distance } from 'fastest-levenshtein'
import { paths } from '../paths'
@Injectable({
providedIn: 'root'
})
export class Redirect404Guard implements CanActivate {
@danielreiser
danielreiser / cf-origin-switch_viewer-request.js
Created August 10, 2021 09:06
Viewer Request lambda@edge function
'use strict';
const AWS = require('aws-sdk');
const ssm = new AWS.SSM({ region: 'eu-central-1' });
const SOURCE_COOKIE_NAME = 'myapp-origin';
const LATEST_ORIGIN_GIT_HASH = 'myapp_latest-origin-git-hash';
exports.handler = async (event, context, callback) => {
console.group('[INFO] lambda@edge Viewer Request')
@danielreiser
danielreiser / cf-origin-switch-header_origin-request.js
Last active August 10, 2021 09:25
Origin Request lambda@edge function for header evaluation
'use strict';
const SOURCE_HEADER_NAME = 'x-myapp-origin';
exports.handler = async event => {
console.group('[INFO] lambda@edge Origin Request')
const request = event.Records[0].cf.request;
if (request.headers[SOURCE_HEADER_NAME]) {
const headerValue = request.headers[SOURCE_HEADER_NAME][0].value;
@danielreiser
danielreiser / cf-origin-switch-cookie-and-header_origin-request.js
Created August 10, 2021 09:26
Origin Request lambda@edge function for cookie and header evaluation
@danielreiser
danielreiser / cf-origin-switch_origin-response.js
Created August 10, 2021 09:29
Origin Response lambda@edge function for setting a cookie
'use strict';
const AWS = require('aws-sdk');
const ssm = new AWS.SSM({ region: 'eu-central-1' });
const SOURCE_COOKIE_NAME = 'myapp-origin';
const LATEST_ORIGIN_GIT_HASH = 'myapp_latest-origin-git-hash';
exports.handler = async event => {
console.group('[INFO] lambda@edge Origin Response')