summaryrefslogtreecommitdiff
path: root/macaroonbakery/httpbakery/_discharge.py
diff options
context:
space:
mode:
authorColin Watson <cjwatson@debian.org>2017-12-12 15:20:49 +0000
committerColin Watson <cjwatson@debian.org>2017-12-12 15:20:49 +0000
commit9e4403035a9953c99117083e6373ae3c441a76b5 (patch)
treed91b137df6767bfb8cb72de6b9fd21efb0c3dee4 /macaroonbakery/httpbakery/_discharge.py
parent949b7072cabce0daed6c94993ad44c8ea8648dbd (diff)
Import py-macaroon-bakery_1.1.0.orig.tar.gz
Diffstat (limited to 'macaroonbakery/httpbakery/_discharge.py')
-rw-r--r--macaroonbakery/httpbakery/_discharge.py34
1 files changed, 34 insertions, 0 deletions
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,
+ )