Skip to content

Commit a7357cd

Browse files
authored
Merge pull request #4 from hyperledger/master
[pull] master from hyperledger:master
2 parents bbe1bf4 + 86ad8b5 commit a7357cd

21 files changed

+301
-55
lines changed

.github/settings.yml

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#
2+
# SPDX-License-Identifier: Apache-2.0
3+
#
4+
5+
repository:
6+
name: aries-acapy-plugin-toolbox
7+
description: Hyperledger Aries
8+
homepage: https://wiki.hyperledger.org/display/aries
9+
default_branch: master
10+
has_downloads: true
11+
has_issues: true
12+
has_projects: false
13+
has_wiki: false
14+
archived: false
15+
private: false
16+
allow_squash_merge: true
17+
allow_merge_commit: false
18+
allow_rebase_merge: true
19+

acapy_plugin_toolbox/basicmessage.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
BaseRecord, BaseRecordSchema
2222
)
2323
from aries_cloudagent.messaging.valid import INDY_ISO8601_DATETIME
24-
from aries_cloudagent.protocols.connections.manager import ConnectionManager
25-
from aries_cloudagent.protocols.problem_report.message import ProblemReport
24+
from aries_cloudagent.protocols.connections.v1_0.manager import ConnectionManager
25+
from aries_cloudagent.protocols.problem_report.v1_0.message import ProblemReport
2626
from aries_cloudagent.storage.error import StorageNotFoundError
2727

2828
from .util import (
@@ -238,7 +238,7 @@ async def handle(self, context: RequestContext, responder: BaseResponder):
238238

239239
connection_mgr = ConnectionManager(context)
240240
admins = await ConnectionRecord.query(
241-
context, post_filter={'their_role': 'admin'}
241+
context, post_filter_positive={'their_role': 'admin'}
242242
)
243243

244244
if not admins:

acapy_plugin_toolbox/connections.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
from aries_cloudagent.config.injection_context import InjectionContext
1111
from aries_cloudagent.core.protocol_registry import ProtocolRegistry
1212
from aries_cloudagent.messaging.base_handler import BaseHandler, BaseResponder, RequestContext
13-
from aries_cloudagent.protocols.connections.manager import ConnectionManager
13+
from aries_cloudagent.protocols.connections.v1_0.manager import ConnectionManager
1414
from aries_cloudagent.connections.models.connection_record import (
1515
ConnectionRecord
1616
)
17-
from aries_cloudagent.protocols.connections.messages.connection_invitation import (
17+
from aries_cloudagent.protocols.connections.v1_0.messages.connection_invitation import (
1818
ConnectionInvitation,
1919
)
20-
from aries_cloudagent.protocols.problem_report.message import ProblemReport
20+
from aries_cloudagent.protocols.problem_report.v1_0.message import ProblemReport
2121
from aries_cloudagent.storage.error import StorageNotFoundError
2222

2323
from .util import generate_model_schema, admin_only
@@ -153,15 +153,15 @@ async def handle(self, context: RequestContext, responder: BaseResponder):
153153
'their_did': context.message.their_did,
154154
}.items())
155155
)
156-
post_filter = dict(filter(
156+
post_filter_positive = dict(filter(
157157
lambda item: item[1] is not None,
158158
{
159159
'their_role': context.message.role
160160
}.items()
161161
))
162162
# TODO: Filter on state (needs mapping back to ACA-Py connection states)
163163
records = await ConnectionRecord.query(
164-
context, tag_filter, post_filter
164+
context, tag_filter, post_filter_positive
165165
)
166166
results = [
167167
Connection(**conn_record_to_message_repr(record))
@@ -294,7 +294,7 @@ async def handle(self, context: RequestContext, responder: BaseResponder):
294294
invitation = ConnectionInvitation.from_url(context.message.invitation)
295295
connection = await connection_mgr.receive_invitation(
296296
invitation,
297-
accept=('auto' if context.message.auto_accept else 'none')
297+
auto_accept=context.message.auto_accept
298298
)
299299
connection_resp = Connection(**conn_record_to_message_repr(connection))
300300
await responder.send_reply(connection_resp)

acapy_plugin_toolbox/credential_definitions.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@
1111
from aries_cloudagent.core.protocol_registry import ProtocolRegistry
1212
from aries_cloudagent.messaging.base_handler import BaseHandler, BaseResponder, RequestContext
1313
from aries_cloudagent.messaging.models.base_record import BaseRecord, BaseRecordSchema
14-
from aries_cloudagent.protocols.problem_report.message import ProblemReport
14+
from aries_cloudagent.protocols.problem_report.v1_0.message import ProblemReport
1515
from aries_cloudagent.ledger.base import BaseLedger
16+
from aries_cloudagent.issuer.base import BaseIssuer
1617
from aries_cloudagent.storage.error import StorageNotFoundError
1718
from aries_cloudagent.config.injection_context import InjectionContext
1819
from aries_cloudagent.messaging.util import canon
@@ -168,6 +169,7 @@ class SendCredDefHandler(BaseHandler):
168169
async def handle(self, context: RequestContext, responder: BaseResponder):
169170
"""Handle received send cred def request."""
170171
ledger: BaseLedger = await context.inject(BaseLedger)
172+
issuer: BaseIssuer = await context.inject(BaseIssuer)
171173
# If no schema record, make one
172174
try:
173175
schema_record = await SchemaRecord.retrieve_by_schema_id(
@@ -193,8 +195,9 @@ async def handle(self, context: RequestContext, responder: BaseResponder):
193195

194196
try:
195197
async with ledger:
196-
credential_definition_id = await shield(
197-
ledger.send_credential_definition(
198+
credential_definition_id, credential_definition = await shield(
199+
ledger.create_and_send_credential_definition(
200+
issuer,
198201
context.message.schema_id,
199202
tag='{}_{}'.format(
200203
schema_record.schema_name,
@@ -210,6 +213,7 @@ async def handle(self, context: RequestContext, responder: BaseResponder):
210213
await responder.send_reply(report)
211214
return
212215

216+
# we may not need to save the record as below
213217
cred_def_record = CredDefRecord(
214218
cred_def_id=credential_definition_id,
215219
schema_id=context.message.schema_id,

acapy_plugin_toolbox/group/all.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@
1212
from ..issuer import setup as issuer_setup
1313
from ..basicmessage import setup as basic_message_setup
1414
from ..taa import setup as taa_setup
15-
from ..payments import setup as payment_setup
15+
#from ..payments import setup as payment_setup
1616
from ..invitations import setup as invitations_setup
17+
from ..mediator import setup as mediator_setup
18+
from ..routing import setup as routing_setup
1719

1820
async def setup(context: InjectionContext):
1921
"""Setup Toolbox Plugin."""
@@ -27,5 +29,7 @@ async def setup(context: InjectionContext):
2729
await issuer_setup(context, protocol_registry)
2830
await basic_message_setup(context, protocol_registry)
2931
await taa_setup(context, protocol_registry)
30-
await payment_setup(context, protocol_registry)
32+
# await payment_setup(context, protocol_registry)
3133
await invitations_setup(context, protocol_registry)
34+
await mediator_setup(context, protocol_registry)
35+
await routing_setup(context, protocol_registry)

acapy_plugin_toolbox/holder.py

+34-18
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
# pylint: disable=too-few-public-methods
55

66
from marshmallow import fields
7+
import json
78

89
from aries_cloudagent.config.injection_context import InjectionContext
910
from aries_cloudagent.core.protocol_registry import ProtocolRegistry
11+
from aries_cloudagent.holder.base import BaseHolder
1012
from aries_cloudagent.messaging.base_handler import BaseHandler, BaseResponder, RequestContext
1113
from aries_cloudagent.protocols.issue_credential.v1_0.routes import (
1214
V10CredentialExchangeListResultSchema,
@@ -36,7 +38,7 @@
3638

3739
from aries_cloudagent.connections.models.connection_record import ConnectionRecord
3840
from aries_cloudagent.storage.error import StorageNotFoundError
39-
from aries_cloudagent.protocols.problem_report.message import ProblemReport
41+
from aries_cloudagent.protocols.problem_report.v1_0.message import ProblemReport
4042

4143
from .util import generate_model_schema, admin_only
4244
PROTOCOL = 'did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/admin-holder/0.1'
@@ -236,10 +238,10 @@ async def handle(self, context: RequestContext, responder: BaseResponder):
236238
name='CredList',
237239
handler='acapy_plugin_toolbox.util.PassHandler',
238240
msg_type=CREDENTIALS_LIST,
239-
schema=V10CredentialExchangeListResultSchema
240-
# schema={
241-
# 'results': fields.List(fields.Dict())
242-
# }
241+
#schema=V10CredentialExchangeListResultSchema
242+
schema={
243+
'results': fields.List(fields.Dict())
244+
}
243245
)
244246

245247

@@ -255,17 +257,31 @@ async def handle(self, context: RequestContext, responder: BaseResponder):
255257
# cred_list = CredList(results=credentials)
256258
# await responder.send_reply(cred_list)
257259

258-
post_filter = dict(
259-
filter(lambda item: item[1] is not None, {
260-
# 'state': V10CredentialExchange.STATE_CREDENTIAL_RECEIVED,
261-
'role': V10CredentialExchange.ROLE_HOLDER,
262-
'connection_id': context.message.connection_id,
263-
'credential_definition_id': context.message.credential_definition_id,
264-
'schema_id': context.message.schema_id
265-
}.items())
266-
)
267-
records = await V10CredentialExchange.query(context, {}, post_filter)
268-
cred_list = CredList(results=records)
260+
start = 0 #request.query.get("start")
261+
count = 10 #request.query.get("count")
262+
263+
# url encoded json wql
264+
encoded_wql = "{}" #request.query.get("wql") or "{}"
265+
wql = json.loads(encoded_wql)
266+
267+
# defaults
268+
#start = int(start) if isinstance(start, str) else 0
269+
#count = int(count) if isinstance(count, str) else 10
270+
271+
holder: BaseHolder = await context.inject(BaseHolder)
272+
credentials = await holder.get_credentials(start, count, wql)
273+
274+
# post_filter_positive = dict(
275+
# filter(lambda item: item[1] is not None, {
276+
# # 'state': V10CredentialExchange.STATE_CREDENTIAL_RECEIVED,
277+
# #'role': V10CredentialExchange.ROLE_HOLDER,
278+
# 'connection_id': context.message.connection_id,
279+
# 'credential_definition_id': context.message.credential_definition_id,
280+
# 'schema_id': context.message.schema_id
281+
# }.items())
282+
# )
283+
# records = await V10CredentialExchange.query(context, {}, post_filter_positive)
284+
cred_list = CredList(results=credentials)
269285
await responder.send_reply(cred_list)
270286

271287

@@ -297,14 +313,14 @@ class PresGetListHandler(BaseHandler):
297313
async def handle(self, context: RequestContext, responder: BaseResponder):
298314
"""Handle received get cred list request."""
299315

300-
post_filter = dict(
316+
post_filter_positive = dict(
301317
filter(lambda item: item[1] is not None, {
302318
# 'state': V10PresentialExchange.STATE_CREDENTIAL_RECEIVED,
303319
'role': V10PresentationExchange.ROLE_PROVER,
304320
'connection_id': context.message.connection_id,
305321
'verified': context.message.verified,
306322
}.items())
307323
)
308-
records = await V10PresentationExchange.query(context, {}, post_filter)
324+
records = await V10PresentationExchange.query(context, {}, post_filter_positive)
309325
cred_list = PresList(results=records)
310326
await responder.send_reply(cred_list)

acapy_plugin_toolbox/invitations.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
from aries_cloudagent.messaging.base_handler import (
1111
BaseHandler, BaseResponder, RequestContext
1212
)
13-
from aries_cloudagent.protocols.connections.manager import ConnectionManager
13+
from aries_cloudagent.protocols.connections.v1_0.manager import ConnectionManager
1414
from aries_cloudagent.connections.models.connection_record import (
1515
ConnectionRecord
1616
)
1717
# ProblemReport will probably be needed when a delete message is implemented
18-
# from aries_cloudagent.protocols.problem_report.message import ProblemReport
18+
# from aries_cloudagent.protocols.problem_report.v1_0.message import ProblemReport
1919
from aries_cloudagent.storage.error import StorageNotFoundError
2020
from aries_cloudagent.messaging.valid import INDY_ISO8601_DATETIME
2121

@@ -123,7 +123,7 @@ async def handle(self, context: RequestContext, responder: BaseResponder):
123123
connection, invitation = await connection_mgr.create_invitation(
124124
my_label=context.message.label,
125125
their_role=context.message.role,
126-
accept="auto" if context.message.auto_accept else "none",
126+
auto_accept=context.message.auto_accept,
127127
multi_use=bool(context.message.multi_use),
128128
public=False,
129129
alias=context.message.alias,
@@ -161,7 +161,7 @@ async def handle(self, context: RequestContext, responder: BaseResponder):
161161

162162
}.items())
163163
)
164-
post_filter = dict(filter(
164+
post_filter_positive = dict(filter(
165165
lambda item: item[1] is not None,
166166
{
167167
'state': 'invitation',
@@ -170,7 +170,7 @@ async def handle(self, context: RequestContext, responder: BaseResponder):
170170
}.items()
171171
))
172172
records = await ConnectionRecord.query(
173-
context, tag_filter, post_filter
173+
context, tag_filter, post_filter_positive
174174
)
175175
results = []
176176
for connection in records:

acapy_plugin_toolbox/issuer.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
)
3131
from aries_cloudagent.protocols.present_proof.v1_0.routes import (
3232
V10PresentationExchangeListSchema,
33-
V10PresentationRequestRequestSchema
33+
V10PresentationSendRequestRequestSchema
3434
)
3535
from aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange import (
3636
V10PresentationExchange,
@@ -41,7 +41,7 @@
4141
from aries_cloudagent.protocols.issue_credential.v1_0.manager import CredentialManager
4242
from aries_cloudagent.connections.models.connection_record import ConnectionRecord
4343
from aries_cloudagent.storage.error import StorageNotFoundError
44-
from aries_cloudagent.protocols.problem_report.message import ProblemReport
44+
from aries_cloudagent.protocols.problem_report.v1_0.message import ProblemReport
4545

4646
from .util import generate_model_schema, admin_only
4747
PROTOCOL = 'did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/admin-issuer/0.1'
@@ -161,7 +161,7 @@ async def handle(self, context: RequestContext, responder: BaseResponder):
161161
name='RequestPres',
162162
handler='acapy_plugin_toolbox.issuer.RequestPresHandler',
163163
msg_type=REQUEST_PRESENTATION,
164-
schema=V10PresentationRequestRequestSchema,
164+
schema=V10PresentationSendRequestRequestSchema,
165165
)
166166
IssuerPresExchange, IssuerPresExchangeSchema = generate_model_schema(
167167
name='IssuerPresExchange',
@@ -260,7 +260,7 @@ class CredGetListHandler(BaseHandler):
260260
async def handle(self, context: RequestContext, responder: BaseResponder):
261261
"""Handle received get cred list request."""
262262

263-
post_filter = dict(
263+
post_filter_positive = dict(
264264
filter(lambda item: item[1] is not None, {
265265
# 'state': V10CredentialExchange.STATE_ISSUED,
266266
'role': V10CredentialExchange.ROLE_ISSUER,
@@ -269,7 +269,7 @@ async def handle(self, context: RequestContext, responder: BaseResponder):
269269
'schema_id': context.message.schema_id
270270
}.items())
271271
)
272-
records = await V10CredentialExchange.query(context, {}, post_filter)
272+
records = await V10CredentialExchange.query(context, {}, post_filter_positive)
273273
cred_list = CredList(results=records)
274274
await responder.send_reply(cred_list)
275275

@@ -302,14 +302,14 @@ class PresGetListHandler(BaseHandler):
302302
async def handle(self, context: RequestContext, responder: BaseResponder):
303303
"""Handle received get cred list request."""
304304

305-
post_filter = dict(
305+
post_filter_positive = dict(
306306
filter(lambda item: item[1] is not None, {
307307
# 'state': V10PresentialExchange.STATE_CREDENTIAL_RECEIVED,
308308
'role': V10PresentationExchange.ROLE_VERIFIER,
309309
'connection_id': context.message.connection_id,
310310
'verified': context.message.verified,
311311
}.items())
312312
)
313-
records = await V10PresentationExchange.query(context, {}, post_filter)
313+
records = await V10PresentationExchange.query(context, {}, post_filter_positive)
314314
cred_list = PresList(results=records)
315315
await responder.send_reply(cred_list)

0 commit comments

Comments
 (0)