SpaceClient は、DID Space API と対話するための主要なインターフェースです。SDK のメインエントリポイントであり、設定、認証、および DID Space へのコマンドのディスパッチを担当します。
コンストラクタ
まず、SpaceClient のインスタンスを作成する必要があります。コンストラクタは、認証情報やエンドポイントの詳細など、その動作を設定するための単一の options オブジェクトを受け入れます。
Client Initialization
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 エンドポイント。
- wallet
- AuthorizationAuth
object— 事前に生成された認証トークンを使用した認証。- authorization
string(required) — 認証トークン。
- authorization
- AccessKeyAuth
object— シークレットキーを使用した認証。- secretKey
string(required) — シークレットアクセスキー。
- secretKey
- EndpointAuth
- 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
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) — コマンドによって返されるデータ。実行されたコマンドによって異なります。
- statusCode
静的メソッド
これらは SpaceClient クラスで直接利用可能なユーティリティ関数です。
getBaseUrl
完全なエンドポイント URL から DID Space のベース URL を抽出します。
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 を構築します。
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 などのコンテキスト情報を抽出します。
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。
次のステップ
これでクライアントの初期化方法とコマンドの送信方法がわかったので、スペースと対話するために利用可能なコマンドを調べてみましょう: