メインコンテンツへスキップ

SpaceClient

SpaceClient は、DID Space API と対話するための主要なインターフェースです。SDK のメインエントリポイントであり、設定、認証、および DID Space へのコマンドのディスパッチを担当します。

コンストラクタ

まず、SpaceClient のインスタンスを作成する必要があります。コンストラクタは、認証情報やエンドポイントの詳細など、その動作を設定するための単一の options オブジェクトを受け入れます。

Client Initialization

typescript
import { SpaceClient } from '@blocklet/did-space-js';
import getWallet from '@blocklet/sdk/lib/wallet';

const wallet = getWallet();

const client = new SpaceClient({
  auth: {
    wallet: wallet,
    endpoint: 'https://www.didspaces.com/app/api/space/...',
  },
});

オプション (SpaceClientOptions)

コンストラクタは、以下のプロパティを持つオブジェクトを受け入れます:

  • auth object — 認証情報を提供するための推奨される方法。いくつかのタイプのいずれかになります。
    • EndpointAuth object — ウォレットと特定のスペースエンドポイントを使用した認証。
      • wallet WalletObject (required) — リクエストに署名するためのウォレットオブジェクト。通常は '@blocklet/sdk/lib/wallet' から取得します。
      • endpoint string (required) — DID Space アプリケーションの完全な API エンドポイント。
    • AuthorizationAuth object — 事前に生成された認証トークンを使用した認証。
      • authorization string (required) — 認証トークン。
    • AccessKeyAuth object — シークレットキーを使用した認証。
      • secretKey string (required) — シークレットアクセスキー。
  • wallet WalletObject (deprecated) — ウォレットオブジェクト。代わりに auth オブジェクトを使用することをお勧めします。
  • endpoint string (deprecated) — DID Space エンドポイントの URL。代わりに auth オブジェクトを使用することをお勧めします。
  • url string (default: https://www.didspaces.com) — DID Spaces サービスのベース URL。クライアントは正しいアプリケーションのマウントポイントを自動的に解決します。
  • delegation string — リクエスターがスペースへのアクセスを許可されていることを証明する JWT トークン。
  • componentDid string — リクエストを行うコンポーネントの DID。
  • abortController AbortController — 進行中のリクエストをキャンセルするための AbortController インスタンス。

メソッド

send

send メソッドは、DID Space に対して任意のコマンドを実行するための汎用的な方法です。コマンドオブジェクトのインスタンスを渡すと、コマンドの出力で解決されるプロミスを返します。

Sending a Command

typescript
import { SpaceClient, PutNftObjectCommand } from '@blocklet/did-space-js';
import getWallet from '@blocklet/sdk/lib/wallet';
import { fileURLToPath } from 'url';
import path from 'path';
import fs from 'fs';

const __dirname = path.dirname(fileURLToPath(import.meta.url));

async function uploadNft() {
  const wallet = getWallet();
  const client = new SpaceClient({
    auth: {
      wallet: wallet,
      endpoint: 'https://www.didspaces.com/app/api/space/...',
    },
  });

  const filePath = path.join(__dirname, 'my-nft-image.png');
  const fileStream = fs.createReadStream(filePath);
  const fileStat = fs.statSync(filePath);

  const command = new PutNftObjectCommand({
    name: 'My First NFT',
    description: 'This is a description of my NFT.',
    body: fileStream,
    contentLength: fileStat.size,
    contentType: 'image/png',
  });

  const output = await client.send(command);

  if (output.statusCode === 200) {
    console.log('NFT uploaded successfully!', output.data);
  } else {
    console.error('Upload failed:', output.statusMessage);
  }
}

uploadNft();

パラメータ

  • command CommandProtocol<Input, Output> (required) — PutObjectCommand や ListObjectsCommand などのコマンドクラスのインスタンス。

戻り値

コマンドの出力オブジェクトに解決される Promise

  • Output Promise<CommandOutput> — コマンド実行の結果。
    • statusCode number (required) — レスポンスの HTTP ステータスコード(例:成功の場合は 200)。
    • statusMessage string — リクエストが失敗した場合のエラーメッセージ。
    • stack string — エラーが発生した場合のスタックトレース。
    • data any (required) — コマンドによって返されるデータ。実行されたコマンドによって異なります。

静的メソッド

これらは SpaceClient クラスで直接利用可能なユーティリティ関数です。

getBaseUrl

完全なエンドポイント URL から DID Space のベース URL を抽出します。

typescript
import { SpaceClient } from '@blocklet/did-space-js';

const endpoint = 'https://.../app/api/space/z3T.../app/zNK.../object/';
const baseUrl = await SpaceClient.getBaseUrl(endpoint);
console.log(baseUrl); // 'https://.../app'

getDisplayUrl

DID Space 内のオブジェクトを表示するための公開 URL を構築します。

typescript
import { SpaceClient } from '@blocklet/did-space-js';

const endpoint = 'https://.../app/api/space/z3T.../app/zNK.../object/';
const objectDid = 'z3T...'; // The DID of the object
const displayUrl = await SpaceClient.getDisplayUrl(endpoint, objectDid);
console.log(displayUrl);
// 'https://.../app/resolve/z3T.../display'

getSpaceEndpointContext

完全なエンドポイント URL を解析して、Space DID や Application DID などのコンテキスト情報を抽出します。

typescript
import { SpaceClient } from '@blocklet/did-space-js';

const endpoint =
  'https://.../api/space/z3T6WZD3dBtaVUgwb3rtBey8BartrJDTLrmQr/app/zNKsSUmUVJntiVdAPpg8vYtEgnFvSppYLf4F/object/';
const context = await SpaceClient.getSpaceEndpointContext(endpoint);

console.log(context.spaceDid); // 'z3T6WZD3dBtaVUgwb3rtBey8BartrJDTLrmQr'
console.log(context.appDid); // 'zNKsSUmUVJntiVdAPpg8vYtEgnFvSppYLf4F'

戻り値

SpaceEndpointContext オブジェクトに解決される Promise

  • context Promise<SpaceEndpointContext> — エンドポイントから解析されたコンテキスト情報。
  • baseUrl string (required) — スペースのベース URL。
  • spaceDid string (required) — スペースの DID。
  • appDid string (required) — スペース内のアプリケーションの DID。

次のステップ

これでクライアントの初期化方法とコマンドの送信方法がわかったので、スペースと対話するために利用可能なコマンドを調べてみましょう: