1
1
from .. import http , utils
2
2
from . import auth
3
+ from model .room import Room
3
4
4
5
from flask import abort , jsonify , g , Blueprint , request
5
6
@@ -15,7 +16,7 @@ def qs_reactors():
15
16
16
17
@messages .get ("/room/<Room:room>/messages/since/<int:seqno>" )
17
18
@auth .read_required
18
- def messages_since (room , seqno ):
19
+ def messages_since (room : Room , seqno ):
19
20
"""
20
21
Retrieves message *updates* from a room. This is the main message polling endpoint in SOGS.
21
22
@@ -99,7 +100,7 @@ def messages_since(room, seqno):
99
100
100
101
@messages .get ("/room/<Room:room>/messages/before/<int:msg_id>" )
101
102
@auth .read_required
102
- def messages_before (room , msg_id ):
103
+ def messages_before (room : Room , msg_id ):
103
104
"""
104
105
Retrieves messages from the room preceding a given id.
105
106
@@ -142,7 +143,7 @@ def messages_before(room, msg_id):
142
143
143
144
@messages .get ("/room/<Room:room>/messages/recent" )
144
145
@auth .read_required
145
- def messages_recent (room ):
146
+ def messages_recent (room : Room ):
146
147
"""
147
148
Retrieves recent messages posted to this room.
148
149
@@ -181,7 +182,7 @@ def messages_recent(room):
181
182
182
183
@messages .get ("/room/<Room:room>/message/<int:msg_id>" )
183
184
@auth .read_required
184
- def message_single (room , msg_id ):
185
+ def message_single (room : Room , msg_id ):
185
186
"""
186
187
Returns a single message by ID.
187
188
@@ -310,7 +311,7 @@ def message_single(room, msg_id):
310
311
311
312
@messages .post ("/room/<Room:room>/message" )
312
313
@auth .user_required
313
- def post_message (room ):
314
+ def post_message (room : Room ):
314
315
"""
315
316
Posts a new message to a room.
316
317
@@ -359,21 +360,28 @@ def post_message(room):
359
360
"""
360
361
req = request .json
361
362
362
- msg = room .add_post (
363
- g .user ,
364
- data = utils .decode_base64 (req .get ('data' )),
365
- sig = utils .decode_base64 (req .get ('signature' )),
366
- whisper_to = req .get ('whisper_to' ),
367
- whisper_mods = bool (req .get ('whisper_mods' )),
368
- files = [int (x ) for x in req .get ('files' , [])],
369
- )
363
+ if room .bot_mode :
364
+ room .bot .receive_message (
365
+ user = g .user ,
366
+ data = utils .decode_base64 (req .get ('data' )),
367
+ sig = utils .decode_base64 (req .get ('signature' )),
368
+ files = [int (x ) for x in req .get ('files' , [])])
369
+ else :
370
+ msg = room .add_post (
371
+ g .user ,
372
+ data = utils .decode_base64 (req .get ('data' )),
373
+ sig = utils .decode_base64 (req .get ('signature' )),
374
+ whisper_to = req .get ('whisper_to' ),
375
+ whisper_mods = bool (req .get ('whisper_mods' )),
376
+ files = [int (x ) for x in req .get ('files' , [])],
377
+ )
370
378
371
379
return utils .jsonify_with_base64 (msg ), http .CREATED
372
380
373
381
374
382
@messages .put ("/room/<Room:room>/message/<int:msg_id>" )
375
383
@auth .user_required
376
- def edit_message (room , msg_id ):
384
+ def edit_message (room : Room , msg_id ):
377
385
"""
378
386
Edits a message, replacing its existing content with new content and a new signature.
379
387
@@ -420,7 +428,7 @@ def edit_message(room, msg_id):
420
428
421
429
@messages .delete ("/room/<Room:room>/message/<int:msg_id>" )
422
430
@auth .user_required
423
- def remove_message (room , msg_id ):
431
+ def remove_message (room : Room , msg_id ):
424
432
"""
425
433
Remove a message by its message id
426
434
@@ -447,7 +455,7 @@ def remove_message(room, msg_id):
447
455
448
456
449
457
@messages .post ("/room/<Room:room>/pin/<int:msg_id>" )
450
- def message_pin (room , msg_id ):
458
+ def message_pin (room : Room , msg_id ):
451
459
"""
452
460
Adds a pinned message to this room.
453
461
@@ -490,7 +498,7 @@ def message_pin(room, msg_id):
490
498
491
499
492
500
@messages .post ("/room/<Room:room>/unpin/<int:msg_id>" )
493
- def message_unpin (room , msg_id ):
501
+ def message_unpin (room : Room , msg_id ):
494
502
"""
495
503
Remove a message from this room's pinned message list.
496
504
@@ -524,7 +532,7 @@ def message_unpin(room, msg_id):
524
532
525
533
526
534
@messages .post ("/room/<Room:room>/unpin/all" )
527
- def message_unpin_all (room ):
535
+ def message_unpin_all (room : Room ):
528
536
"""
529
537
Removes *all* pinned messages from this room.
530
538
@@ -553,7 +561,7 @@ def message_unpin_all(room):
553
561
@messages .put ("/room/<Room:room>/reaction/<int:msg_id>/<path:reaction>" )
554
562
@auth .user_required
555
563
@auth .read_required
556
- def message_react (room , msg_id , reaction ):
564
+ def message_react (room : Room , msg_id , reaction ):
557
565
"""
558
566
Adds a reaction to the given message in this room. The user must have read access in the room.
559
567
@@ -606,7 +614,7 @@ def message_react(room, msg_id, reaction):
606
614
@messages .delete ("/room/<Room:room>/reaction/<int:msg_id>/<path:reaction>" )
607
615
@auth .user_required
608
616
@auth .read_required
609
- def message_unreact (room , msg_id , reaction ):
617
+ def message_unreact (room : Room , msg_id , reaction ):
610
618
"""
611
619
Removes a reaction from a post this room. The user must have read access in the room. This
612
620
only removes the user's own reaction but does not affect the reactions of other users.
@@ -642,7 +650,7 @@ def message_unreact(room, msg_id, reaction):
642
650
@messages .delete ("/room/<Room:room>/reactions/<int:msg_id>/<path:reaction>" )
643
651
@messages .delete ("/room/<Room:room>/reactions/<int:msg_id>" )
644
652
@auth .mod_required
645
- def message_delete_reactions (room , msg_id , reaction = None ):
653
+ def message_delete_reactions (room : Room , msg_id , reaction = None ):
646
654
"""
647
655
Removes all reactions of all users from a post in this room. The calling must have moderator
648
656
permissions in the room. This endpoint can either remove a single reaction (e.g. remove all 🍆
@@ -677,7 +685,7 @@ def message_delete_reactions(room, msg_id, reaction=None):
677
685
678
686
@messages .get ("/room/<Room:room>/reactors/<int:msg_id>/<path:reaction>" )
679
687
@auth .read_required
680
- def message_get_reactors (room , msg_id , reaction ):
688
+ def message_get_reactors (room : Room , msg_id , reaction ):
681
689
"""
682
690
Returns the list of all reactors who have added a particular reaction to a particular message.
683
691
0 commit comments