Skip to content
Snippets Groups Projects
Commit 011a29a4 authored by Jean-Paul Calderone's avatar Jean-Paul Calderone
Browse files

make an application/json request here

parent f5f73744
No related branches found
No related tags found
1 merge request!31Redeem from issuer
...@@ -218,6 +218,7 @@ class RistrettoRedeemer(object): ...@@ -218,6 +218,7 @@ class RistrettoRedeemer(object):
in blinded_tokens in blinded_tokens
), ),
}), }),
headers={b"content-type": b"application/json"},
) )
try: try:
result = yield json_content(response) result = yield json_content(response)
......
...@@ -65,8 +65,12 @@ from twisted.web.iweb import ( ...@@ -65,8 +65,12 @@ from twisted.web.iweb import (
IAgent, IAgent,
) )
from twisted.web.resource import ( from twisted.web.resource import (
ErrorPage,
Resource, Resource,
) )
from twisted.web.http import (
UNSUPPORTED_MEDIA_TYPE,
)
from treq.testing import ( from treq.testing import (
StubTreq, StubTreq,
) )
...@@ -338,27 +342,6 @@ def treq_for_loopback_ristretto(local_issuer): ...@@ -338,27 +342,6 @@ def treq_for_loopback_ristretto(local_issuer):
return StubTreq(root) return StubTreq(root)
class SuccessfulRedemption(Resource):
def __init__(self, public_key, signatures, proof):
Resource.__init__(self)
self.public_key = public_key
self.signatures = signatures
self.proof = proof
self.redemptions = []
def render_POST(self, request):
request_body = loads(request.content.read())
voucher = request_body[u"redeemVoucher"]
tokens = request_body[u"redeemTokens"]
self.redemptions.append((voucher, tokens))
return dumps({
u"success": True,
u"public-key": self.public_key,
u"signatures": self.signatures,
u"proof": self.proof,
})
@implementer(IAgent) @implementer(IAgent)
class _StubAgent(object): class _StubAgent(object):
def request(self, method, uri, headers=None, bodyProducer=None): def request(self, method, uri, headers=None, bodyProducer=None):
...@@ -376,6 +359,9 @@ class RistrettoRedemption(Resource): ...@@ -376,6 +359,9 @@ class RistrettoRedemption(Resource):
self.public_key = PublicKey.from_signing_key(signing_key) self.public_key = PublicKey.from_signing_key(signing_key)
def render_POST(self, request): def render_POST(self, request):
if request.requestHeaders.getRawHeaders(b"content-type") != ["application/json"]:
return bad_content_type(request)
request_body = loads(request.content.read()) request_body = loads(request.content.read())
marshaled_blinded_tokens = request_body[u"redeemTokens"] marshaled_blinded_tokens = request_body[u"redeemTokens"]
servers_blinded_tokens = list( servers_blinded_tokens = list(
...@@ -409,3 +395,11 @@ class RistrettoRedemption(Resource): ...@@ -409,3 +395,11 @@ class RistrettoRedemption(Resource):
u"signatures": marshaled_signed_tokens, u"signatures": marshaled_signed_tokens,
u"proof": marshaled_proof, u"proof": marshaled_proof,
}) })
def bad_content_type(request):
return ErrorPage(
UNSUPPORTED_MEDIA_TYPE,
b"Unsupported media type",
b"Unsupported media type",
).render(request)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment