Skip to content

momocow/cloudflare-worker-leetcode-progress

Folders and files

NameName
Last commit message
Last commit date

Latest commit

8be282f Β· May 28, 2022

History

12 Commits
May 28, 2022
Aug 16, 2021
Aug 16, 2021
Aug 16, 2021
Aug 16, 2021
Aug 16, 2021
Aug 16, 2021
May 28, 2022
Sep 23, 2021
Sep 23, 2021
Aug 16, 2021
Aug 16, 2021

Repository files navigation

Cloudflare Worker LeetCode Progress

Generate LeetCode progress as a SVG deployed on Cloudflare Workers.

Demo

MomoCow's LeetCode Progress

Installation

npm i @momocow/cloudflare-worker-leetcode-progress

Usage

const createHandler = require('@momocow/cloudflare-worker-leetcode-progress').default
const handleRequest = createHandler({ /* options */ });

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: string
  • progress-type: "global" | "session"
  • theme: "default" | "dark"