diff options
author | devin ivy <devinivy@gmail.com> | 2024-06-20 17:45:52 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-20 17:45:52 -0400 |
commit | 51f5e6bf900685ef92191f22949d09035733c682 (patch) | |
tree | 7e613992c1b131f4fe082a794ae9c32555d87b12 /bskyogcard/src/context.ts | |
parent | eac4668d7312b35721e147e808c181b2be0256bf (diff) | |
download | voidsky-51f5e6bf900685ef92191f22949d09035733c682.tar.zst |
Bsky link card service (#4547)
* setup bskycard * quick proof of concept for png card generation * bskycard: use jsx * bskycard: 3x5 profile layout * bskycard: add butterfly overlay * bskycard: tidy * bskycard: separate and reorganize * bskycard: tidy * bskycard: tidy * bskycard: tidy * bskycard: poc of transparent overlay and box shadow * bskycard: reorg impl into src/ directory * bskycard: use more standard app structure * bskycard: setup dockerfile, fix build * bskycard: support for x-origin-verify * bskycard: card layout, filter images based on labels * bskycard: tidy * bskycard: support cluster mode * bskycard: handle error fetching starter pack info * bskycard: tidy * bskycard: fix leak on failed image fetch * bskycard: build workflow * bskyogcard: rename from bskycard * bskyogcard: fix some express plumbing * bskyogcard: add cdn tags, tidy
Diffstat (limited to 'bskyogcard/src/context.ts')
-rw-r--r-- | bskyogcard/src/context.ts | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/bskyogcard/src/context.ts b/bskyogcard/src/context.ts new file mode 100644 index 000000000..f92651caf --- /dev/null +++ b/bskyogcard/src/context.ts @@ -0,0 +1,44 @@ +import {readFileSync} from 'node:fs' + +import {AtpAgent} from '@atproto/api' +import * as path from 'path' +import {fileURLToPath} from 'url' + +import {Config} from './config.js' + +const __DIRNAME = path.dirname(fileURLToPath(import.meta.url)) + +export type AppContextOptions = { + cfg: Config + appviewAgent: AtpAgent + fonts: {name: string; data: Buffer}[] +} + +export class AppContext { + cfg: Config + appviewAgent: AtpAgent + fonts: {name: string; data: Buffer}[] + abortController = new AbortController() + + constructor(private opts: AppContextOptions) { + this.cfg = this.opts.cfg + this.appviewAgent = this.opts.appviewAgent + this.fonts = this.opts.fonts + } + + static async fromConfig(cfg: Config, overrides?: Partial<AppContextOptions>) { + const appviewAgent = new AtpAgent({service: cfg.service.appviewUrl}) + const fonts = [ + { + name: 'Inter', + data: readFileSync(path.join(__DIRNAME, 'assets', 'Inter-Bold.ttf')), + }, + ] + return new AppContext({ + cfg, + appviewAgent, + fonts, + ...overrides, + }) + } +} |