forked from indymedia/epicyon
Fix status number using sequence data
parent
78bb91505a
commit
b0be557047
12
tests.py
12
tests.py
|
@ -41,6 +41,7 @@ from utils import followPerson
|
|||
from utils import getNicknameFromActor
|
||||
from utils import getDomainFromActor
|
||||
from utils import copytree
|
||||
from utils import getStatusNumber
|
||||
from follow import followerOfPerson
|
||||
from follow import unfollowPerson
|
||||
from follow import unfollowerOfPerson
|
||||
|
@ -1426,8 +1427,19 @@ def testAddEmoji():
|
|||
os.chdir(baseDirOriginal)
|
||||
shutil.rmtree(baseDirOriginal+'/.tests')
|
||||
|
||||
def testGetStatusNumber():
|
||||
print('testGetStatusNumber')
|
||||
prevStatusNumber=None
|
||||
for i in range(1,20):
|
||||
statusNumber,published = getStatusNumber()
|
||||
if prevStatusNumber:
|
||||
assert len(statusNumber) == 18
|
||||
assert int(statusNumber) > prevStatusNumber
|
||||
prevStatusNumber=int(statusNumber)
|
||||
|
||||
def runAllTests():
|
||||
print('Running tests...')
|
||||
testGetStatusNumber()
|
||||
testAddEmoji()
|
||||
testWebLinks()
|
||||
testActorParsing()
|
||||
|
|
7
utils.py
7
utils.py
|
@ -18,7 +18,12 @@ def getStatusNumber() -> (str,str):
|
|||
currTime=datetime.datetime.utcnow()
|
||||
daysSinceEpoch=(currTime - datetime.datetime(1970,1,1)).days
|
||||
# status is the number of seconds since epoch
|
||||
statusNumber=str(((daysSinceEpoch*24*60*60) + (currTime.hour*60*60) + (currTime.minute*60) + currTime.second)*1000000 + currTime.microsecond)
|
||||
statusNumber=str(((daysSinceEpoch*24*60*60) + (currTime.hour*60*60) + (currTime.minute*60) + currTime.second)*1000 + int(currTime.microsecond/1000))
|
||||
# See https://github.com/tootsuite/mastodon/blob/995f8b389a66ab76ec92d9a240de376f1fc13a38/lib/mastodon/snowflake.rb
|
||||
# use the leftover microseconds as the sequence number
|
||||
sequenceId=currTime.microsecond % 1000
|
||||
# shift by 16bits "sequence data"
|
||||
statusNumber=str((int(statusNumber)<<16)+sequenceId)
|
||||
published=currTime.strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||
return statusNumber,published
|
||||
|
||||
|
|
Loading…
Reference in New Issue