MWSResponse¶
New in version 1.0dev15: MWSResponse added
Warning
The following pertains to features added in v1.0dev15 related to MWS requests.
These features are disabled by default. To use these features, set flag _use_feature_mwsresponse to True
on an API class instance before making any requests:
api_class = Orders(...)
api_class._use_feature_mwsresponse = True
If the flag is False, all requests will return either DictWrapper or DataWrapper objects (deprecated);
and parsed XML contents will be returned as an instance of ObjectDict (deprecated).
New features using MWSResponse and DotDict will become the default in v1.0.
MWSResponse acts as a wrapper for requests.Response objects returned from requests made to MWS.
When initialized, the response content is automatically parsed for XML content,
making it available as a DotDict instance in MWSResponse.parsed.
Parsed content for XML responses¶
All XML response content is automatically parsed using the xmltodict package. The parsed results are stored as a
DotDict accessible from
MWSResponse.parsed.
For more details on working with the parsed content, please see DotDict.
Original response access¶
As MWSResponse wraps a requests.Response object, all data and methods of that underlying object can be accessed
from the MWSResponse instance using one of the following:
The
MWSResponse.originalattribute:response = api.foo_request(...) # response is an instance of MWSResponse response.original.status_code # 200 response.original.headers # {'Content-Type': ...} response.original.text # unicode # 'Hello world!' response.original.content # bytes # b'Hello world!'
A number of shortcut properties available on
MWSResponseitself:response.content # response.original.content response.cookies # response.original.cookies response.elapsed # response.original.elapsed response.encoding # response.original.encoding response.headers # response.original.headers response.reason # response.original.reason response.request # response.original.request response.status_code # response.original.status_code response.text # response.original.text
Each of these shortcuts is a read-only property, with the exception of
response.encoding, which includes a setter for convenience when dealing with content encoding issues:response.encoding = "iso-8859-1" print(response.original.encoding) # "iso-8859-1"
MWSResponse API¶
New in version 1.0dev15.
-
class
mws.MWSResponse(response, result_key=None, encoding=None, force_cdata=False)[source]¶ Wraps a
requests.Responseobject and extracts some known data.Particularly for XML responses, parsed contents can be found in the
.parsedproperty as aDotDictinstance.Find metadata in
.metadata, mainly for accessing.metadata.RequestId; or simply use the.request_idshortcut attr.- Parameters
response (request.Response) – Response object returned by a request sent to MWS.
result_key (str) – Key to use as the root for
.parsed. Typically a tag in the root of the response’s XML document whose name ends inResult. Defaults toNone, in which case the full document is presented when using.parsed.force_cdata (bool) – Passed to
xmltodict.parse()when parsing the response’s XML document. Defaults toFalse.
-
original: requests.Response¶ Instance of the original
requests.Responseobject. Can be used to get or set data in the original response.
-
property
encoding¶ Shortcut to
.original.encoding. Can also be used as a setter, changing the encoding of the response. This then changes how content is decoded when using.text.
-
parse_response(force_cdata=False)[source]¶ Runs
.textthroughxmltodict.parse(), storing the returned Python dictionary as._dict.If no XML errors occur during that process, constructs
DotDictinstances from the parsed XML data, making them available from.parsedand.metadata.For non-XML responses, does nothing.
- Parameters
force_cdata (bool) – Passed to
xml_to_dict.parse()when parsing XML content. Defaults toFalse. Ignored for non-XML responses.
-
property
parsed¶ Returns a parsed version of the response.
For XML documents, returns a
DotDictof the parsed XML content, starting from._result_key.For all other types of responses, returns
.textinstead.
-
property
metadata¶ Returns a
DotDictinstance from the response’sResponseMetadatakey, if present. Typically the only key of note here is.metadata.RequestId, which can also be accessed with.request_id.
-
property
content¶ Shortcut to
.original.content, which is bytes.
Shortcut to
.original.cookies.
-
property
elapsed¶ Shortcut to
.original.elapsed.
-
property
headers¶ Shortcut to
.original.headers.
-
property
reason¶ Shortcut to
.original.reason.
-
property
request¶ Shortcut to
.original.request.
-
property
status_code¶ Shortcut to
.original.status_code.
-
property
text¶ Shortcut to
.original.text, which is unicode.