# Java SDK

The Java Bot SDK empowers developers with the capability to manage chats and send/receive messages.

## Install

### Add dependency

```groovy
repositories {
    maven {
        url 'https://s01.oss.sonatype.org/content/repositories/releases/'
    }
}

dependencies {
    implementation 'io.github.sending-network:sdn-sdk-java:0.1.0'
}
```

### Prepare a configuration file

{% hint style="info" %}
Use <https://portal0101.sending.network/> as the public endpoint.&#x20;
{% endhint %}

Provide P2P node `endpoint`, `wallet address`*,* and `private key` in *config.yam*l:

```yaml
endpoint: ""
wallet_address: ""
private_key: ""
```

### Create `Client` Instance

Once the configuration file has been read, create a `Client` instance, register the event listener, and initiate the syncing process.

```java
import org.yaml.snakeyaml.Yaml;
import com.sending.sdk.Client;

Map<String, Object> config = new Yaml().load(new BufferedReader(new FileReader(configFile)));
Client client = new Client((String)config.get("endpoint"));
client.loginDID((String)config.get("wallet_address"), (String)config.get("private_key"));

client.registerRoomEventListener(roomEvents -> {
    // process room events
    roomEvents.forEach(System.out::println);
});
client.startSync();
```

### Call API functions

```java
// create new room
String roomId = client.createRoom(roomName, "", null, System.out::println);

// invite user to the room
String userId = ""
client.inviteUser(roomId, userId, null);

// send room message
String eventId = client.sendMessage(roomId, "hello");

// logout to invalidate access token
client.logout()
```
