# Server

Di [halaman](/openwaclient/client-side/quick-start/server.md) tersebut Anda dapat:

* Mengecek aksesibilitas server RESt API untuk memastikan server dapat diakses atau tidak
* Mengecek mobile phone apakah terkoneksi dengan internet atau tidak
* Mengecek server RESt API apakah harus melakukan autentikasi untuk mengakses servernya atau tidak
* Mengecek validitas API key client, apakah API key tersebut dapat digunakan untuk melakukan autentikasi

Anda tidak harus menggunakan fitur dibawah, sebab saya sudah membuat validator ketika inisiasi dibuat. Ketika inisiasi dibuat otomatis sudah mengecek:

* Aksesibilitas server
* Validasi autentikasi

Anda tidak perlu membuat validator lagi

### Tentang Validator Bawaan

```php
    /**
     * @var Initiation
     */
    private Initiation $initiation;

    /**
     * @param     String          $base_uri     Base Uri (e.g http://localhost:8080/)
     * @param     String|NULL     $api_key      API Key
     *
     * @throws OpenWAException
     */
    public function __construct(string $base_uri, String $api_key = NULL)
    {
        $this->initiation = new Initiation($base_uri, $api_key);

        $server = $this->Server();
        if (!$server->isAccessible()){
            throw new OpenWAException("The server is inaccessible, make sure you put a right host!");
        }
        elseif (!$server->callFromFactory()->isApiKeyValid()){
            throw new OpenWAException("Invalid API Key");
        }
        elseif (!$server->isPhoneConnected()){
            throw new OpenWAException("Phone is disconnected!, make sure your phone is connected from internet");
        }
    }
```

#### [Lihat di source code](https://github.com/ardzz/OpenWAClient/blob/master/src/Factory.php#L28)

### Aksesibilitas Server

Output yang dikeluarkan berupa **boolean** (true/false)

{% tabs %}
{% tab title="Penggunaan" %}

```php
$openwa->Server()->isAccessible();
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Contoh" %}

```php
if($openwa->Server()->isAccessible()){
    echo "Server RESt API dapat diakses!";
}else{
    echo "Server RESt API tidak dapat diakses";
}
```

{% endtab %}
{% endtabs %}

### Apakah Sever Butuh Autentikasi?

Output yang dikeluarkan berupa **boolean** (true/false)

{% tabs %}
{% tab title="Penggunaan" %}

```php
$openwa->Server()->isNeedAuthentication();
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Contoh" %}

```php
if($openwa->Server()->isNeedAuthentication()){
    echo "Server membutuhkan autentikasi!";
}else{
    echo "Server tidak membutuhkan autentikasi atau server tidak dapat diakses";
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Disini ada 2 kemungkinan jika nilai dari&#x20;

```php
$openwa->Server()->isNeedAuthentication();
```

adalah false:

* Server tidak membutuhkan autentikasi
* Server tidak dapat diakses
  {% endhint %}

### Apakah API Key Saya Valid?

Output yang dikeluarkan berupa **boolean** (true/false)

{% tabs %}
{% tab title="Penggunaan" %}

```php
$openwa->Server()->isApiKeyValid();
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Contoh" %}

```php
if($openwa->Server()->isApiKeyValid()){
    echo "API Key valid!";
}else{
    echo "Api Key tidak valid atau server tidak membutuhkan autentikasi atau server tidak dapat diakses";
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Disini ada 3 kemungkinan jika nilai dari&#x20;

```
$openwa->Server()->isApiKeyValid();
```

adalah false:

* API key tidak valid
* Server tidak membutuhkan autentikasi
* Server tidak dapat diakses
  {% endhint %}

### Apakah Mobile Phone Terkoneksi Dengan Internet?

Output yang dikeluarkan berupa **boolean** (true/false)

{% tabs %}
{% tab title="Penggunaan" %}

```php
$openwa->Server()->isPhoneConnected();
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Contoh" %}

```php
if($openwa->Server()->isPhoneConnected()){
    echo "Mobile phone memiliki akses internet!";
}else{
    echo "Mobile phone tidak memiliki akses internet!";
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ardzz.gitbook.io/openwaclient/client-side/quick-start/server.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
