From 24b5ef3f151c89881bf724b68ed73003e6889bb1 Mon Sep 17 00:00:00 2001 From: Niels-van-den-Hork <36246503+Niels-van-den-Hork@users.noreply.github.com> Date: Tue, 8 Oct 2019 23:41:29 +0200 Subject: [PATCH] Add raw_body to __str__ Currently ``` response = api.pricing.get( OANDA_ACCOUNT_ID, instruments='EUR_USD', since=latest_price_time, includeUnitsAvailable=False) print(response) ``` can return the following: ```Method = GET Path = https://api-fxpractice.oanda.com:443/v3/accounts/123-456-12345678-123/pricing?instruments=EUR_USD&since=2019-10-08T21%3A38%3A14.598266Z&includeUnitsAvailable=False Status = 200 Reason = OK Content-Type = application/json``` As I was not familiar with v20, I clicked the link to quickly check the result. Naturally this gave me "Insufficient authorization to perform request." Only after digging in the source I found the (raw_)body attribute, the one I wanted to use/check in the first place. With the proposed change, the result would be the following: ``` Method = GET Path = https://api-fxpractice.oanda.com:443/v3/accounts/123-456-12345678-123/pricing?instruments=EUR_USD&since=2019-10-08T21%3A38%3A14.598266Z&includeUnitsAvailable=False Status = 200 Reason = OK Content-Type = application/json Raw_Body = {"time":"2019-10-08T21:37:00.794720020Z","prices":[{"type":"PRICE","time":"2019-10-08T21:36:52.424438721Z","bids":[{"price":"1.09539","liquidity":10000000}],"asks":[{"price":"1.09572","liquidity":10000000}],"closeoutBid":"1.09524","closeoutAsk":"1.09587","status":"tradeable","tradeable":true,"quoteHomeConversionFactors":{"positiveUnits":"0.91264192","negativeUnits":"0.91291686"},"instrument":"EUR_USD"}]} ``` This immediately shows the response body, gives the hint to use the raw_body attribute and does not lead to believe that there is an issue with authentication --- src/v20/response.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/v20/response.py b/src/v20/response.py index c10db73..ac80540 100644 --- a/src/v20/response.py +++ b/src/v20/response.py @@ -62,4 +62,8 @@ def __str__(self): s += "Status = {}\n".format(self.status) s += "Reason = {}\n".format(self.reason) s += "Content-Type = {}\n".format(self.content_type) + s += "Raw_Body = {}\n".format(self.raw_body) return s + + def __repr__(self): + return str(self)