Skip to content

Commit e1da1d2

Browse files
committed
feat: Respond to target list & msg fixes
- Respond to the target list via did resolution - Fix response to incoming messages (hack it till it works) Signed-off-by: Colton Wolkins (Laptop) <[email protected]>
1 parent 7452d0e commit e1da1d2

File tree

1 file changed

+50
-2
lines changed

1 file changed

+50
-2
lines changed

acapy_agent/protocols_v2/trustping/v1_0/message_types.py

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
#from ...didcomm_prefix import DIDCommPrefix
44
import logging
55
from ....messaging.v2_agent_message import V2AgentMessage
6+
from ....connections.models.connection_target import ConnectionTarget
7+
from didcomm_messaging import DIDCommMessaging, RoutingService
68

79
SPEC_URI = (
810
"https://github.com/hyperledger/aries-rfcs/tree/"
@@ -22,16 +24,62 @@ async def __call__(self, *args, **kwargs):
2224
@staticmethod
2325
async def handle(context, responder, payload):
2426
message = payload
27+
session = await context.profile.session()
28+
ctx = session
29+
messaging = ctx.inject(DIDCommMessaging)
30+
routing_service = ctx.inject(RoutingService)
31+
frm = message.get("from")
32+
#destination = await routing_service._resolve_services(messaging.resolver, frm)
33+
services = await routing_service._resolve_services(messaging.resolver, frm)
34+
chain = [
35+
{
36+
"did": frm,
37+
"service": services,
38+
}
39+
]
40+
41+
# Loop through service DIDs until we run out of DIDs to forward to
42+
to_did = services[0].service_endpoint.uri
43+
found_forwardable_service = await routing_service.is_forwardable_service(
44+
messaging.resolver, services[0]
45+
)
46+
while found_forwardable_service:
47+
services = await routing_service._resolve_services(messaging.resolver, to_did)
48+
if services:
49+
chain.append(
50+
{
51+
"did": to_did,
52+
"service": services,
53+
}
54+
)
55+
to_did = services[0].service_endpoint.uri
56+
found_forwardable_service = (
57+
await routing_service.is_forwardable_service(messaging.resolver, services[0])
58+
if services
59+
else False
60+
)
61+
destination = [
62+
ConnectionTarget(
63+
did=context.message_receipt.sender_verkey,
64+
endpoint=service.service_endpoint.uri,
65+
recipient_keys=[context.message_receipt.sender_verkey],
66+
sender_key=context.message_receipt.recipient_verkey,
67+
)
68+
for service in chain[-1]["service"]
69+
]
2570
logger = logging.getLogger(__name__)
2671
error_result = V2AgentMessage(
2772
message={
2873
"type": "https://didcomm.org/basicmessage/2.0/message",
2974
"body": {
30-
"message": "Hello Frosty :3",
75+
"content": "Hello from acapy",
3176
},
77+
"to": [context.message_receipt.sender_verkey.split('#')[0]],
78+
"from": context.message_receipt.recipient_verkey.split('#')[0],
79+
"lang": "en",
3280
}
3381
)
34-
await responder.send_reply(error_result)
82+
await responder.send_reply(error_result, target_list=destination)
3583

3684
HANDLERS = {
3785
DEBUG: f"{PROTOCOL_PACKAGE}.message_types.test_func",

0 commit comments

Comments
 (0)