diff --git a/app/Jobs/SendWebMentions.php b/app/Jobs/SendWebMentions.php index dd4e2835..5bcbda58 100644 --- a/app/Jobs/SendWebMentions.php +++ b/app/Jobs/SendWebMentions.php @@ -104,6 +104,9 @@ class SendWebMentions implements ShouldQueue */ public function getLinks($html) { + if ($html == '' || is_null($html)) { + return []; + } $urls = []; $dom = new \DOMDocument(); $dom->loadHTML($html); diff --git a/app/Services/NoteService.php b/app/Services/NoteService.php index e653c6c6..e2b91773 100644 --- a/app/Services/NoteService.php +++ b/app/Services/NoteService.php @@ -20,7 +20,7 @@ class NoteService //check the input if (array_key_exists('content', $data) === false) { - throw new \Exception('No content defined'); //we can’t fudge the data + $data['content'] = null; } if (array_key_exists('in-reply-to', $data) === false) { $data['in-reply-to'] = null; @@ -64,6 +64,9 @@ class NoteService if ($place !== null) { $note->place()->associate($place); $note->swarm_url = $data['swarm-url']; + if ($note->note === null || $note->note == '') { + $note->note = 'I’ve just checked in with Swarm'; + } } } diff --git a/database/migrations/2017_08_09_181357_allow_empty_note_content.php b/database/migrations/2017_08_09_181357_allow_empty_note_content.php new file mode 100644 index 00000000..49de8b84 --- /dev/null +++ b/database/migrations/2017_08_09_181357_allow_empty_note_content.php @@ -0,0 +1,34 @@ +json( + 'POST', + 'api/post', + [ + 'type' => ['h-entry'], + 'properties' => [ + 'published' => [\Carbon\Carbon::now()->toDateTimeString()], + 'syndication' => ['https://www.swarmapp.com/checkin/def'], + 'checkin' => [[ + 'type' => ['h-card'], + 'properties' => [ + 'name' => ['Awesomer Venue'], + 'url' => ['https://foursquare.com/v/654321'], + 'latitude' => ['3.21'], + 'longitude' => ['6.54'], + ], + ]], + ], + ], + ['HTTP_Authorization' => 'Bearer ' . $this->getToken()] + ); + $response + ->assertStatus(201) + ->assertJson(['response' => 'created']); + $this->assertDatabaseHas('places', [ + 'external_urls' => '{"foursquare": "https://foursquare.com/v/654321"}' + ]); + $this->assertDatabaseHas('notes', [ + 'swarm_url' => 'https://www.swarmapp.com/checkin/def' + ]); + } + /** * Generate a valid token to be used in the tests. *