Skip to content

Commit a6cf1d5

Browse files
committed
Add _util.now, fixing a few places where datetimes were incorrectly used
1 parent 65b42e6 commit a6cf1d5

6 files changed

Lines changed: 20 additions & 8 deletions

File tree

fbchat/_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ def fetch_unread(self) -> Sequence[_threads.ThreadABC]:
419419
Warning:
420420
This is not finished, and the API may change at any point!
421421
"""
422-
at = datetime.datetime.utcnow()
422+
at = _util.now()
423423
form = {
424424
"folders[0]": "inbox",
425425
"client": "mercury",

fbchat/_session.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ def _graphql_requests(self, *queries):
486486
return self._post("/api/graphqlbatch/", data, as_graphql=True)
487487

488488
def _do_send_request(self, data):
489-
now = datetime.datetime.utcnow()
489+
now = _util.now()
490490
offline_threading_id = _util.generate_offline_threading_id()
491491
data["client"] = "mercury"
492492
data["author"] = "fbid:{}".format(self._user_id)

fbchat/_util.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def parse_json(text: str) -> Any:
5656

5757

5858
def generate_offline_threading_id():
59-
ret = datetime_to_millis(datetime.datetime.utcnow())
59+
ret = datetime_to_millis(now())
6060
value = int(random.random() * 4294967295)
6161
string = ("0000000000000000000000" + format(value, "b"))[-22:]
6262
msgs = format(ret, "b") + string
@@ -158,3 +158,11 @@ def timedelta_to_seconds(td: datetime.timedelta) -> int:
158158
The returned seconds will be rounded to the nearest whole number.
159159
"""
160160
return round(td.total_seconds())
161+
162+
163+
def now() -> datetime.datetime:
164+
"""The current time.
165+
166+
Similar to datetime.datetime.now(), but returns a non-naive datetime.
167+
"""
168+
return datetime.datetime.now(tz=datetime.timezone.utc)

tests/online/test_client.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import pytest
22
import fbchat
3-
import datetime
43
import os
54

65
pytestmark = pytest.mark.online
@@ -95,11 +94,11 @@ def test_upload_many(client, open_resource):
9594

9695

9796
def test_mark_as_read(client, user, group):
98-
client.mark_as_read([user, group], datetime.datetime.now())
97+
client.mark_as_read([user, group], fbchat._util.now())
9998

10099

101100
def test_mark_as_unread(client, user, group):
102-
client.mark_as_unread([user, group], datetime.datetime.now())
101+
client.mark_as_unread([user, group], fbchat._util.now())
103102

104103

105104
def test_move_threads(client, user, group):

tests/test_session.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import datetime
22
import pytest
3-
from fbchat import ParseError
3+
from fbchat import ParseError, _util
44
from fbchat._session import (
55
parse_server_js_define,
66
base36encode,
@@ -73,7 +73,7 @@ def test_prefix_url():
7373

7474
def test_generate_message_id():
7575
# Returns random output, so hard to test more thoroughly
76-
assert generate_message_id(datetime.datetime.utcnow(), "def")
76+
assert generate_message_id(_util.now(), "def")
7777

7878

7979
def test_session_factory():

tests/test_util.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
seconds_to_timedelta,
1616
millis_to_timedelta,
1717
timedelta_to_seconds,
18+
now,
1819
)
1920

2021

@@ -245,3 +246,7 @@ def test_timedelta_to_seconds():
245246
assert timedelta_to_seconds(datetime.timedelta(seconds=1)) == 1
246247
assert timedelta_to_seconds(datetime.timedelta(hours=1)) == 3600
247248
assert timedelta_to_seconds(datetime.timedelta(days=1)) == 86400
249+
250+
251+
def test_now():
252+
assert datetime_to_millis(now()) == datetime_to_millis(datetime.datetime.now())

0 commit comments

Comments
 (0)