diff options
author | Colin Watson <cjwatson@debian.org> | 2017-11-06 10:04:48 +0000 |
---|---|---|
committer | Colin Watson <cjwatson@debian.org> | 2017-11-06 10:04:48 +0000 |
commit | 37d61d0415f6cc96a7a9abe057e1ae0f89fd977e (patch) | |
tree | 4ca3c2560d2ba062adb7de86d047d67db8984940 /macaroonbakery/httpbakery/discharge.py | |
parent | 3d9eaeb5dacee168a93da090e2c0d46eedbe51a2 (diff) |
Import py-macaroon-bakery_0.0.5.orig.tar.gz
Diffstat (limited to 'macaroonbakery/httpbakery/discharge.py')
-rw-r--r-- | macaroonbakery/httpbakery/discharge.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/macaroonbakery/httpbakery/discharge.py b/macaroonbakery/httpbakery/discharge.py new file mode 100644 index 0000000..ef3481a --- /dev/null +++ b/macaroonbakery/httpbakery/discharge.py @@ -0,0 +1,33 @@ +# Copyright 2017 Canonical Ltd. +# Licensed under the LGPLv3, see LICENCE file for details. +import macaroonbakery.utils as utils +import macaroonbakery as bakery + + +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 Used to check third party caveats {macaroonbakery.ThirdPartyCaveatChecker} + @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, + ) |