https://github.com/tsukumijima/konomitv-api
KonomiTV Utility API
https://github.com/tsukumijima/konomitv-api
cloudflare cloudflare-workers konomitv
Last synced: 4 months ago
JSON representation
KonomiTV Utility API
- Host: GitHub
- URL: https://github.com/tsukumijima/konomitv-api
- Owner: tsukumijima
- License: mit
- Created: 2022-04-28T20:11:51.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2023-01-09T02:14:26.000Z (about 3 years ago)
- Last Synced: 2025-10-11T18:08:56.361Z (4 months ago)
- Topics: cloudflare, cloudflare-workers, konomitv
- Language: TypeScript
- Homepage: https://app.konomi.tv/api/
- Size: 49.8 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- License: License.txt
Awesome Lists containing this project
README
# KonomiTV-API
[KonomiTV](https://github.com/tsukumijima/KonomiTV) に関連する小さな API です。
この API は [Cloudflare Workers](https://workers.cloudflare.com/) 向けに書かれています。https://app.konomi.tv/api/ で稼働中です。
## 概要
[gmencz/cloudflare-workers-typescript-esbuild-esm](https://github.com/gmencz/cloudflare-workers-typescript-esbuild-esm) を参考にして開発しました。
現時点では、Twitter API / ニコニコ API のコールバック URL を、KonomiTV サーバーにクエリごと 302 リダイレクトする API を実装しています。
ちょっと URL を修正してリダイレクトするだけの API のためだけにサーバーを立てたくなかったので、無料枠の大きい Cloudflare Workers を採用しました。
OAuth の認証では、コールバック先の URL を、事前にサービスのデベロッパーダッシュボードなどで設定しておく必要があります。
一方、KonomiTV サーバーの URL (プライベート IP アドレス) は環境によってまちまちで、コールバックする URL を一意に決められません。
> コールバック URL はほとんどのサービスで複数設定できるものの、考えられるすべての URL を指定するのは非現実的…。
そこで、一旦この API にコールバック URL を集約してから、サービスからのリダイレクト結果をそれぞれの KonomiTV サーバーに振り分けることにしました。
Twitter API では、クエリの "server" パラメーターで指定された、KonomiTV サーバーの URL へ振り分けます。
それ以外の API では、クエリの "state" パラメーターの JSON (Base64 エンコードされている) 内の "server" プロパティで指定された、KonomiTV サーバーの URL へ振り分けます。
最後に KonomiTV サーバーがこの API からのリダイレクトを受け取ることで、コールバック対象の URL が定まらなくても、OAuth 連携ができるようになります。
## 開発
### 環境構築
```bash
$ npm install -g @cloudflare/wrangler
```
事前に [wrangler](https://github.com/cloudflare/wrangler) をインストールしてください。当然 Cloudflare アカウントも必要です。
```bash
$ yarn install
```
依存パッケージをインストールします。
そのあと、wrangler.toml を編集します。
自分のアカウントやドメインで動かしたい場合は、少なくとも route, account_id, zone_id を変更する必要があります。
### ビルド
```bash
$ yarn build
```
dist/worker.mjs にビルド済みの JS ファイルが出力されます。
このファイルが Cloudflare Workers にデプロイされます。
### 開発サーバーの起動
```bash
$ yarn dev
```
[Miniflare](https://github.com/cloudflare/miniflare) を使い、ローカル内だけで開発できるように設定しています。
開発サーバーは http://localhost:8787/api/ でリッスンされます。
### デプロイ
```bash
$ yarn publish-worker
```
ビルドとデプロイが同時に行われます。
デプロイした worker.mjs は、10 秒ほどで Cloudflare Workers に反映されます。
> yarn だと publish が内蔵のコマンドと被ってしまうため、`-worker` の Suffix を付けざるを得ない…
## License
[MIT License](License.txt)