Update JSON notes feed to version 1.1

This commit is contained in:
Jonny Barnes 2023-12-20 14:44:11 +00:00
parent 24ca9f86d2
commit 2aa60db548
Signed by: jonny
SSH key fingerprint: SHA256:CTuSlns5U7qlD9jqHvtnVmfYV3Zwl2Z7WnJ4/dqOaL8
4 changed files with 20 additions and 13 deletions

View file

@ -102,12 +102,18 @@ class FeedsController extends Controller
*/
public function notesJson(): array
{
$notes = Note::latest()->with('media', 'place')->take(20)->get();
$notes = Note::latest()->with('media', 'place', 'tags')->take(20)->get();
$data = [
'version' => 'https://jsonfeed.org/version/1',
'version' => 'https://jsonfeed.org/version/1.1',
'title' => 'The JSON Feed for ' . config('user.display_name') . 's notes',
'home_page_url' => config('app.url') . '/notes',
'feed_url' => config('app.url') . '/notes/feed.json',
'authors' => [
[
'name' => config('user.display_name'),
'url' => config('app.url'),
],
],
'items' => [],
];
@ -115,13 +121,13 @@ class FeedsController extends Controller
$data['items'][$key] = [
'id' => $note->longurl,
'url' => $note->longurl,
'content_html' => $note->content,
'content_text' => $note->content,
'date_published' => $note->created_at->tz('UTC')->toRfc3339String(),
'date_modified' => $note->updated_at->tz('UTC')->toRfc3339String(),
'author' => [
'name' => config('user.display_name'),
],
];
if ($note->tags->count() > 0) {
$data['items'][$key]['tags'] = implode(',', $note->tags->pluck('tag')->toArray());
}
}
return $data;

View file

@ -144,17 +144,17 @@ class Note extends Model
*/
public function getContentAttribute(): string
{
$note = $this->note;
$note = $this->getRawOriginal('note');
foreach ($this->media as $media) {
if ($media->type === 'image') {
$note .= '<img src="' . $media->url . '" alt="">';
$note .= PHP_EOL . '<img src="' . $media->url . '" alt="">';
}
if ($media->type === 'audio') {
$note .= '<audio src="' . $media->url . '">';
$note .= PHP_EOL . '<audio src="' . $media->url . '">';
}
if ($media->type === 'video') {
$note .= '<video src="' . $media->url . '">';
$note .= PHP_EOL . '<video src="' . $media->url . '">';
}
}

View file

@ -193,6 +193,7 @@ A note with some code:
<?php
echo 'Hello World';
```
EOF;
$noteWithCode = Note::create([
'note' => $noteWithCodeContent,

View file

@ -322,7 +322,7 @@ class NotesTest extends TestCase
]);
$note->media()->save($media);
$expected = '<p>A nice image</p>
$expected = 'A nice image
<img src="' . config('filesystems.disks.s3.url') . '/test.png" alt="">';
$this->assertEquals($expected, $note->content);
}
@ -339,7 +339,7 @@ class NotesTest extends TestCase
]);
$note->media()->save($media);
$expected = '<p>A nice video</p>
$expected = 'A nice video
<video src="' . config('filesystems.disks.s3.url') . '/test.mkv">';
$this->assertEquals($expected, $note->content);
}
@ -356,7 +356,7 @@ class NotesTest extends TestCase
]);
$note->media()->save($media);
$expected = '<p>Some nice audio</p>
$expected = 'Some nice audio
<audio src="' . config('filesystems.disks.s3.url') . '/test.flac">';
$this->assertEquals($expected, $note->content);
}