From 84f390d409a362a88197cd9ab7d97318cd03deb5 Mon Sep 17 00:00:00 2001 From: Oliver Rahner Date: Wed, 20 Oct 2021 15:03:29 +0200 Subject: [PATCH] don't rely on internal JSON encoding format for requests --- agrirouter/onboarding/onboarding.py | 4 ++-- agrirouter/onboarding/request.py | 5 ++++- agrirouter/onboarding/request_body.py | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/agrirouter/onboarding/onboarding.py b/agrirouter/onboarding/onboarding.py index ad07b896..971b423f 100644 --- a/agrirouter/onboarding/onboarding.py +++ b/agrirouter/onboarding/onboarding.py @@ -34,7 +34,7 @@ def _perform_request(self, params: BaseOnboardingParameter, url: str) -> request if request.is_signed: return requests.post( url=request.get_url(), - json=request.get_data(), + data=request.get_body_content(), headers=request.get_header() ) raise RequestNotSigned @@ -74,7 +74,7 @@ def _perform_request(self, params: CUOnboardingParameter, url: str) -> requests. if request.is_signed: return requests.post( url=request.get_url(), - data=request.get_data(), + data=request.get_body_content(), headers=request.get_header() ) raise RequestNotSigned diff --git a/agrirouter/onboarding/request.py b/agrirouter/onboarding/request.py index e02e0ec7..c39d9d7a 100644 --- a/agrirouter/onboarding/request.py +++ b/agrirouter/onboarding/request.py @@ -18,8 +18,11 @@ def get_data(self): def get_header(self): return self.header.get_header() + def get_body_content(self): + return self.body.json().replace("\n", "") + def sign(self, private_key, public_key): - body = self.body.json().replace("\n", "") + body = self.get_body_content() signature = create_signature(body, private_key) verify_signature(body, bytes.fromhex(signature), public_key) self.header.sign(signature) diff --git a/agrirouter/onboarding/request_body.py b/agrirouter/onboarding/request_body.py index 951ab01d..045c46a8 100644 --- a/agrirouter/onboarding/request_body.py +++ b/agrirouter/onboarding/request_body.py @@ -75,7 +75,7 @@ def _set_params(self, } def json(self) -> str: - return json.dumps(self.get_parameters()) + return json.dumps(self.get_parameters(), separators=(',', ':')) @staticmethod def _validate_certificate_type(certificate_type: str) -> None: