Created
June 16, 2020 09:18
-
-
Save alexlovelltroy/d313aa639aad4f50aa33be4ffa007023 to your computer and use it in GitHub Desktop.
Cloudflare Worker Mnemonic-as-a-Service
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
addEventListener('fetch', event => { | |
event.respondWith(handleRequest(event.request)) | |
}) | |
var wordlist = ["acrobat", "africa", "alaska", "albert", "albino", "album", | |
"alcohol", "alex", "alpha", "amadeus", "amanda", "amazon", | |
"america", "analog", "animal", "antenna", "antonio", "apollo", | |
"april", "aroma", "artist", "aspirin", "athlete", "atlas", | |
"banana", "bandit", "banjo", "bikini", "bingo", "bonus", | |
"camera", "canada", "carbon", "casino", "catalog", "cinema", | |
"citizen", "cobra", "comet", "compact", "complex", "context", | |
"credit", "critic", "crystal", "culture", "david", "delta", | |
"dialog", "diploma", "doctor", "domino", "dragon", "drama", | |
"extra", "fabric", "final", "focus", "forum", "galaxy", | |
"gallery", "global", "harmony", "hotel", "humor", "index", | |
"japan", "kilo", "lemon", "liter", "lotus", "mango", | |
"melon", "menu", "meter", "metro", "mineral", "model", | |
"music", "object", "piano", "pirate", "plastic", "radio", | |
"report", "signal", "sport", "studio", "subject", "super", | |
"tango", "taxi", "tempo", "tennis", "textile", "tokyo", | |
"total", "tourist", "video", "visa", "academy", "alfred", | |
"atlanta", "atomic", "barbara", "bazaar", "brother", "budget", | |
"cabaret", "cadet", "candle", "capsule", "caviar", "channel", | |
"chapter", "circle", "cobalt", "comrade", "condor", "crimson", | |
"cyclone", "darwin", "declare", "denver", "desert", "divide", | |
"dolby", "domain", "double", "eagle", "echo", "eclipse", | |
"editor", "educate", "edward", "effect", "electra", "emerald", | |
"emotion", "empire", "eternal", "evening", "exhibit", "expand", | |
"explore", "extreme", "ferrari", "forget", "freedom", "friday", | |
"fuji", "galileo", "genesis", "gravity", "habitat", "hamlet", | |
"harlem", "helium", "holiday", "hunter", "ibiza", "iceberg", | |
"imagine", "infant", "isotope", "jackson", "jamaica", "jasmine", | |
"java", "jessica", "kitchen", "lazarus", "letter", "license", | |
"lithium", "loyal", "lucky", "magenta", "manual", "marble", | |
"maxwell", "mayor", "monarch", "monday", "money", "morning", | |
"mother", "mystery", "native", "nectar", "nelson", "network", | |
"nikita", "nobel", "nobody", "nominal", "norway", "nothing", | |
"number", "october", "office", "oliver", "opinion", "option", | |
"order", "outside", "package", "pandora", "panther", "papa", | |
"pattern", "pedro", "pencil", "people", "phantom", "philips", | |
"pioneer", "pluto", "podium", "portal", "potato", "process", | |
"proxy", "pupil", "python", "quality", "quarter", "quiet", | |
"rabbit", "radical", "radius", "rainbow", "ramirez", "ravioli", | |
"raymond", "respect", "respond", "result", "resume", "richard", | |
"river", "roger", "roman", "rondo", "sabrina", "salary", | |
"salsa", "sample", "samuel", "saturn", "savage", "scarlet", | |
"scorpio", "sector", "serpent", "shampoo", "sharon", "silence", | |
"simple", "society", "sonar", "sonata", "soprano", "sparta", | |
"spider", "sponsor", "abraham", "action", "active", "actor", | |
"adam", "address", "admiral", "adrian", "agenda", "agent", | |
"airline", "airport", "alabama", "aladdin", "alarm", "algebra", | |
"alibi", "alice", "alien", "almond", "alpine", "amber", | |
"amigo", "ammonia", "analyze", "anatomy", "angel", "annual", | |
"answer", "apple", "archive", "arctic", "arena", "arizona", | |
"armada", "arnold", "arsenal", "arthur", "asia", "aspect", | |
"athena", "audio", "august", "austria", "avenue", "average", | |
"axiom", "aztec", "bagel", "baker", "balance", "ballad", | |
"ballet", "bambino", "bamboo", "baron", "basic", "basket", | |
"battery", "belgium", "benefit", "berlin", "bermuda", "bernard", | |
"bicycle", "binary", "biology", "bishop", "blitz", "block", | |
"blonde", "bonjour", "boris", "boston", "bottle", "boxer", | |
"brandy", "bravo", "brazil", "bridge", "british", "bronze", | |
"brown", "bruce", "bruno", "brush", "burger", "burma", | |
"cabinet", "cactus", "cafe", "cairo", "calypso", "camel", | |
"campus", "canal", "cannon", "canoe", "cantina", "canvas", | |
"canyon", "capital", "caramel", "caravan", "career", "cargo", | |
"carlo", "carol", "carpet", "cartel", "cartoon", "castle", | |
"castro", "cecilia", "cement", "center", "century", "ceramic", | |
"chamber", "chance", "change", "chaos", "charlie", "charm", | |
"charter", "cheese", "chef", "chemist", "cherry", "chess", | |
"chicago", "chicken", "chief", "china", "cigar", "circus", | |
"city", "clara", "classic", "claudia", "clean", "client", | |
"climax", "clinic", "clock", "club", "cockpit", "coconut", | |
"cola", "collect", "colombo", "colony", "color", "combat", | |
"comedy", "command", "company", "concert", "connect", "consul", | |
"contact", "contour", "control", "convert", "copy", "corner", | |
"corona", "correct", "cosmos", "couple", "courage", "cowboy", | |
"craft", "crash", "cricket", "crown", "cuba", "dallas", | |
"dance", "daniel", "decade", "decimal", "degree", "delete", | |
"deliver", "delphi", "deluxe", "demand", "demo", "denmark", | |
"derby", "design", "detect", "develop", "diagram", "diamond", | |
"diana", "diego", "diesel", "diet", "digital", "dilemma", | |
"direct", "disco", "disney", "distant", "dollar", "dolphin", | |
"donald", "drink", "driver", "dublin", "duet", "dynamic", | |
"earth", "east", "ecology", "economy", "edgar", "egypt", | |
"elastic", "elegant", "element", "elite", "elvis", "email", | |
"empty", "energy", "engine", "english", "episode", "equator", | |
"escape", "escort", "ethnic", "europe", "everest", "evident", | |
"exact", "example", "exit", "exotic", "export", "express", | |
"factor", "falcon", "family", "fantasy", "fashion", "fiber", | |
"fiction", "fidel", "fiesta", "figure", "film", "filter", | |
"finance", "finish", "finland", "first", "flag", "flash", | |
"florida", "flower", "fluid", "flute", "folio", "ford", | |
"forest", "formal", "formula", "fortune", "forward", "fragile", | |
"france", "frank", "fresh", "friend", "frozen", "future", | |
"gabriel", "gamma", "garage", "garcia", "garden", "garlic", | |
"gemini", "general", "genetic", "genius", "germany", "gloria", | |
"gold", "golf", "gondola", "gong", "good", "gordon", | |
"gorilla", "grand", "granite", "graph", "green", "group", | |
"guide", "guitar", "guru", "hand", "happy", "harbor", | |
"harvard", "havana", "hawaii", "helena", "hello", "henry", | |
"hilton", "history", "horizon", "house", "human", "icon", | |
"idea", "igloo", "igor", "image", "impact", "import", | |
"india", "indigo", "input", "insect", "instant", "iris", | |
"italian", "jacket", "jacob", "jaguar", "janet", "jargon", | |
"jazz", "jeep", "john", "joker", "jordan", "judo", | |
"jumbo", "june", "jungle", "junior", "jupiter", "karate", | |
"karma", "kayak", "kermit", "king", "koala", "korea", | |
"labor", "lady", "lagoon", "laptop", "laser", "latin", | |
"lava", "lecture", "left", "legal", "level", "lexicon", | |
"liberal", "libra", "lily", "limbo", "limit", "linda", | |
"linear", "lion", "liquid", "little", "llama", "lobby", | |
"lobster", "local", "logic", "logo", "lola", "london", | |
"lucas", "lunar", "machine", "macro", "madam", "madonna", | |
"madrid", "maestro", "magic", "magnet", "magnum", "mailbox", | |
"major", "mama", "mambo", "manager", "manila", "marco", | |
"marina", "market", "mars", "martin", "marvin", "mary", | |
"master", "matrix", "maximum", "media", "medical", "mega", | |
"melody", "memo", "mental", "mentor", "mercury", "message", | |
"metal", "meteor", "method", "mexico", "miami", "micro", | |
"milk", "million", "minimum", "minus", "minute", "miracle", | |
"mirage", "miranda", "mister", "mixer", "mobile", "modem", | |
"modern", "modular", "moment", "monaco", "monica", "monitor", | |
"mono", "monster", "montana", "morgan", "motel", "motif", | |
"motor", "mozart", "multi", "museum", "mustang", "natural", | |
"neon", "nepal", "neptune", "nerve", "neutral", "nevada", | |
"news", "next", "ninja", "nirvana", "normal", "nova", | |
"novel", "nuclear", "numeric", "nylon", "oasis", "observe", | |
"ocean", "octopus", "olivia", "olympic", "omega", "opera", | |
"optic", "optimal", "orange", "orbit", "organic", "orient", | |
"origin", "orlando", "oscar", "oxford", "oxygen", "ozone", | |
"pablo", "pacific", "pagoda", "palace", "pamela", "panama", | |
"pancake", "panda", "panel", "panic", "paradox", "pardon", | |
"paris", "parker", "parking", "parody", "partner", "passage", | |
"passive", "pasta", "pastel", "patent", "patient", "patriot", | |
"patrol", "pegasus", "pelican", "penguin", "pepper", "percent", | |
"perfect", "perfume", "period", "permit", "person", "peru", | |
"phone", "photo", "picasso", "picnic", "picture", "pigment", | |
"pilgrim", "pilot", "pixel", "pizza", "planet", "plasma", | |
"plaza", "pocket", "poem", "poetic", "poker", "polaris", | |
"police", "politic", "polo", "polygon", "pony", "popcorn", | |
"popular", "postage", "precise", "prefix", "premium", "present", | |
"price", "prince", "printer", "prism", "private", "prize", | |
"product", "profile", "program", "project", "protect", "proton", | |
"public", "pulse", "puma", "pump", "pyramid", "queen", | |
"radar", "ralph", "random", "rapid", "rebel", "record", | |
"recycle", "reflex", "reform", "regard", "regular", "relax", | |
"reptile", "reverse", "ricardo", "right", "ringo", "risk", | |
"ritual", "robert", "robot", "rocket", "rodeo", "romeo", | |
"royal", "russian", "safari", "salad", "salami", "salmon", | |
"salon", "salute", "samba", "sandra", "santana", "sardine", | |
"school", "scoop", "scratch", "screen", "script", "scroll", | |
"second", "secret", "section", "segment", "select", "seminar", | |
"senator", "senior", "sensor", "serial", "service", "shadow", | |
"sharp", "sheriff", "shock", "short", "shrink", "sierra", | |
"silicon", "silk", "silver", "similar", "simon", "single", | |
"siren", "slang", "slogan", "smart", "smoke", "snake", | |
"social", "soda", "solar", "solid", "solo", "sonic", | |
"source", "soviet", "special", "speed", "sphere", "spiral", | |
"spirit", "spring", "static", "status", "stereo", "stone", | |
"stop", "street", "strong", "student", "style", "sultan", | |
"susan", "sushi", "suzuki", "switch", "symbol", "system", | |
"tactic", "tahiti", "talent", "tarzan", "telex", "texas", | |
"theory", "thermos", "tiger", "titanic", "tomato", "topic", | |
"tornado", "toronto", "torpedo", "totem", "tractor", "traffic", | |
"transit", "trapeze", "travel", "tribal", "trick", "trident", | |
"trilogy", "tripod", "tropic", "trumpet", "tulip", "tuna", | |
"turbo", "twist", "ultra", "uniform", "union", "uranium", | |
"vacuum", "valid", "vampire", "vanilla", "vatican", "velvet", | |
"ventura", "venus", "vertigo", "veteran", "victor", "vienna", | |
"viking", "village", "vincent", "violet", "violin", "virtual", | |
"virus", "vision", "visitor", "visual", "vitamin", "viva", | |
"vocal", "vodka", "volcano", "voltage", "volume", "voyage", | |
"water", "weekend", "welcome", "western", "window", "winter", | |
"wizard", "wolf", "world", "xray", "yankee", "yoga", | |
"yogurt", "yoyo", "zebra", "zero", "zigzag", "zipper", | |
"zodiac", "zoom", "acid", "adios", "agatha", "alamo", | |
"alert", "almanac", "aloha", "andrea", "anita", "arcade", | |
"aurora", "avalon", "baby", "baggage", "balloon", "bank", | |
"basil", "begin", "biscuit", "blue", "bombay", "botanic", | |
"brain", "brenda", "brigade", "cable", "calibre", "carmen", | |
"cello", "celtic", "chariot", "chrome", "citrus", "civil", | |
"cloud", "combine", "common", "cool", "copper", "coral", | |
"crater", "cubic", "cupid", "cycle", "depend", "door", | |
"dream", "dynasty", "edison", "edition", "enigma", "equal", | |
"eric", "event", "evita", "exodus", "extend", "famous", | |
"farmer", "food", "fossil", "frog", "fruit", "geneva", | |
"gentle", "george", "giant", "gilbert", "gossip", "gram", | |
"greek", "grille", "hammer", "harvest", "hazard", "heaven", | |
"herbert", "heroic", "hexagon", "husband", "immune", "inca", | |
"inch", "initial", "isabel", "ivory", "jason", "jerome", | |
"joel", "joshua", "journal", "judge", "juliet", "jump", | |
"justice", "kimono", "kinetic", "leonid", "leopard", "lima", | |
"maze", "medusa", "member", "memphis", "michael", "miguel", | |
"milan", "mile", "miller", "mimic", "mimosa", "mission", | |
"monkey", "moral", "moses", "mouse", "nancy", "natasha", | |
"nebula", "nickel", "nina", "noise", "orchid", "oregano", | |
"origami", "orinoco", "orion", "othello", "paper", "paprika", | |
"prelude", "prepare", "pretend", "promise", "prosper", "provide", | |
"puzzle", "remote", "repair", "reply", "rival", "riviera", | |
"robin", "rose", "rover", "rudolf", "saga", "sahara", | |
"scholar", "shelter", "ship", "shoe", "sigma", "sister", | |
"sleep", "smile", "spain", "spark", "split", "spray", | |
"square", "stadium", "star", "storm", "story", "strange", | |
"stretch", "stuart", "subway", "sugar", "sulfur", "summer", | |
"survive", "sweet", "swim", "table", "taboo", "target", | |
"teacher", "telecom", "temple", "tibet", "ticket", "tina", | |
"today", "toga", "tommy", "tower", "trivial", "tunnel", | |
"turtle", "twin", "uncle", "unicorn", "unique", "update", | |
"valery", "vega", "version", "voodoo", "warning", "william", | |
"wonder", "year", "yellow", "young", "absent", "absorb", | |
"absurd", "accent", "alfonso", "alias", "ambient", "anagram", | |
"andy", "anvil", "appear", "apropos", "archer", "ariel", | |
"armor", "arrow", "austin", "avatar", "axis", "baboon", | |
"bahama", "bali", "balsa", "barcode", "bazooka", "beach", | |
"beast", "beatles", "beauty", "before", "benny", "betty", | |
"between", "beyond", "billy", "bison", "blast", "bless", | |
"bogart", "bonanza", "book", "border", "brave", "bread", | |
"break", "broken", "bucket", "buenos", "buffalo", "bundle", | |
"button", "buzzer", "byte", "caesar", "camilla", "canary", | |
"candid", "carrot", "cave", "chant", "child", "choice", | |
"chris", "cipher", "clarion", "clark", "clever", "cliff", | |
"clone", "conan", "conduct", "congo", "costume", "cotton", | |
"cover", "crack", "current", "danube", "data", "decide", | |
"deposit", "desire", "detail", "dexter", "dinner", "donor", | |
"druid", "drum", "easy", "eddie", "enjoy", "enrico", | |
"epoxy", "erosion", "except", "exile", "explain", "fame", | |
"fast", "father", "felix", "field", "fiona", "fire", | |
"fish", "flame", "flex", "flipper", "float", "flood", | |
"floor", "forbid", "forever", "fractal", "frame", "freddie", | |
"front", "fuel", "gallop", "game", "garbo", "gate", | |
"gelatin", "gibson", "ginger", "giraffe", "gizmo", "glass", | |
"goblin", "gopher", "grace", "gray", "gregory", "grid", | |
"griffin", "ground", "guest", "gustav", "gyro", "hair", | |
"halt", "harris", "heart", "heavy", "herman", "hippie", | |
"hobby", "honey", "hope", "horse", "hostel", "hydro", | |
"imitate", "info", "ingrid", "inside", "invent", "invest", | |
"invite", "ivan", "james", "jester", "jimmy", "join", | |
"joseph", "juice", "julius", "july", "kansas", "karl", | |
"kevin", "kiwi", "ladder", "lake", "laura", "learn", | |
"legacy", "legend", "lesson", "life", "light", "list", | |
"locate", "lopez", "lorenzo", "love", "lunch", "malta", | |
"mammal", "margin", "margo", "marion", "mask", "match", | |
"mayday", "meaning", "mercy", "middle", "mike", "mirror", | |
"modest", "morph", "morris", "mystic", "nadia", "nato", | |
"navy", "needle", "neuron", "never", "newton", "nice", | |
"night", "nissan", "nitro", "nixon", "north", "oberon", | |
"octavia", "ohio", "olga", "open", "opus", "orca", | |
"oval", "owner", "page", "paint", "palma", "parent", | |
"parlor", "parole", "paul", "peace", "pearl", "perform", | |
"phoenix", "phrase", "pierre", "pinball", "place", "plate", | |
"plato", "plume", "pogo", "point", "polka", "poncho", | |
"powder", "prague", "press", "presto", "pretty", "prime", | |
"promo", "quest", "quick", "quiz", "quota", "race", | |
"rachel", "raja", "ranger", "region", "remark", "rent", | |
"reward", "rhino", "ribbon", "rider", "road", "rodent", | |
"round", "rubber", "ruby", "rufus", "sabine", "saddle", | |
"sailor", "saint", "salt", "scale", "scuba", "season", | |
"secure", "shake", "shallow", "shannon", "shave", "shelf", | |
"sherman", "shine", "shirt", "side", "sinatra", "sincere", | |
"size", "slalom", "slow", "small", "snow", "sofia", | |
"song", "sound", "south", "speech", "spell", "spend", | |
"spoon", "stage", "stamp", "stand", "state", "stella", | |
"stick", "sting", "stock", "store", "sunday", "sunset", | |
"support", "supreme", "sweden", "swing", "tape", "tavern", | |
"think", "thomas", "tictac", "time", "toast", "tobacco", | |
"tonight", "torch", "torso", "touch", "toyota", "trade", | |
"tribune", "trinity", "triton", "truck", "trust", "type", | |
"under", "unit", "urban", "urgent", "user", "value", | |
"vendor", "venice", "verona", "vibrate", "virgo", "visible", | |
"vista", "vital", "voice", "vortex", "waiter", "watch", | |
"wave", "weather", "wedding", "wheel", "whiskey", "wisdom", | |
"android", "annex", "armani", "cake", "confide", "deal", | |
"define", "dispute", "genuine", "idiom", "impress", "include", | |
"ironic", "null", "nurse", "obscure", "prefer", "prodigy", | |
"ego", "fax", "jet", "job", "rio", "ski", | |
"yes"]; | |
/** | |
* Respond to the request | |
* @param {Request} request | |
*/ | |
async function handleRequest(request) { | |
let requestURL = new URL(request.url); | |
let numWords = parseInt(requestURL.pathname.split("/")[1]); | |
let requestedWords = numWords; | |
if (isNaN(numWords)) { numWords = 1; requestedWords = 0} | |
var i; | |
var randomWords = new Array(); | |
for (i = 0; i < numWords; i++) { | |
let word = wordlist[Math.floor(Math.random() * wordlist.length)]; | |
randomWords.push(word) | |
} | |
if (request.headers.get("Accept") == "application/json") { | |
return new Response(JSON.stringify({'requested': requestedWords, 'words': randomWords}), {headers: { 'Content-Type': 'application/json'}, status: 200} ) | |
} else if (request.headers.get("Accept") == "text/plain") { | |
return new Response(randomWords.join(", "), {headers: { 'Content-Type': 'text/plain'}, status: 200} ) | |
} else { | |
return new Response("<html><head><title>Random Words</title></head><body>" + randomWords.join(", ") + "</body></html>", {headers: { 'Content-Type': 'text/html; charset=UTF-8'}, status: 200} ) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment