mirror of
https://github.com/usetrmnl/byos_laravel.git
synced 2026-01-13 15:07:49 +00:00
Compare commits
No commits in common. "10b53c377251df080fe5ba131f79cc9a6764cb35" and "882cbff7fe3ee1e37e8573028db4f39ef8052d4c" have entirely different histories.
10b53c3772
...
882cbff7fe
2 changed files with 3 additions and 31 deletions
|
|
@ -235,15 +235,9 @@ class Plugin extends Model
|
|||
}
|
||||
}
|
||||
|
||||
// Default to JSON parsing
|
||||
try {
|
||||
// Attempt to parse it into JSON
|
||||
$json = $httpResponse->json();
|
||||
if($json !== null) {
|
||||
return $json;
|
||||
}
|
||||
|
||||
// Response doesn't seem to be JSON, wrap the response body text as a JSON object
|
||||
return ['data' => $httpResponse->body()];
|
||||
return $httpResponse->json() ?? [];
|
||||
} catch (Exception $e) {
|
||||
Log::warning('Failed to parse JSON response: '.$e->getMessage());
|
||||
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ test('plugin parses XML responses and wraps under rss key', function (): void {
|
|||
expect($plugin->data_payload['rss']['channel']['item'])->toHaveCount(2);
|
||||
});
|
||||
|
||||
test('plugin parses JSON-parsable response body as JSON', function (): void {
|
||||
test('plugin handles non-XML content-type as JSON', function (): void {
|
||||
$jsonContent = '{"title": "Test Data", "items": [1, 2, 3]}';
|
||||
|
||||
Http::fake([
|
||||
|
|
@ -95,28 +95,6 @@ test('plugin parses JSON-parsable response body as JSON', function (): void {
|
|||
]);
|
||||
});
|
||||
|
||||
test('plugin wraps plain text response body as JSON', function (): void {
|
||||
$jsonContent = 'Lorem ipsum dolor sit amet';
|
||||
|
||||
Http::fake([
|
||||
'example.com/data' => Http::response($jsonContent, 200, ['Content-Type' => 'text/plain']),
|
||||
]);
|
||||
|
||||
$plugin = Plugin::factory()->create([
|
||||
'data_strategy' => 'polling',
|
||||
'polling_url' => 'https://example.com/data',
|
||||
'polling_verb' => 'get',
|
||||
]);
|
||||
|
||||
$plugin->updateDataPayload();
|
||||
|
||||
$plugin->refresh();
|
||||
|
||||
expect($plugin->data_payload)->toBe([
|
||||
'data' => 'Lorem ipsum dolor sit amet',
|
||||
]);
|
||||
});
|
||||
|
||||
test('plugin handles invalid XML gracefully', function (): void {
|
||||
$invalidXml = '<root><item>unclosed tag';
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue