40
loading...
This website collects cookies to deliver better user experience
npm install -g @cloudflare/wrangler
wrangler login
or wrangler config
wrangler generate edge-leaderboard
wrangler.toml
. Run wrangler whoami
and copy/paste your account id to your wrangler.toml.name = "edge-leaderboard"
type = "javascript"
account_id = "REPLACE_YOUR_ACCOUNT_ID"
workers_dev = true
route = ""
zone_id = ""
[vars]
TOKEN = "REPLACE_YOUR_UPSTASH_REST_TOKEN"
addEventListener("fetch", event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
if (request.method === "GET") {
return getLeaderboard();
} else if (request.method === "POST") {
return addScore(request);
} else {
return new Response("Invalid Request!")
}
}
async function getLeaderboard() {
let url = "https://us1-full-bug-31874.upstash.io/zrevrange/scores/0/1000/WITHSCORES/?_token=" + TOKEN;
let res = await fetch(new Request(url),
{
cf:
{
cacheTtl: 10,
cacheEverything: true,
cacheKey: url,
},
}
)
return res;
}
async function addScore(request) {
const { searchParams } = new URL(request.url)
let player = searchParams.get('player')
let score = searchParams.get('score')
let url = "https://us1-full-bug-31874.upstash.io/zadd/scores/" + score + "/" + player + "?_token=" + TOKEN;
let res = await fetch(url)
return new Response(await res.text())
}
wrangler dev
. It will give you a local URL. You can test your API with curl:curl -X POST http://127.0.0.1:8787\?player\=messi\&score\=13
curl -X POST http://127.0.0.1:8787\?player\=ronaldo\&score\=17
curl -X POST http://127.0.0.1:8787\?player\=benzema\&score\=18
curl -w '\n Latency: %{time_total}s\n' http://127.0.0.1:8787
webpack
name = "edge-leaderboard"
type = "webpack"
wrangler publish
. Wrangler will output the URL. If you want to deploy to a custom domain see here.