IsraelOrtuno / pipedrive

Complete Pipedrive API client for PHP
MIT License
166 stars 58 forks source link

Improved error handling for HTTP Response isSuccess method #136

Open AdamChildrenPMAHR opened 1 year ago

AdamChildrenPMAHR commented 1 year ago

What is the issue:

Undefined property: stdClass::$success

The method is assuming that the success property will always be passed as part of the content body. Pipedrive does not pass this key on unsuccessful response codes (404 in this use case) so this will cause a status 500 from the dependency.

Where is the cause of the issue

File

vendor/devio/pipedrive/src/Http/Response.php

Codeblock

Line 53

/**
* Check if the request was successful.
*
* @return bool
*/
public function isSuccess()
{
if (! $this->getContent()) {
return false;
}
    return $this->getContent()->success;
}

#### Resolution
You can either use `isset` in the conditional statement or the return. 

As there may be at some point a `success` property passed for status codes, it's probably best to use it in the if statement for this use case.
```php
    /**
     * Check if the request was successful.
     *
     * @return bool
     */
    public function isSuccess()
    {
        if (! $this->getContent() || ! isset($this->getContent()->success)) {
            return false;
        }

        return $this->getContent()->success;
    }
gabrielpeixoto commented 12 months ago

I have the same error