-
Notifications
You must be signed in to change notification settings - Fork 334
Add support VideoNote type. #284
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
EduardMalik
wants to merge
2
commits into
TelegramBot:master
Choose a base branch
from
EduardMalik:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,170 @@ | ||
<?php | ||
|
||
namespace TelegramBot\Api\Types; | ||
|
||
use TelegramBot\Api\BaseType; | ||
use TelegramBot\Api\InvalidArgumentException; | ||
use TelegramBot\Api\TypeInterface; | ||
|
||
/** | ||
* Class Video | ||
* This object represents a video file. | ||
* | ||
* @package TelegramBot\Api\Types | ||
*/ | ||
class VideoNote extends BaseType implements TypeInterface | ||
{ | ||
/** | ||
* {@inheritdoc} | ||
* | ||
* @var array | ||
*/ | ||
static protected $requiredParams = ['file_id', 'length', 'duration']; | ||
|
||
/** | ||
* {@inheritdoc} | ||
* | ||
* @var array | ||
*/ | ||
static protected $map = [ | ||
'file_id' => true, | ||
'length' => true, | ||
'duration' => true, | ||
'thumb' => PhotoSize::class, | ||
'file_size' => true | ||
]; | ||
|
||
/** | ||
* Unique identifier for this file | ||
* | ||
* @var string | ||
*/ | ||
protected $fileId; | ||
|
||
/** | ||
* Duration of the video note in seconds as defined by sender | ||
* | ||
* @var int | ||
*/ | ||
protected $duration; | ||
|
||
/** | ||
* Value of video width and height (diameter of the video message) as defined by sender | ||
* | ||
* @var int | ||
*/ | ||
protected $length; | ||
|
||
/** | ||
* Video Note thumbnail | ||
* | ||
* @var PhotoSize | ||
*/ | ||
protected $thumb; | ||
|
||
/** | ||
* Optional. File size | ||
* | ||
* @var int | ||
*/ | ||
protected $fileSize; | ||
|
||
/** | ||
* @return int | ||
*/ | ||
public function getDuration() | ||
{ | ||
return $this->duration; | ||
} | ||
|
||
/** | ||
* @param int $duration | ||
* | ||
* @throws InvalidArgumentException | ||
*/ | ||
public function setDuration($duration) | ||
{ | ||
if (is_integer($duration)) { | ||
$this->duration = $duration; | ||
} else { | ||
throw new InvalidArgumentException('VideoNote duration does not contain integer values'); | ||
} | ||
} | ||
|
||
/** | ||
* @return string | ||
*/ | ||
public function getFileId() | ||
{ | ||
return $this->fileId; | ||
} | ||
|
||
/** | ||
* @param string $fileId | ||
*/ | ||
public function setFileId($fileId) | ||
{ | ||
$this->fileId = $fileId; | ||
} | ||
|
||
/** | ||
* @return int | ||
*/ | ||
public function getFileSize() | ||
{ | ||
return $this->fileSize; | ||
} | ||
|
||
/** | ||
* @param int $fileSize | ||
* | ||
* @throws InvalidArgumentException | ||
*/ | ||
public function setFileSize($fileSize) | ||
{ | ||
if (is_integer($fileSize)) { | ||
$this->fileSize = $fileSize; | ||
} else { | ||
throw new InvalidArgumentException('VideoNote file_size does not contain integer values'); | ||
} | ||
} | ||
|
||
/** | ||
* @return int | ||
*/ | ||
public function getLength() | ||
{ | ||
return $this->length; | ||
} | ||
|
||
/** | ||
* @param int $length | ||
* | ||
* @throws InvalidArgumentException | ||
*/ | ||
public function setLength($length) | ||
{ | ||
if (is_integer($length)) { | ||
$this->length = $length; | ||
} else { | ||
throw new InvalidArgumentException('VideoNote length does not contain integer values'); | ||
} | ||
} | ||
|
||
/** | ||
* @return PhotoSize | ||
*/ | ||
public function getThumb() | ||
{ | ||
return $this->thumb; | ||
} | ||
|
||
/** | ||
* @param PhotoSize $thumb | ||
*/ | ||
public function setThumb(PhotoSize $thumb) | ||
{ | ||
$this->thumb = $thumb; | ||
} | ||
|
||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,134 @@ | ||
<?php | ||
|
||
namespace TelegramBot\Api\Test; | ||
|
||
use TelegramBot\Api\Types\PhotoSize; | ||
use TelegramBot\Api\Types\VideoNote; | ||
|
||
class VideoNoteTest extends \PHPUnit_Framework_TestCase | ||
{ | ||
public function testSetFileId() | ||
{ | ||
$item = new VideoNote(); | ||
$item->setFileId('testfileId'); | ||
$this->assertAttributeEquals('testfileId', 'fileId', $item); | ||
} | ||
|
||
public function testGetFileId() | ||
{ | ||
$item = new VideoNote(); | ||
$item->setFileId('testfileId'); | ||
$this->assertEquals('testfileId', $item->getFileId()); | ||
} | ||
|
||
public function testSetDuration() | ||
{ | ||
$item = new VideoNote(); | ||
$item->setDuration(1); | ||
$this->assertAttributeEquals(1, 'duration', $item); | ||
} | ||
|
||
public function testGetDuration() | ||
{ | ||
$item = new VideoNote(); | ||
$item->setDuration(1); | ||
$this->assertEquals(1, $item->getDuration()); | ||
} | ||
|
||
public function testSetFileSize() | ||
{ | ||
$item = new VideoNote(); | ||
$item->setFileSize(5); | ||
$this->assertAttributeEquals(5, 'fileSize', $item); | ||
} | ||
|
||
public function testGetFileSize() | ||
{ | ||
$item = new VideoNote(); | ||
$item->setFileSize(6); | ||
$this->assertEquals(6, $item->getFileSize()); | ||
} | ||
|
||
public function testSetThumb() | ||
{ | ||
$item = new VideoNote(); | ||
$thumb = PhotoSize::fromResponse(array( | ||
'file_id' => 'testFileId1', | ||
'width' => 1, | ||
'height' => 2, | ||
'file_size' => 3, | ||
)); | ||
$item->setThumb($thumb); | ||
$this->assertAttributeEquals($thumb, 'thumb', $item); | ||
} | ||
|
||
public function testGetThumb() | ||
{ | ||
$item = new VideoNote(); | ||
$thumb = PhotoSize::fromResponse(array( | ||
'file_id' => 'testFileId1', | ||
'width' => 1, | ||
'height' => 2, | ||
'file_size' => 3, | ||
)); | ||
$item->setThumb($thumb); | ||
$this->assertEquals($thumb, $item->getThumb()); | ||
$this->assertInstanceOf('\TelegramBot\Api\Types\PhotoSize', $item->getThumb()); | ||
} | ||
|
||
public function testFromResponse() | ||
{ | ||
$item = VideoNote::fromResponse(array( | ||
'file_id' => 'testFileId1', | ||
'length' => 1, | ||
'duration' => 2, | ||
'file_size' => 3, | ||
'thumb' => array( | ||
'file_id' => 'testFileId1', | ||
'width' => 4, | ||
'height' => 5, | ||
'file_size' => 6 | ||
) | ||
)); | ||
$thumb = PhotoSize::fromResponse(array( | ||
'file_id' => 'testFileId1', | ||
'width' => 4, | ||
'height' => 5, | ||
'file_size' => 6 | ||
)); | ||
$this->assertInstanceOf('\TelegramBot\Api\Types\VideoNote', $item); | ||
$this->assertAttributeEquals('testFileId1', 'fileId', $item); | ||
$this->assertAttributeEquals(1, 'length', $item); | ||
$this->assertAttributeEquals(2, 'duration', $item); | ||
$this->assertAttributeEquals(3, 'fileSize', $item); | ||
$this->assertAttributeEquals($thumb, 'thumb', $item); | ||
$this->assertInstanceOf('\TelegramBot\Api\Types\PhotoSize', $item->getThumb()); | ||
} | ||
|
||
/** | ||
* @expectedException \TelegramBot\Api\InvalidArgumentException | ||
*/ | ||
public function testSetHeightException() | ||
{ | ||
$item = new VideoNote(); | ||
$item->setLength('s'); | ||
} | ||
|
||
/** | ||
* @expectedException \TelegramBot\Api\InvalidArgumentException | ||
*/ | ||
public function testSetDurationException() | ||
{ | ||
$item = new VideoNote(); | ||
$item->setDuration('s'); | ||
} | ||
/** | ||
* @expectedException \TelegramBot\Api\InvalidArgumentException | ||
*/ | ||
public function testSetFileSizeException() | ||
{ | ||
$item = new VideoNote(); | ||
$item->setFileSize('s'); | ||
} | ||
|
||
} |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.