Skip to content

Commit

Permalink
ValidYoutubeVideo Rule (#145)
Browse files Browse the repository at this point in the history
* ValidYoutubeVideo Rule

* Removed extra accidental line

* Update ValidYoutubeVideo.php

* Delete .gitignore

* Revert "Delete .gitignore"

This reverts commit 0e78d94.

* Only request video id

* Restore .gitignore to master original

* Revert "Restore .gitignore to master original"

This reverts commit ff7eced.

* Update .gitignore

* Update README.md
  • Loading branch information
alasdairgallacher authored May 22, 2020
1 parent 2147f8b commit be04bbe
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,20 @@ $videoId = Youtube::parseVidFromURL('https://www.youtube.com/watch?v=moSFlvxnbgk
// result: moSFlvxnbgk
```

## Validation Rules

```php
// use Alaouy\Youtube\Rules\ValidYoutubeVideo;


// Validate a YouTube Video URL
[
'youtube_video_url' => ['bail', 'required', new ValidYoutubeVideo]
];
```

You can use the bail rule in conjunction with this in order to prevent unnecessary queries.

## Basic Search Pagination

```php
Expand Down
48 changes: 48 additions & 0 deletions src/Rules/ValidYoutubeVideo.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?php

namespace Alaouy\Youtube\Rules;

use Illuminate\Contracts\Validation\Rule;
use Alaouy\Youtube\Facades\Youtube;

class ValidYoutubeVideo implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
//
}

/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
try {
$videoId = Youtube::parseVidFromURL($value);
$video = Youtube::getVideoInfo($videoId, ['id']);
} catch (\Exception $exception) {
return false;
}

return $video != false;
}

/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The supplied URL does not look like a Youtube URL.';
}
}

0 comments on commit be04bbe

Please sign in to comment.