> For the complete documentation index, see [llms.txt](/llms.txt)

# SDK

GS2-SDK の初期化方法について



SDK の初期化のためには Credential、 Session というオブジェクトを作成する必要があります。

## Credential

GS2 のAPIキーを表現するオブジェクトです。
`BasicGs2Credential` というクラスが定義されており、clientId / clientSecret を使用したAPIの利用時には、こちらを使用します。

### BasicGs2Credential パラメータ

| 引数名 | 説明 |
| ----- | --- |
| clientId | クライアントID |
| clientSecret | クライアントシークレット |

## Session

Session には、HTTP 通信を利用する `Gs2RestSession` と、WebSocket 通信を利用する `Gs2WebSocketSession` の 2 種類があります。
プログラミング言語によっては `Gs2WebSocketSession` がサポートされていない場合があり、またペイロードが大きくなるリクエストには利用できない制約があります。
そのため、サーバーからのプッシュ通知を必要としない場合は、原則として `Gs2RestSession` を利用してください。

### Gs2RestSession Request

| 引数名 | 説明 |
| ----- | --- |
| credential | Credentialオブジェクト |
| region | 接続先のGS2リージョン |

### Gs2WebSocketSession Request

| 引数名 | 説明 |
| ----- | --- |
| credential | Credentialオブジェクト |
| region | 接続先のGS2リージョン |

### 初期化

作成した Session オブジェクトは使用する前に接続処理が必要です。

セッションオブジェクトには接続APIが用意されており、そちらを呼び出すことで接続を実行できます。




**Go**
```go

    session := core.Gs2RestSession{
        Credential: &core.BasicGs2Credential{
            ClientId: "your client id",
            ClientSecret: "your client secret",
        },
        Region: core.ApNortheast1,
    }

    if err := session.Connect(); err != nil {
        panic("error occurred")
    }
```

**PHP**
```php

    $session = new Gs2RestSession(
        new BasicGs2Credential(
            "your client id",
            "your client secret"
        ),
        Region::AP_NORTHEAST_1
    );

    $session->open();
```

**Java**
```java

    Gs2RestSession session = new Gs2RestSession(
        Region.AP_NORTHEAST_1,
        new BasicGs2Credential(
            "your client id",
            "your client secret"
        )
    );
    session.connect();
```

**C#**
```csharp

    var session = new Gs2RestSession(
        new BasicGs2Credential(
            "your client id",
            "your client secret"
        ),
        Region.ApNortheast1
    );
    yield return session.Open();
```

**TypeScript**
```typescript

    const session = new Gs2Core.Gs2RestSession(
        "ap-northeast-1",
        new BasicGs2Credential(
            "your client id",
            "your client secret"
        )
    );
    await session.connect();
```

**Python**
```python

    session = core.Gs2RestSession(
        core.BasicGs2Credential(
            "your client id",
            "your client secret"
        ),
        "ap-northeast-1",
    )
    session.connect()
```


#### カオスモード

カオスモードを適用したSDK初期化処理を呼び出すことで、APIリクエストを一定の確率で失敗させることができます。
カオスモードを有効にしたクライアントを使用して開発を進めることで、エラーハンドリングを強固なものにすることができます。




**C#**
```csharp

    var session = new ChaosGs2RestSession(
        new BasicGs2Credential(
            "your client id",
            "your client secret"
        ),
        0.1f, // APIリクエスト時に10%の確率でリトライが必要なエラーを発生させる
        Region.ApNortheast1
    );
    yield return session.Open();
```



## マイクロサービスのクライアント

GS2 が提供する各種マイクロサービスごとにクライアントが用意されています。
マイクロサービスのクライアントにも `Gs2AccountRestClient` と `Gs2AccountWebSocketClient` のように通信プロトコルごとのクライアントが用意されており、それぞれ `Gs2RestSession` と `Gs2WebSocketSession` を必要とします。

### Gs2AccountRestClient Request

| 引数名 | 説明 |
| ----- | --- |
| session | Gs2RestSession |

### Gs2AccountWebSocketClient Request

| 引数名 | 説明 |
| ----- | --- |
| session | Gs2WebSocketSession |

### 実装例




**Go**
```go

client := account.Gs2AccountRestClient{
    Session: &session,
}
```

**PHP**
```php

$client = new Gs2AccountRestClient($session);

```

**Java**
```java

Gs2AccountRestClient client = new Gs2AccountRestClient(session);

```

**C#**
```csharp

var client = new Gs2AccountRestClient(session);
```

**TypeScript**
```typescript

const client = new Gs2Account.Gs2AccountRestClient(session);

```

**Python**
```python

client = account.Gs2AccountRestClient(session)

```





