Skip to content

Commit e151a52

Browse files
committed
oob invitation implemented
1 parent ed02bd1 commit e151a52

File tree

1 file changed

+6
-60
lines changed

1 file changed

+6
-60
lines changed

tutorials/aries-basic-controller/notebooks/alice/Part 3 - Establishing a Connection.ipynb

Lines changed: 6 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -170,82 +170,28 @@
170170
},
171171
{
172172
"cell_type": "code",
173-
"execution_count": 16,
173+
"execution_count": 29,
174174
"metadata": {},
175175
"outputs": [
176176
{
177177
"name": "stdout",
178178
"output_type": "stream",
179179
"text": [
180-
"{'attachments': [{'id': '123', 'type': 'credential-offer', 'data': {'json': '{\"@type\": \"did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/connections/1.0/invitation\", \"@id\": \"64cad920-7ca3-4b52-9ab9-a9d1f32abde5\", \"serviceEndpoint\": \"http://192.168.65.3:8020\", \"recipientKeys\": [\"3VX9fa6Z1Sa1wJmsE2GZNvdtFGRqm81bL4BqbWRsc4Sn\"], \"label\": \"Alice\"}'}}], 'include_handshake': True, 'use_public_did': False}\n"
181-
]
182-
},
183-
{
184-
"ename": "ClientResponseError",
185-
"evalue": "422, message='Unprocessable Entity', url=URL('http://alice-agent:8021/out-of-band/create-invitation')",
186-
"output_type": "error",
187-
"traceback": [
188-
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
189-
"\u001b[0;31mClientResponseError\u001b[0m Traceback (most recent call last)",
190-
"\u001b[0;32m<ipython-input-16-77ab6d17bd4f>\u001b[0m in \u001b[0;36masync-def-wrapper\u001b[0;34m()\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mconnection_id\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minvite\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"connection_id\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Connection ID\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconnection_id\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 22\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Invitation\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minvite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
191-
"\u001b[0;32m/aries_basic_controller/controllers/oob.py\u001b[0m in \u001b[0;36mcreate_invitation\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32masync\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mcreate_invitation\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mawait\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madmin_POST\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"/out-of-band/create-invitation\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
192-
"\u001b[0;32m/aries_basic_controller/controllers/base.py\u001b[0m in \u001b[0;36madmin_POST\u001b[0;34m(self, path, json_data, text, params, data)\u001b[0m\n\u001b[1;32m 94\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\" with data: \\n{}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrepr_json\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mjson_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mjson_data\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 95\u001b[0m )\n\u001b[0;32m---> 96\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mawait\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madmin_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"POST\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpath\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mjson_data\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtext\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 97\u001b[0m EVENT_LOGGER.debug(\n\u001b[1;32m 98\u001b[0m \u001b[0;34m\"Response from POST %s received: \\n%s\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpath\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrepr_json\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
193-
"\u001b[0;32m/aries_basic_controller/controllers/base.py\u001b[0m in \u001b[0;36madmin_request\u001b[0;34m(self, method, path, json_data, text, params, data)\u001b[0m\n\u001b[1;32m 61\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madmin_url\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mpath\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mjson\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mjson_data\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 62\u001b[0m ) as resp:\n\u001b[0;32m---> 63\u001b[0;31m \u001b[0mresp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraise_for_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 64\u001b[0m \u001b[0mresp_text\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mawait\u001b[0m \u001b[0mresp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mresp_text\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mtext\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
194-
"\u001b[0;32m/opt/conda/lib/python3.7/site-packages/aiohttp/client_reqrep.py\u001b[0m in \u001b[0;36mraise_for_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 944\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 945\u001b[0m \u001b[0mmessage\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreason\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 946\u001b[0;31m headers=self.headers)\n\u001b[0m\u001b[1;32m 947\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 948\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_cleanup_writer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
195-
"\u001b[0;31mClientResponseError\u001b[0m: 422, message='Unprocessable Entity', url=URL('http://alice-agent:8021/out-of-band/create-invitation')"
196-
]
197-
},
198-
{
199-
"name": "stderr",
200-
"output_type": "stream",
201-
"text": [
202-
"ERROR:asyncio:Task exception was never retrieved\n",
203-
"future: <Task finished coro=<run_in_terminal.<locals>.run() done, defined at /opt/conda/lib/python3.7/site-packages/prompt_toolkit/application/run_in_terminal.py:50> exception=UnsupportedOperation('fileno')>\n",
204-
"Traceback (most recent call last):\n",
205-
" File \"/opt/conda/lib/python3.7/site-packages/prompt_toolkit/application/run_in_terminal.py\", line 55, in run\n",
206-
" return func()\n",
207-
" File \"/aries_basic_controller/helpers/utils.py\", line 120, in <lambda>\n",
208-
" run_in_terminal(lambda: print_ext(*msg, color=color, **kwargs))\n",
209-
" File \"/aries_basic_controller/helpers/utils.py\", line 103, in print_ext\n",
210-
" print_formatted(FormattedText(msg), **kwargs)\n",
211-
" File \"/aries_basic_controller/helpers/utils.py\", line 83, in print_formatted\n",
212-
" prompt_toolkit.print_formatted_text(*args, **kwargs)\n",
213-
" File \"/opt/conda/lib/python3.7/site-packages/prompt_toolkit/shortcuts/utils.py\", line 112, in print_formatted_text\n",
214-
" output = get_app_session().output\n",
215-
" File \"/opt/conda/lib/python3.7/site-packages/prompt_toolkit/application/current.py\", line 70, in output\n",
216-
" self._output = create_output()\n",
217-
" File \"/opt/conda/lib/python3.7/site-packages/prompt_toolkit/output/defaults.py\", line 75, in create_output\n",
218-
" stdout, term=term_from_env, default_color_depth=color_depth_from_env\n",
219-
" File \"/opt/conda/lib/python3.7/site-packages/prompt_toolkit/output/vt100.py\", line 458, in from_pty\n",
220-
" fd = stdout.fileno()\n",
221-
"io.UnsupportedOperation: fileno\n"
180+
"{\"include_handshake\": true, \"use_public_did\": false}\n",
181+
"{\"state\": \"initial\", \"invitation\": {\"@type\": \"did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.0/invitation\", \"@id\": \"0945a4a3-ab68-44c1-9929-2399d4eb973c\", \"label\": \"Alice\", \"request~attach\": [], \"handshake_protocols\": [\"https://didcomm.org/connections/1.0/invitation\", \"did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/connections/1.0/invitation\"], \"service\": [{\"id\": \"#inline\", \"type\": \"did-communication\", \"recipientKeys\": [\"did:key:z6Mku6aab9HkD9LNm3ZMrFyzCQ7szRQUFQB91wG52uvaUmXt\"], \"routingKeys\": [], \"serviceEndpoint\": \"http://192.168.65.3:8020\"}]}, \"created_at\": \"2020-10-30 10:27:07.312380Z\", \"invitation_id\": \"c25c888a-ba1a-4ba1-b571-3c50d724dba4\", \"updated_at\": \"2020-10-30 10:27:07.312380Z\", \"trace\": false}\n"
222182
]
223183
}
224184
],
225185
"source": [
226-
"import json\n",
227-
"# attachment types can be (credential-offer|present-proof)\n",
228-
"invite1 = json.dumps(invite_message)\n",
229186
"payload = {\n",
230-
" \"attachments\": [\n",
231-
" {\n",
232-
" \"id\": \"123\",\n",
233-
" \"type\": \"credential-offer\",\n",
234-
" \"data\": invite1\n",
235-
" }\n",
236-
" ],\n",
237187
" \"include_handshake\": True,\n",
238188
" \"use_public_did\": False\n",
239189
"}\n",
240-
"\n",
241-
"print(payload)\n",
190+
"print(json.dumps(payload))\n",
242191
"\n",
243192
"# Create an out of band Invitation\n",
244-
"invite = await agent_controller.oob.create_invitation(payload)\n",
245-
"connection_id = invite[\"connection_id\"]\n",
246-
"print(\"Connection ID\", connection_id)\n",
247-
"print(\"Invitation\")\n",
248-
"print(invite)"
193+
"oob_invite = await agent_controller.oob.create_invitation(json.dumps(payload))\n",
194+
"print(json.dumps(oob_invite))"
249195
]
250196
},
251197
{

0 commit comments

Comments
 (0)