summaryrefslogtreecommitdiff
path: root/macaroonbakery/httpbakery/discharge.py
diff options
context:
space:
mode:
authorColin Watson <cjwatson@debian.org>2017-11-06 10:04:48 +0000
committerColin Watson <cjwatson@debian.org>2017-11-06 10:04:48 +0000
commit37d61d0415f6cc96a7a9abe057e1ae0f89fd977e (patch)
tree4ca3c2560d2ba062adb7de86d047d67db8984940 /macaroonbakery/httpbakery/discharge.py
parent3d9eaeb5dacee168a93da090e2c0d46eedbe51a2 (diff)
Import py-macaroon-bakery_0.0.5.orig.tar.gz
Diffstat (limited to 'macaroonbakery/httpbakery/discharge.py')
-rw-r--r--macaroonbakery/httpbakery/discharge.py33
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,
+ )