module

ServiceStatus

ソース実装:外部サービスの障害検知(issue #5)。

VRChat や YouTube の障害を VR の中で知るためのソースである。 VR プレイ中に「VRChat 側の障害なのか自環境の問題なのか」を切り分けるのが目的であり、 稼働状態が変わったときだけ通知を出す。

取得元は各サービスのステータスページではなく、VRCServiceStatusPanel の配信 JSON である。 あちらが 1 分ごとに各サービスを見て 4 段階のレベルへ判定済みで配っており、 本体側に Statuspage の読み方や合成監視の判定を持ち込まずに済む。 この JSON の形は VRCServiceStatusPanel の仕様書 4 章にある。

Constants

DEFAULT_ENABLED_SERVICES = ["vrchat", "youtube", "steam"] of ::String

既定で知らせるサービス。issue #5 のコメントで決めた 3 つである。

KNOWN_SERVICES = {"vrchat" => "VRChat", "youtube" => "YouTube", "steam" => "Steam", "booth" => "BOOTH", "discord" => "Discord", "cloudflare" => "Cloudflare", "twitch" => "Twitch"}

配信に含まれるサービス。設定画面に並べる順序と、設定ファイルの既定に使う。

配信側の並び(VRCServiceStatusPanel の main.cr)に合わせてある。 表示名は配信の name を使うが、画面は取得の前に組み立てるためここにも持つ。

PAGE_URL = "https://vrc-status.oxymoron.link/index.html"

取得元の VRCServiceStatusPanel。設定画面から開けるようにする。 今の状態を見るページと、配信の中身を説明したリポジトリである。

REPOSITORY_URL = "https://github.com/limit7412/VRCServiceStatusPanel"
SCHEMA_VERSION = 1

配信 JSON の読める版。これ以外は読まない。 版が上がるのは互換性のない変更のときであり、古い解釈で読み続けると誤った状態を知らせる。

SOURCE_ID = "service_status"

Nested types