use ephemeral event type for nostr swap request events
This commit is contained in:
@@ -1269,9 +1269,9 @@ class NostrTransport(SwapServerTransport):
|
|||||||
# - for client-server RPCs (using DMs)
|
# - for client-server RPCs (using DMs)
|
||||||
# (todo: we should use onion messages for that)
|
# (todo: we should use onion messages for that)
|
||||||
|
|
||||||
NOSTR_DM = 4
|
EPHEMERAL_REQUEST = 25582
|
||||||
USER_STATUS_NIP38 = 30315
|
USER_STATUS_NIP38 = 30315
|
||||||
NOSTR_EVENT_VERSION = 3
|
NOSTR_EVENT_VERSION = 4
|
||||||
OFFER_UPDATE_INTERVAL_SEC = 60 * 10
|
OFFER_UPDATE_INTERVAL_SEC = 60 * 10
|
||||||
|
|
||||||
def __init__(self, config, sm, keypair):
|
def __init__(self, config, sm, keypair):
|
||||||
@@ -1338,7 +1338,7 @@ class NostrTransport(SwapServerTransport):
|
|||||||
def get_relay_manager(self):
|
def get_relay_manager(self):
|
||||||
assert get_running_loop() == get_asyncio_loop(), f"this must be run on the asyncio thread!"
|
assert get_running_loop() == get_asyncio_loop(), f"this must be run on the asyncio thread!"
|
||||||
if not self.relay_manager:
|
if not self.relay_manager:
|
||||||
if self.network.proxy:
|
if self.network.proxy and self.network.proxy.enabled:
|
||||||
proxy = make_aiohttp_proxy_connector(self.network.proxy, self.ssl_context)
|
proxy = make_aiohttp_proxy_connector(self.network.proxy, self.ssl_context)
|
||||||
else:
|
else:
|
||||||
proxy: Optional['ProxyConnector'] = None
|
proxy: Optional['ProxyConnector'] = None
|
||||||
@@ -1397,12 +1397,16 @@ class NostrTransport(SwapServerTransport):
|
|||||||
self.logger.info(f"published offer {event_id}")
|
self.logger.info(f"published offer {event_id}")
|
||||||
|
|
||||||
async def send_direct_message(self, pubkey: str, relays, content: str) -> str:
|
async def send_direct_message(self, pubkey: str, relays, content: str) -> str:
|
||||||
|
our_private_key = aionostr.key.PrivateKey(self.private_key)
|
||||||
|
recv_pubkey_hex = aionostr.util.from_nip19(pubkey)['object'].hex() if pubkey.startswith('npub') else pubkey
|
||||||
|
encrypted_msg = our_private_key.encrypt_message(content, recv_pubkey_hex)
|
||||||
event_id = await aionostr._add_event(
|
event_id = await aionostr._add_event(
|
||||||
self.relay_manager,
|
self.relay_manager,
|
||||||
kind=self.NOSTR_DM,
|
kind=self.EPHEMERAL_REQUEST,
|
||||||
content=content,
|
content=encrypted_msg,
|
||||||
private_key=self.nostr_private_key,
|
private_key=self.nostr_private_key,
|
||||||
direct_message=pubkey)
|
tags=[['p', recv_pubkey_hex]],
|
||||||
|
)
|
||||||
return event_id
|
return event_id
|
||||||
|
|
||||||
@log_exceptions
|
@log_exceptions
|
||||||
@@ -1505,7 +1509,7 @@ class NostrTransport(SwapServerTransport):
|
|||||||
@log_exceptions
|
@log_exceptions
|
||||||
async def check_direct_messages(self):
|
async def check_direct_messages(self):
|
||||||
privkey = aionostr.key.PrivateKey(self.private_key)
|
privkey = aionostr.key.PrivateKey(self.private_key)
|
||||||
query = {"kinds": [self.NOSTR_DM], "limit":0, "#p": [self.nostr_pubkey]}
|
query = {"kinds": [self.EPHEMERAL_REQUEST], "limit":0, "#p": [self.nostr_pubkey]}
|
||||||
async for event in self.relay_manager.get_events(query, single_event=False, only_stored=False):
|
async for event in self.relay_manager.get_events(query, single_event=False, only_stored=False):
|
||||||
try:
|
try:
|
||||||
content = privkey.decrypt_message(event.content, event.pubkey)
|
content = privkey.decrypt_message(event.content, event.pubkey)
|
||||||
|
|||||||
Reference in New Issue
Block a user