コンテンツにスキップ

abstract Resource

リソースを表現するクラスです。 URLやキャッシュ、クラウドサービス等、各種リソースへのアクセス(認証処理含む)を同一インターフェースで提供することを目的とした抽象クラスです。

基本機能:

  • コンストラクタ等によりあらかじめURLやデータの位置を示すプロパティを設定
  • load() によりメインリソースを読み込む
  • loadSubResource(url) によりサブリソースを読み込む
  • resolveResource(url) により、関連リソースを作成する。

Filter:

  • loadSubResourceSupported(url) により、サブリソースを読み込むことができるか判定する
  • resolveResourceSupported(url) により、関連リソースを作成できるか判定する
  • Resource.setFilter(filter) により、上記判定を行うフィルタを設定する
  • Resource.setFallbackResource(resource) により、このリソースが処理できない場合に、処理を代替するリソースを指定する
  • URLResource.resolveResource(url) で作成した関連リソースには、作成した時点のフィルタとフォールバックリソースを写す

デフォルトの動作は、フィルタは全ての url を許可し fallback_resource は指定されていない。

派生クラスでの実装: - サブリソースの取得処理は _loadSubResource(url, options) に実装する。 - フィルタ処理は基底クラスの loadSubResource(url) が担い、検証を通過した URL のみを _loadSubResource に渡す。 loadSubResource をオーバーライドするとフィルタが無効化されるため、オーバーライドしてはならない。

セキュリティ上の注意: デフォルトのフィルタは URL を制限しない。タイルセット JSON やシーンファイルなど、 外部データが URL を指定する経路では、悪意あるデータによって任意のホストへリクエストが送信され、 社内ネットワークの走査といった踏み台攻撃に悪用される恐れがある。 信頼できないデータを扱うアプリケーションは、Resource.setFilter で許可するオリジンを明示すること。 (※後方互換性を維持し、既存環境の動作破損を防ぐため、デフォルトは「全許可」としている) 標準のプロバイダは cloud info などから resolveResource() でリソースを差し替えるので、Resource を自作する場合は、 resolveResource() で作成したリソースに _inheritFilter() でフィルタとフォールバックを写すこと。

Extended by

Constructors

new Resource()

new Resource(): Resource

Returns

Resource

Properties

_filter

protected _filter: FilterFunc = DEFAULT_FILTER

Methods

_inheritFilter()

protected _inheritFilter(resource): Resource

このリソースのフィルタとフォールバックリソースを、resolveResource で作成したリソースに設定する

Parameters

Parameter Type
resource Resource

Returns

Resource


_loadSubResource()

protected _loadSubResource(url, options): Promise<any>

サブリソースを取得する。サブリソースを持つ派生クラスが実装する。

loadSubResource がフィルタを通した url だけが渡されるので、ここでフィルタを掛け直す必要はない。 このクラスでの実装は例外を投げる。

Parameters

Parameter Type Description
url string URL (相対 url はこのリソースを基準に解決する)
options Option

Returns

Promise<any>

options.type に応じた型


cancel()

cancel(): void

リソースの読み込みをキャンセルできる場合はキャンセルします。

Returns

void


load()

load(options): Promise<any>

リソースを読み込みます。

Parameters

Parameter Type
options Option

Returns

Promise<any>


loadAsBinary()

loadAsBinary(options): Promise<ArrayBuffer>

バイナリリソースを読み込みます。

Parameters

Parameter Type
options Option

Returns

Promise<ArrayBuffer>


loadAsImage()

loadAsImage(options): Promise<HTMLImageElement>

イメージリソースを読み込みます。

Parameters

Parameter Type
options Option

Returns

Promise<HTMLImageElement>


loadAsJson()

loadAsJson(options): Promise<object>

Jsonリソースを読み込みます。

Parameters

Parameter Type
options Option

Returns

Promise<object>


loadAsText()

loadAsText(options): Promise<string>

テキストリソースを読み込みます。

Parameters

Parameter Type
options Option

Returns

Promise<string>


loadSubResource()

loadSubResource(url, options): Promise<any>

サブリソースを読み込みます。

loadSubResourceSupported が許可した url は _loadSubResource へ渡す。 許可しない url はフォールバックリソースの loadSubResource に委ね、 フォールバックリソースが無ければ例外を投げる。

Parameters

Parameter Type Description
url string URL
options Option

Returns

Promise<any>

options.type に応じた型で返却されます。

See

loadSubResourceSupported


loadSubResourceAsBinary()

loadSubResourceAsBinary(url, options): Promise<ArrayBuffer>

バイナリリソースを読み込みます。

Parameters

Parameter Type
url string
options Option

Returns

Promise<ArrayBuffer>


loadSubResourceAsImage()

loadSubResourceAsImage(url, options): Promise<HTMLImageElement>

イメージリソースを読み込みます。

Parameters

Parameter Type
url string
options Option

Returns

Promise<HTMLImageElement>


loadSubResourceAsJson()

loadSubResourceAsJson(url, options): Promise<object>

Jsonリソースを読み込みます。

Parameters

Parameter Type
url string
options Option

Returns

Promise<object>


loadSubResourceAsText()

loadSubResourceAsText(url, options): Promise<string>

テキストリソースを読み込みます。

Parameters

Parameter Type
url string
options Option

Returns

Promise<string>


loadSubResourceSupported()

loadSubResourceSupported(url): boolean

Parameters

Parameter Type
url string

Returns

boolean


resolveResource()

resolveResource(url): Resource

関連リソースを読み込みます。

作成したリソースにこのリソースのフィルタ (setFilter) とフォールバックリソース (setFallbackResource) を引き継ぐかは、具象クラスが決める。

このクラスでの実装は例外を投げる。フォールバックリソースへの委託は safeResolveResource が行う。

Parameters

Parameter Type
url string

Returns

Resource

See

resolveResourceSupported


resolveResourceSupported()

resolveResourceSupported(url): boolean

関連リソース(url)を作成可能かを判定します。

Parameters

Parameter Type
url string

Returns

boolean


setFallbackResource()

setFallbackResource(resource?): void

フォールバックリソースを設定します。

このリソースで処理できない url については、フォールバックリソースによって処理されます。

Parameters

Parameter Type
resource? Resource

Returns

void

See

resolveResourceSupported


setFilter()

setFilter(filter): void

このリソースにおいて、サブリソースの読み込みおよび関連リソースの作成が可能な url であるかを判別する filter を設定します。

URLResource では、フィルタは transform を掛ける前の url を、fetch が要求する形に正規化して受け取る。 相対 url は絶対 url に、ホストは小文字になり、.. は畳まれ、既定のポートは消え、非 ASCII 文字の percent-encode だけは戻る。文字列は前方一致で比べ、http / https の接頭辞だけ同じ規則で正規化する (ホストだけなら末尾に / が付く)。"/data/" のような相対の接頭辞は、URLResource では一致しない。

Parameters

Parameter Type
filter Filter

Returns

void

See

resolveResourceSupported


toString()

toString(): string

リソースのテキスト表現

Returns

string