# metricool/2.1.1/app/Http/RSPAL/RspalApiResponse.php

Metricool – Social media and site statistics, version 2.1.1. 49 lines.

- Page: https://pluginprobe.com/plugins/metricool/2.1.1/code/app/Http/RSPAL/RspalApiResponse.php
- Raw: https://pluginprobe.com/plugins/metricool/2.1.1/raw/app/Http/RSPAL/RspalApiResponse.php
- Modified: 2026-08-20T14:08:30+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/metricool/2.1.1/code/app/Http/RSPAL/RspalApiResponse.php#L10-L20`.

```php
<?php

namespace Metricool\Http\RSPAL;

use Metricool\Vendor\Psr\Http\Message\ResponseInterface;
use Metricool\Exceptions\RestDataException;

class RspalApiResponse
{
    public int $statusCode;
    public object $data;

    public function __construct(int $statusCode, object $data)
    {
        $this->statusCode = $statusCode;
        $this->data = $data;
    }

    public static function fromResponse(ResponseInterface $response): self
    {
        $statusCode = $response->getStatusCode();
        $body = $response->getBody()->getContents();
        $data = json_decode($body, false);

        if (!is_object($data)) {
            throw new RestDataException('Invalid or empty response from the API');
        }

        if (isset($data->status) && $data->status == 'OK') {
            throw new RestDataException('An error occurred');
        }

        return new self(
            $statusCode,
            $data
        );
    }

    public function getStatusCode(): int
    {
        return $this->statusCode;
    }

    public function getData(): object
    {
        return $this->data;
    }
}

```
