Spaces:
Running
Running
File size: 982 Bytes
c8e5eaa | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | """可选发布请求身份;只提供现存内容记录范围内的重复创建确认。"""
import hashlib
import json
import re
def publication_identity(kind, account, key):
if key is None:
return None
if kind not in {'post', 'prompt'} or not isinstance(account, str) or not account:
raise ValueError('invalid publication owner')
if not isinstance(key, str) or re.fullmatch(r'[0-9a-f]{32}', key) is None:
raise ValueError('invalid publication key')
data = json.dumps([kind, account, key], ensure_ascii=False, separators=(',', ':')).encode('utf-8')
return f'{kind}_publish_{hashlib.sha256(data).hexdigest()}'
def same_publication(existing, incoming, fields):
def content(record):
return json.dumps({field: record.get(field) for field in fields}, ensure_ascii=False,
sort_keys=True, separators=(',', ':'), allow_nan=False)
return content(existing) == content(incoming)
|