<?php namespace App\Exceptions;

use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
use Throwable;
use RuntimeException;
use Lang;

class ApiHttpException extends RuntimeException implements HttpExceptionInterface{
    private $apiMessage;
    private $context;
    private $statusCode;
    private $headers;

    public function __construct($statusCode, $apiError, Throwable $previous = null, array $context = [], array $headers = [], $code = 0){
        $this->statusCode = $statusCode;
        $this->headers = $headers;

        if (is_array($apiError)) {
            $this->apiMessage = $apiError;
        } else {
            $this->apiMessage = array(
                "error" => $apiError,
                "description" => Lang::get("response.{$apiError}"),
            );
        }

        $this->context = $context;

        parent::__construct($this->apiMessage["description"], $code, $previous);
    }

    public function getApiMessage()
    {
        return $this->apiMessage;
    }

    public function getContext()
    {
        return $this->context;
    }

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

    public function getHeaders()
    {
        return $this->headers;
    }
}