From 9e4403035a9953c99117083e6373ae3c441a76b5 Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Tue, 12 Dec 2017 15:20:49 +0000 Subject: Import py-macaroon-bakery_1.1.0.orig.tar.gz --- macaroonbakery/httpbakery/_discharge.py | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 macaroonbakery/httpbakery/_discharge.py (limited to 'macaroonbakery/httpbakery/_discharge.py') diff --git a/macaroonbakery/httpbakery/_discharge.py b/macaroonbakery/httpbakery/_discharge.py new file mode 100644 index 0000000..f868d23 --- /dev/null +++ b/macaroonbakery/httpbakery/_discharge.py @@ -0,0 +1,34 @@ +# Copyright 2017 Canonical Ltd. +# Licensed under the LGPLv3, see LICENCE file for details. +import macaroonbakery.bakery as bakery +import macaroonbakery._utils as utils + + +def discharge(ctx, content, key, locator, checker): + '''Handles a discharge request as received by the /discharge + endpoint. + @param ctx The context passed to the checker {checkers.AuthContext} + @param content URL and form parameters {dict} + @param locator Locator used to add third party caveats returned by + the checker {macaroonbakery.ThirdPartyLocator} + @param checker {macaroonbakery.ThirdPartyCaveatChecker} Used to check third + party caveats. + @return The discharge macaroon {macaroonbakery.Macaroon} + ''' + id = content.get('id') + if id is None: + id = content.get('id64') + if id is not None: + id = utils.b64decode(id) + caveat = content.get('caveat64') + if caveat is not None: + caveat = utils.b64decode(caveat) + + return bakery.discharge( + ctx, + id=id, + caveat=caveat, + key=key, + checker=checker, + locator=locator, + ) -- cgit v1.2.3