Yield from reference database

This commit is contained in:
Daniil Gentili 2020-09-12 20:01:34 +02:00
parent 1883416c7a
commit e85fef23a5
Signed by: danog
GPG Key ID: 8C1BE3B34B230CA7
3 changed files with 9 additions and 9 deletions

2
docs

@ -1 +1 @@
Subproject commit b8ee95c1435bbd74ddd4783a34e9e90cbfb38999 Subproject commit 57562236aade5d13a01c18a2290aa647686eebd5

View File

@ -554,7 +554,7 @@ trait Files
throw new \danog\MadelineProto\Exception('No access hash'); throw new \danog\MadelineProto\Exception('No access hash');
} }
$res['Photo'] = $media['photo']; $res['Photo'] = $media['photo'];
$res['InputPhoto'] = ['_' => 'inputPhoto', 'id' => $media['photo']['id'], 'access_hash' => $media['photo']['access_hash'], 'file_reference' => yield $this->referenceDatabase->getReference(ReferenceDatabase::PHOTO_LOCATION, $media['photo'])]; $res['InputPhoto'] = ['_' => 'inputPhoto', 'id' => $media['photo']['id'], 'access_hash' => $media['photo']['access_hash'], 'file_reference' => yield from $this->referenceDatabase->getReference(ReferenceDatabase::PHOTO_LOCATION, $media['photo'])];
$res['InputMedia'] = ['_' => 'inputMediaPhoto', 'id' => $res['InputPhoto']]; $res['InputMedia'] = ['_' => 'inputMediaPhoto', 'id' => $res['InputPhoto']];
if (isset($media['ttl_seconds'])) { if (isset($media['ttl_seconds'])) {
$res['InputMedia']['ttl_seconds'] = $media['ttl_seconds']; $res['InputMedia']['ttl_seconds'] = $media['ttl_seconds'];
@ -565,7 +565,7 @@ trait Files
throw new \danog\MadelineProto\Exception('No access hash'); throw new \danog\MadelineProto\Exception('No access hash');
} }
$res['Document'] = $media['document']; $res['Document'] = $media['document'];
$res['InputDocument'] = ['_' => 'inputDocument', 'id' => $media['document']['id'], 'access_hash' => $media['document']['access_hash'], 'file_reference' => yield $this->referenceDatabase->getReference(ReferenceDatabase::DOCUMENT_LOCATION, $media['document'])]; $res['InputDocument'] = ['_' => 'inputDocument', 'id' => $media['document']['id'], 'access_hash' => $media['document']['access_hash'], 'file_reference' => yield from $this->referenceDatabase->getReference(ReferenceDatabase::DOCUMENT_LOCATION, $media['document'])];
$res['InputMedia'] = ['_' => 'inputMediaDocument', 'id' => $res['InputDocument']]; $res['InputMedia'] = ['_' => 'inputMediaDocument', 'id' => $res['InputDocument']];
if (isset($media['ttl_seconds'])) { if (isset($media['ttl_seconds'])) {
$res['InputMedia']['ttl_seconds'] = $media['ttl_seconds']; $res['InputMedia']['ttl_seconds'] = $media['ttl_seconds'];
@ -581,7 +581,7 @@ trait Files
if (!isset($media['access_hash'])) { if (!isset($media['access_hash'])) {
throw new \danog\MadelineProto\Exception('No access hash'); throw new \danog\MadelineProto\Exception('No access hash');
} }
$res['InputDocument'] = ['_' => 'inputDocument', 'id' => $media['id'], 'access_hash' => $media['access_hash'], 'file_reference' => yield $this->referenceDatabase->getReference(ReferenceDatabase::DOCUMENT_LOCATION, $media)]; $res['InputDocument'] = ['_' => 'inputDocument', 'id' => $media['id'], 'access_hash' => $media['access_hash'], 'file_reference' => yield from $this->referenceDatabase->getReference(ReferenceDatabase::DOCUMENT_LOCATION, $media)];
$res['InputMedia'] = ['_' => 'inputMediaDocument', 'id' => $res['InputDocument']]; $res['InputMedia'] = ['_' => 'inputMediaDocument', 'id' => $res['InputDocument']];
$res['MessageMedia'] = ['_' => 'messageMediaDocument', 'document' => $media]; $res['MessageMedia'] = ['_' => 'messageMediaDocument', 'document' => $media];
break; break;
@ -589,7 +589,7 @@ trait Files
if (!isset($media['access_hash'])) { if (!isset($media['access_hash'])) {
throw new \danog\MadelineProto\Exception('No access hash'); throw new \danog\MadelineProto\Exception('No access hash');
} }
$res['InputPhoto'] = ['_' => 'inputPhoto', 'id' => $media['id'], 'access_hash' => $media['access_hash'], 'file_reference' => yield $this->referenceDatabase->getReference(ReferenceDatabase::PHOTO_LOCATION, $media)]; $res['InputPhoto'] = ['_' => 'inputPhoto', 'id' => $media['id'], 'access_hash' => $media['access_hash'], 'file_reference' => yield from $this->referenceDatabase->getReference(ReferenceDatabase::PHOTO_LOCATION, $media)];
$res['InputMedia'] = ['_' => 'inputMediaPhoto', 'id' => $res['InputPhoto']]; $res['InputMedia'] = ['_' => 'inputMediaPhoto', 'id' => $res['InputPhoto']];
$res['MessageMedia'] = ['_' => 'messageMediaPhoto', 'photo' => $media]; $res['MessageMedia'] = ['_' => 'messageMediaPhoto', 'photo' => $media];
break; break;
@ -790,7 +790,7 @@ trait Files
$messageMedia = $messageMedia['photo']; $messageMedia = $messageMedia['photo'];
$size = \end($messageMedia['sizes']); $size = \end($messageMedia['sizes']);
$res = \array_merge($res, yield from $this->getDownloadInfo($size)); $res = \array_merge($res, yield from $this->getDownloadInfo($size));
$res['InputFileLocation'] = ['_' => 'inputPhotoFileLocation', 'thumb_size' => $res['thumb_size'] ?? 'x', 'dc_id' => $messageMedia['dc_id'], 'access_hash' => $messageMedia['access_hash'], 'id' => $messageMedia['id'], 'file_reference' => yield $this->referenceDatabase->getReference(ReferenceDatabase::PHOTO_LOCATION, $messageMedia)]; $res['InputFileLocation'] = ['_' => 'inputPhotoFileLocation', 'thumb_size' => $res['thumb_size'] ?? 'x', 'dc_id' => $messageMedia['dc_id'], 'access_hash' => $messageMedia['access_hash'], 'id' => $messageMedia['id'], 'file_reference' => yield from $this->referenceDatabase->getReference(ReferenceDatabase::PHOTO_LOCATION, $messageMedia)];
return $res; return $res;
case 'user': case 'user':
case 'folder': case 'folder':
@ -844,7 +844,7 @@ trait Files
throw new \danog\MadelineProto\Exception('File location unavailable'); throw new \danog\MadelineProto\Exception('File location unavailable');
case 'fileLocation': case 'fileLocation':
$res['name'] = Tools::unpackSignedLongString($messageMedia['volume_id']).'_'.$messageMedia['local_id']; $res['name'] = Tools::unpackSignedLongString($messageMedia['volume_id']).'_'.$messageMedia['local_id'];
$res['InputFileLocation'] = ['_' => 'inputFileLocation', 'volume_id' => $messageMedia['volume_id'], 'local_id' => $messageMedia['local_id'], 'secret' => $messageMedia['secret'], 'dc_id' => $messageMedia['dc_id'], 'file_reference' => yield $this->referenceDatabase->getReference(ReferenceDatabase::PHOTO_LOCATION_LOCATION, $messageMedia)]; $res['InputFileLocation'] = ['_' => 'inputFileLocation', 'volume_id' => $messageMedia['volume_id'], 'local_id' => $messageMedia['local_id'], 'secret' => $messageMedia['secret'], 'dc_id' => $messageMedia['dc_id'], 'file_reference' => yield from $this->referenceDatabase->getReference(ReferenceDatabase::PHOTO_LOCATION_LOCATION, $messageMedia)];
$res['ext'] = $this->getExtensionFromLocation($res['InputFileLocation'], '.jpg'); $res['ext'] = $this->getExtensionFromLocation($res['InputFileLocation'], '.jpg');
$res['mime'] = $this->getMimeFromExtension($res['ext'], 'image/jpeg'); $res['mime'] = $this->getMimeFromExtension($res['ext'], 'image/jpeg');
return $res; return $res;
@ -886,7 +886,7 @@ trait Files
$res['name'] .= ' - '.$audio['performer']; $res['name'] .= ' - '.$audio['performer'];
} }
} }
$res['InputFileLocation'] = ['_' => 'inputDocumentFileLocation', 'id' => $messageMedia['document']['id'], 'access_hash' => $messageMedia['document']['access_hash'], 'version' => isset($messageMedia['document']['version']) ? $messageMedia['document']['version'] : 0, 'dc_id' => $messageMedia['document']['dc_id'], 'file_reference' => yield $this->referenceDatabase->getReference(ReferenceDatabase::DOCUMENT_LOCATION, $messageMedia['document'])]; $res['InputFileLocation'] = ['_' => 'inputDocumentFileLocation', 'id' => $messageMedia['document']['id'], 'access_hash' => $messageMedia['document']['access_hash'], 'version' => isset($messageMedia['document']['version']) ? $messageMedia['document']['version'] : 0, 'dc_id' => $messageMedia['document']['dc_id'], 'file_reference' => yield from $this->referenceDatabase->getReference(ReferenceDatabase::DOCUMENT_LOCATION, $messageMedia['document'])];
if (!isset($res['ext']) || $res['ext'] === '') { if (!isset($res['ext']) || $res['ext'] === '') {
$res['ext'] = $this->getExtensionFromLocation($res['InputFileLocation'], $this->getExtensionFromMime($messageMedia['document']['mime_type'])); $res['ext'] = $this->getExtensionFromLocation($res['InputFileLocation'], $this->getExtensionFromMime($messageMedia['document']['mime_type']));
} }

View File

@ -469,7 +469,7 @@ class ReferenceDatabase implements TLCallback
} }
public function populateReference(array $object): \Generator public function populateReference(array $object): \Generator
{ {
$object['file_reference'] = yield $this->getReference(self::LOCATION_CONTEXT[$object['_']], $object); $object['file_reference'] = yield from $this->getReference(self::LOCATION_CONTEXT[$object['_']], $object);
return $object; return $object;
} }
public function getReference(int $locationType, array $location): \Generator public function getReference(int $locationType, array $location): \Generator