Skip to content

Commit bd986b1

Browse files
rsommerfeldphkeese
andauthored
generate callback id in registerCallback to enforce registration before sending (#399)
Co-authored-by: Philipp Keese <philipp.keese@student.hpi.de>
1 parent 55ecf49 commit bd986b1

File tree

18 files changed

+79
-38
lines changed

18 files changed

+79
-38
lines changed
Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
loading
22
loadInfo
33

4+
| callbackID |
5+
callbackID := self core registerCallback: [:aBasicGroupFullInfoEvent |
6+
self
7+
memberCount: (aBasicGroupFullInfoEvent at: 'members') size;
8+
description: (aBasicGroupFullInfoEvent at: 'description');
9+
addMembersFrom: (aBasicGroupFullInfoEvent at: 'members').
10+
].
411
self core client send: (TCCRequest
512
newWithType: 'getBasicGroupFullInfo'
613
from: {
714
'basic_group_id'->self groupId.
8-
'@extra'->self groupId}).
9-
self core registerCallback: [:aBasicGroupFullInfoEvent |
10-
self
11-
memberCount: (aBasicGroupFullInfoEvent at: 'members') size;
12-
description: (aBasicGroupFullInfoEvent at: 'description').
13-
self addMembersFrom: (aBasicGroupFullInfoEvent at: 'members').
14-
] with: self groupId asString
15+
'@extra'->callbackID}).

packages/TelegramClient-Core.package/TCCBasicGroupChat.class/methodProperties.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
"instance" : {
55
"initializeFromChatEvent:" : "per 6/4/2021 15:06",
66
"isBasicGroup" : "per 6/15/2021 08:41",
7-
"loadInfo" : "per 6/15/2021 08:36" } }
7+
"loadInfo" : "pk 6/18/2021 09:43" } }
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
accessing
2+
callbackCounter: aNumber
3+
4+
callbackCounter := aNumber
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
accessing
2+
callbackCounter
3+
4+
^ callbackCounter
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
utility
2+
callbackCounterPreIncrement
3+
4+
self callbackCounter: self callbackCounter + 1.
5+
^ self callbackCounter
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
utility
2+
generateCallbackID
3+
4+
^ self hash asString ,
5+
':' , self callbackCounterPreIncrement asString ,
6+
':' , Random new nextValue asString

packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ initialize
77
chats: TCCChats newWithDefaultSorting;
88
loggedInUserID: 0;
99
pendingRequests: Dictionary new;
10-
users: (TCCUsers new core: self).
10+
users: (TCCUsers new core: self);
11+
callbackCounter: 0.
1112

1213
[self receiveLoop] fork.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
utility
2+
registerCallback: aClosure
3+
4+
| callbackID |
5+
callbackID := self generateCallbackID.
6+
self pendingRequests at: callbackID put: aClosure.
7+
^ callbackID

packages/TelegramClient-Core.package/TCCCore.class/instance/registerCallback.with..st

Lines changed: 0 additions & 4 deletions
This file was deleted.

packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
"authHandler" : "R.S 5/20/2020 16:10",
66
"authHandler:" : "R.S 5/20/2020 16:10",
77
"authSucceeded" : "RS 4/28/2021 21:07",
8+
"callbackCounter" : "pk 6/18/2021 09:38",
9+
"callbackCounter:" : "pk 6/18/2021 09:38",
10+
"callbackCounterPreIncrement" : "pk 6/18/2021 09:39",
811
"chats" : "R.S 6/1/2020 15:34",
912
"chats:" : "R.S 6/1/2020 15:34",
1013
"chatsHandler" : "rs 6/7/2020 21:50",
@@ -13,20 +16,21 @@
1316
"client" : "R.S 5/20/2020 16:08",
1417
"client:" : "js 6/13/2020 19:10",
1518
"freeClient" : "6/9/2021 14:12:18",
19+
"generateCallbackID" : "pk 6/18/2021 10:27",
1620
"getChatHistoryFrom:" : "per 6/4/2021 15:30",
1721
"getOwnProfile" : "pk 5/13/2021 09:44",
1822
"handleEvent:" : "per 6/4/2021 11:54",
1923
"handleMessageEvent:" : "pk 5/28/2021 09:41",
2024
"handlePendingEvent:" : "5/30/2021 12:11:04",
21-
"initialize" : "pk 5/21/2021 09:13",
25+
"initialize" : "pk 6/18/2021 09:38",
2226
"initializeHandlers" : "js 8/1/2020 18:09",
2327
"isClientAlive" : "js 5/28/2020 17:18",
2428
"loggedInUserID" : "rs 7/5/2020 14:48",
2529
"loggedInUserID:" : "rs 7/5/2020 14:48",
2630
"pendingRequests" : "pk 5/13/2021 09:46",
2731
"pendingRequests:" : "pk 5/13/2021 09:46",
2832
"receiveLoop" : "R.S 6/1/2020 15:24",
29-
"registerCallback:with:" : "RK 5/19/2021 10:43",
33+
"registerCallback:" : "pk 6/18/2021 09:41",
3034
"requestUser:with:" : "pk 5/21/2021 09:33",
3135
"searchChat:" : "f.w. 7/15/2020 22:53",
3236
"sendMessage:to:" : "rs 6/13/2020 15:26",

packages/TelegramClient-Core.package/TCCCore.class/properties.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
"users",
1313
"chats",
1414
"loggedInUserID",
15-
"pendingRequests" ],
15+
"pendingRequests",
16+
"callbackCounter" ],
1617
"name" : "TCCCore",
1718
"pools" : [
1819
],
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
loading
22
loadGeneralInfo
3-
4-
self core client send: (TCCRequest
5-
newWithType: 'getSupergroupFullInfo'
6-
from: {'supergroup_id'->self groupId.
7-
'@extra'->self groupId}).
8-
9-
self core
3+
4+
| callbackID |
5+
callbackID := self core
106
registerCallback: [:aSupergroupFullInfoEvent |
117
self
128
memberCount: (aSupergroupFullInfoEvent at: 'member_count');
13-
description: (aSupergroupFullInfoEvent at: 'description').]
14-
with: self groupId.
9+
description: (aSupergroupFullInfoEvent at: 'description')].
10+
11+
self core client send: (TCCRequest
12+
newWithType: 'getSupergroupFullInfo'
13+
from: {'supergroup_id'->self groupId.
14+
'@extra'->callbackID}).
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
loading
22
loadMembers
33

4+
| callbackID |
5+
callbackID := self core
6+
registerCallback: [:aSupergroupMembersEvent |
7+
self addMembersFrom: (aSupergroupMembersEvent at: 'members')].
8+
49
self core client send: (TCCRequest
510
newWithType: 'getSupergroupMembers'
611
from: {'supergroup_id'->self groupId.
712
'offset'->self members size.
813
'limit'->self class defaultLimit.
9-
'@extra'->('#', self groupId)}).
10-
11-
self core
12-
registerCallback: [:aSupergroupMembersEvent |
13-
self addMembersFrom: (aSupergroupMembersEvent at: 'members').]
14-
with: '#', self groupId.
14+
'@extra'->callbackID}).

packages/TelegramClient-Core.package/TCCSuperGroupChat.class/methodProperties.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"instance" : {
55
"initializeFromChatEvent:" : "per 6/4/2021 15:08",
66
"isSuperGroup" : "per 6/15/2021 08:41",
7-
"loadGeneralInfo" : "TR 6/15/2021 16:39",
7+
"loadGeneralInfo" : "pk 6/18/2021 09:44",
88
"loadInfo" : "TR 6/14/2021 14:54",
9-
"loadMembers" : "TR 6/15/2021 16:39",
9+
"loadMembers" : "pk 6/18/2021 09:44",
1010
"loadMoreMembers" : "per 6/15/2021 08:15" } }
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
utility
22
requestUserFor: aUserId
33

4-
self core
4+
| callbackID |
5+
callbackID := self core
56
registerCallback:
6-
[:userEvent | (self at: aUserId) resolveWith: (TCCUser newFrom: userEvent)]
7-
with: (aUserId asString).
7+
[:userEvent | (self at: aUserId) resolveWith: (TCCUser newFrom: userEvent)].
88

9-
self core requestUser: aUserId with: aUserId
9+
self core requestUser: aUserId with: callbackID

packages/TelegramClient-Core.package/TCCUsers.class/methodProperties.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
"core" : "RK 5/19/2021 10:34",
66
"core:" : "TR 6/15/2021 16:52",
77
"getUserFor:" : "RK 5/19/2021 11:05",
8-
"requestUserFor:" : "pk 5/21/2021 09:33" } }
8+
"requestUserFor:" : "pk 6/18/2021 09:47" } }
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
testing
2+
testCallbackID
3+
4+
| block id1 id2 |
5+
block := [:anEvent | nil].
6+
id1 := self core registerCallback: block.
7+
id2 := self core registerCallback: block.
8+
9+
self deny: id1 = id2.
10+
self assert: (self core pendingRequests at: id1) equals: block.
11+
self assert: (self core pendingRequests at: id2) equals: block.

packages/TelegramClientTests-Core.package/TCTCCoreTests.class/methodProperties.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"testAuthHandler" : "per 5/21/2021 16:28",
1111
"testBasicGroupMembers" : "per 6/10/2021 20:47",
1212
"testCallback" : "per 5/21/2021 16:28",
13+
"testCallbackID" : "pk 6/18/2021 10:24",
1314
"testChatsHandler" : "per 5/21/2021 16:28",
1415
"testErrorConstants" : "js 8/2/2020 21:23",
1516
"testLoggedInUserID" : "TR 6/13/2021 14:48",

0 commit comments

Comments
 (0)