Cloudflare Worker LeetCode Progress
Generate LeetCode progress as a SVG deployed on Cloudflare Workers.
Usage
const createHandler = require('@momocow/cloudflare-worker-leetcode-progress').default
const handleRequest = createHandler({ });
addEventListener('fetch', (event) => {
event.respondWith(handleRequest(event) ?? new Response('', { status: 405 }));
});
Remember to configure your wrangler.toml
to build with webpack.
type = "webpack"
Options
cacheName
: string = undefined
If it is undefined
, no caches will be used. If it's "default"
, the default cache will be used; otherwise a new cache is opened using the provided name. See await caches.open(name)
.
cacheTTL
: number = 300000 (in ms)
The value is used to generate the max age of Cache-Control
and compute the Expires
time.
cors
: boolean = false
Allow CORS or not. If set, CORS headers will be generated and OPTIONS method will be handled.
hashAlgorithm
: "sha1" | "sha256" | "sha384" | "sha512" = "sha1"
Hash algorithm to use to generate ETag.
leetcodeGraphqlUrl
: string = "https://leetcode.com/graphql"
LeetCode GraphQL endpoint.
progressType
: "global" | "session" = "global"
Type of LeetCode progress to display. If it's "session", the statistics of the current active session is fetched.
This option is set for the default progress type; however, at each request, ones can provided progress-type
parameter in the query string to change the value.
userlist
: Set<string> = undefined
Access control for your Worker. If provided, only usernames appear in the set is allowed to generate the progress; otherwise, 403 forbidden is responsed.
Note that leave it undefined means access control disabled, every is allowed to access the Worker.
fetch
: typeof fetch = fetch
This option is passed to graphql-request
to avoid using XMLHttpRequest (No such API in Worker Runtime).
Query String Parameters
username
: stringprogress-type
: "global" | "session"