xero-php icon indicating copy to clipboard operation
xero-php copied to clipboard

No response from request->send() when no content is returned from xero

Open arunmanivel opened this issue 2 years ago • 2 comments

I am using BankStatement API to sync bank statements from Xero for a given account ID. It works fine except when there is no content returned from Xero. Please see below my code. The program dies after $request->send().

function xero_get_bank_statements($fromDate,$toDate,$accountID) { $url = new URL($xero, 'Reports/BankStatement'); $request = new Request($xero, $url, Request::METHOD_GET); $request->setParameter('bankAccountID', $accountID); $request->setParameter('fromDate', $fromDate); $request->setParameter('toDate', $toDate); $request->send(); $elements = $request->getResponse()->getElements(); return $elements; }

I troubleshooted the issue and noticed that send() function first sends data to xero and then creates a response object using $guzzleResponse->getBody()->getContents(). For me, there is nothing returned from Xero. I am guessing there is no statements for that account ID, but I am not sure.

After creating response object, parse() function is called to parse the response. This is where the execution stops. There is no return value or response. I guess parse is failing as there is no content. There is no check for response from xero in parse function. I think we should not allow parsing if there is no content returned from Xero.

arunmanivel avatar Aug 28 '22 06:08 arunmanivel

Hi @arunmanivel is there a reason you're manually constructing this request rather than using the query builder (like in the readme?)

$xero->load(BankStatement::class)
    ->where('bankAccountID', $accountID)
    ->where('fromDate', $fromDate)
    ->where('toDate', $toDate)
    ->execute();

As far as I know, the above souls work for reports, too.

calcinai avatar Aug 28 '22 20:08 calcinai

@calcinai No specific reason. The code was written few years back by another developer. I have just inherited it. Thanks for pointing it out though. We will start using it for upcoming features. But will that solve the problem that I reported? Thank you.

arunmanivel avatar Aug 29 '22 06:08 arunmanivel