Skip to content

Commit 65656b3

Browse files
authored
Fix picture fetch from foreign DC (#125)
1 parent 4937156 commit 65656b3

File tree

5 files changed

+22
-18
lines changed

5 files changed

+22
-18
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace TelegramOSINT\TLMessage\TLMessage;
6+
7+
interface MessageWithUserId
8+
{
9+
public function getUserId(): int;
10+
}

src/TLMessage/TLMessage/ServerMessages/AuthorizationSelfUser.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
use TelegramOSINT\Exception\TGException;
88
use TelegramOSINT\MTSerialization\AnonymousMessage;
9+
use TelegramOSINT\TLMessage\TLMessage\MessageWithUserId;
10+
use TelegramOSINT\TLMessage\TLMessage\ServerMessages\Contact\ContactUser;
911
use TelegramOSINT\TLMessage\TLMessage\TLServerMessage;
1012

1113
class AuthorizationSelfUser extends TLServerMessage
@@ -23,12 +25,14 @@ public static function isIt(AnonymousMessage $tlMessage): bool
2325
/**
2426
* @throws TGException
2527
*
26-
* @return UserSelf
28+
* @return ContactUser
2729
*/
28-
public function getUser(): UserSelf
30+
public function getUser(): MessageWithUserId
2931
{
3032
$self = $this->getTlMessage()->getNode('user');
3133

32-
return new UserSelf($self);
34+
return ContactUser::isIt($self)
35+
? new ContactUser($self)
36+
: new UserSelf($self);
3337
}
3438
}

src/TLMessage/TLMessage/ServerMessages/Contact/ContactUser.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use TelegramOSINT\Exception\TGException;
88
use TelegramOSINT\MTSerialization\AnonymousMessage;
9+
use TelegramOSINT\TLMessage\TLMessage\MessageWithUserId;
910
use TelegramOSINT\TLMessage\TLMessage\ServerMessages\ChatPhoto;
1011
use TelegramOSINT\TLMessage\TLMessage\ServerMessages\Custom\UserStatus;
1112
use TelegramOSINT\TLMessage\TLMessage\ServerMessages\PhotoInterface;
@@ -15,7 +16,7 @@
1516
/**
1617
* @see https://core.telegram.org/type/User
1718
*/
18-
class ContactUser extends TLServerMessage
19+
class ContactUser extends TLServerMessage implements MessageWithUserId
1920
{
2021
/**
2122
* @param AnonymousMessage $tlMessage
@@ -70,7 +71,7 @@ public function getPhoto(): ?PhotoInterface
7071

7172
public function getUserId(): int
7273
{
73-
return $this->getTlMessage()->getValue('id');
74+
return (int) $this->getTlMessage()->getValue('id');
7475
}
7576

7677
public function getPhone(): ?string

src/TLMessage/TLMessage/ServerMessages/UserSelf.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@
66

77
use TelegramOSINT\Exception\TGException;
88
use TelegramOSINT\MTSerialization\AnonymousMessage;
9+
use TelegramOSINT\TLMessage\TLMessage\MessageWithUserId;
910
use TelegramOSINT\TLMessage\TLMessage\ServerMessages\Custom\UserStatus;
1011
use TelegramOSINT\TLMessage\TLMessage\TLServerMessage;
1112

12-
class UserSelf extends TLServerMessage
13+
class UserSelf extends TLServerMessage implements MessageWithUserId
1314
{
1415
/**
1516
* @param AnonymousMessage $tlMessage

tests/Unit/TLMessage/TLMessage/ServerMessages/UserSelfTest.php

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,6 @@ protected function setUp(): void
2424
$this->deserializer = new OwnDeserializerMock();
2525
}
2626

27-
private function deserializeIntoComparableObject($serialized): string
28-
{
29-
$serialized = hex2bin($serialized);
30-
/** @noinspection PhpUnhandledExceptionInspection */
31-
$object = $this->deserializer->deserialize($serialized);
32-
33-
return $object->getPrintable();
34-
}
35-
3627
private function getObjectWithChatPhoto(): AnonymousMessageMock
3728
{
3829
/* @noinspection PhpUnhandledExceptionInspection */
@@ -108,9 +99,6 @@ private function getObjectWithUserProfilePhoto(): AnonymousMessageMock
10899
*/
109100
public function test_get_photo(): void
110101
{
111-
$data = '016d5cf3c8250a005dbb265ed97a077f32e5ddbd9b26674915c4b51c01000000ac7489c8642000009b266749600b4f1e8e4c9ac94750726f66697447617465202d20d18dd0bad0bed0bdd0bed0bcd0b8d0bad0b02c20d182d180d0b5d0b9d0b4d0b8d0bdd0b32c20d0b8d0bdd0b2d0b5d181d182d0b8d186d0b8d0b80a50726f66697447617465006a2753617690d653020000009ad3510f00000000bc3d020096bc0b2d98c6fe417690d653020000009ad3510f00000000be3d0200d3309f6700d1831cc1fb065a0000000015c4b51c00000000';
112-
//$got = $this->deserializeIntoComparableObject($data);
113-
114102
// Check is userProfilePhoto
115103
$userSelfProfile = new UserSelf($this->getObjectWithUserProfilePhoto());
116104
$profilePhoto = $userSelfProfile->getPhoto();

0 commit comments

Comments
 (0)