Fix: do not gracefully fail when symbol not found
This commit is contained in:
@@ -14,6 +14,7 @@ use Illuminate\Support\Arr;
|
|||||||
use Illuminate\Support\Carbon;
|
use Illuminate\Support\Carbon;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||||
|
|
||||||
class AlpacaMarketData implements MarketDataInterface
|
class AlpacaMarketData implements MarketDataInterface
|
||||||
{
|
{
|
||||||
@@ -51,9 +52,7 @@ class AlpacaMarketData implements MarketDataInterface
|
|||||||
|
|
||||||
$quote = $response->json('trade');
|
$quote = $response->json('trade');
|
||||||
|
|
||||||
if (is_null(Arr::get($quote, 'p'))) {
|
throw_if(empty(Arr::get($quote, 'p')), NotFoundHttpException::class, "Symbol `{$symbol}` was not found");
|
||||||
throw new \Exception('Could not find ticker on Alpaca');
|
|
||||||
}
|
|
||||||
|
|
||||||
$fundamental = cache()->remember(
|
$fundamental = cache()->remember(
|
||||||
'ap-symbol-'.$symbol,
|
'ap-symbol-'.$symbol,
|
||||||
@@ -159,6 +158,8 @@ class AlpacaMarketData implements MarketDataInterface
|
|||||||
|
|
||||||
$history = $response->json('bars');
|
$history = $response->json('bars');
|
||||||
|
|
||||||
|
throw_if(empty($history), NotFoundHttpException::class, "Symbol `{$symbol}` was not found");
|
||||||
|
|
||||||
$chunkedHistory = collect($history)
|
$chunkedHistory = collect($history)
|
||||||
->mapWithKeys(function ($history) use ($symbol) {
|
->mapWithKeys(function ($history) use ($symbol) {
|
||||||
|
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ class AlphaVantageMarketData implements MarketDataInterface
|
|||||||
return [$date => new Ohlc([
|
return [$date => new Ohlc([
|
||||||
'symbol' => $symbol,
|
'symbol' => $symbol,
|
||||||
'date' => $date,
|
'date' => $date,
|
||||||
'close' => Arr::get($history, '4. close'),
|
'close' => (float) Arr::get($history, '4. close'),
|
||||||
])];
|
])];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ use Illuminate\Support\Arr;
|
|||||||
use Illuminate\Support\Carbon;
|
use Illuminate\Support\Carbon;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||||
|
|
||||||
class TwelveDataMarketData implements MarketDataInterface
|
class TwelveDataMarketData implements MarketDataInterface
|
||||||
{
|
{
|
||||||
@@ -53,9 +54,7 @@ class TwelveDataMarketData implements MarketDataInterface
|
|||||||
|
|
||||||
$quote = $response->json();
|
$quote = $response->json();
|
||||||
|
|
||||||
if (! isset($quote['price'])) {
|
throw_if(empty(Arr::get($quote, 'price')), NotFoundHttpException::class, "Symbol `{$symbol}` was not found");
|
||||||
throw new \Exception('Could not find ticker on Twelve Data');
|
|
||||||
}
|
|
||||||
|
|
||||||
$current_market_value = Arr::get($quote, 'price');
|
$current_market_value = Arr::get($quote, 'price');
|
||||||
|
|
||||||
@@ -152,9 +151,11 @@ class TwelveDataMarketData implements MarketDataInterface
|
|||||||
])
|
])
|
||||||
->get('time_series');
|
->get('time_series');
|
||||||
|
|
||||||
$values = $response->json('values');
|
$history = $response->json('values');
|
||||||
|
|
||||||
return collect($values)
|
throw_if(empty($history), NotFoundHttpException::class, "Symbol `{$symbol}` was not found");
|
||||||
|
|
||||||
|
return collect($history)
|
||||||
->mapWithKeys(function ($history) use ($symbol) {
|
->mapWithKeys(function ($history) use ($symbol) {
|
||||||
|
|
||||||
$date = Carbon::parse(Arr::get($history, 'datetime'))->toDateString();
|
$date = Carbon::parse(Arr::get($history, 'datetime'))->toDateString();
|
||||||
|
|||||||
Reference in New Issue
Block a user