Running into issues getting body text from HubAction response…
Here is the response (description):
mac:123456789091, ip:0a0001f0, port:c001, headers:SFRUUC8xLjEgMjAwIE9LCkNPTlRFTlQtTEVOR1RIOiAzNzYKQ09OVEVOVC1UWVBFOiB0ZXh0L3htbDsgY2hhcnNldD0idXRmLTgiCkRBVEU6IFN1biwgMTEgTWFyIDIwMTggMTY6NTg6MjcgR01UCkVYVDogClNFUlZFUjogVW5zcGVjaWZpZWQsIFVQblAvMS4wLCBVbnNwZWNpZmllZApYLVVzZXItQWdlbnQ6IHJlZHNvbmljCg==, body:PHM6RW52ZWxvcGUgeG1sbnM6cz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8iIHM6ZW5jb2RpbmdTdHlsZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iPjxzOkJvZHk+Cjx1OlNldEJpbmFyeVN0YXRlUmVzcG9uc2UgeG1sbnM6dT0idXJuOkJlbGtpbjpzZXJ2aWNlOmJhc2ljZXZlbnQ6MSI+DQo8QmluYXJ5U3RhdGU+MDwvQmluYXJ5U3RhdGU+DQo8Q291bnRkb3duRW5kVGltZT4wPC9Db3VudGRvd25FbmRUaW1lPg0KPGRldmljZUN1cnJlbnRUaW1lPjE1MjA3ODc1MDc8L2RldmljZUN1cnJlbnRUaW1lPg0KPC91OlNldEJpbmFyeVN0YXRlUmVzcG9uc2U+DQo8L3M6Qm9keT4gPC9zOkVudmVsb3BlPg==
def msg = parseLanMessage(description)
and here is the result of parsing:
[mac: 123456789091, ip:0a0001f0, port:c001, headers:[HTTP/1.1 200 OK:null, CONTENT-LENGTH:376, CONTENT-TYPE:text/xml; charset="utf-8", DATE:Sun, 11 Mar 2018 16, EXT:, SERVER:Unspecified, UPnP/1.0, Unspecified, X-User-Agent:redsonic], body: 0 0 1520787507 , header:HTTP/1.1 200 OK CONTENT-LENGTH: 376 CONTENT-TYPE: text/xml; charset="utf-8" DATE: Sun, 11 Mar 2018 16:58:27 GMT EXT: SERVER: Unspecified, UPnP/1.0, Unspecified X-User-Agent: redsonic , status:200]
Extracting the header detail works but the body is incorrect.
body: 0 0 1520787507
decodes to:
MyN;
Tried using decode on the base64 response but doesn’t translate correctly. How do I extract the body text correctly either prior or post the parseLanMessage output?
Specifically, the original (unparsed response - description) body: base64 value is what I am after as that translates correctly to the appropriate XML response…
body:PHM6RW52ZWxvcGUgeG1sbnM6cz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8iIHM6ZW5jb2RpbmdTdHlsZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iPjxzOkJvZHk+Cjx1OlNldEJpbmFyeVN0YXRlUmVzcG9uc2UgeG1sbnM6dT0idXJuOkJlbGtpbjpzZXJ2aWNlOmJhc2ljZXZlbnQ6MSI+DQo8QmluYXJ5U3RhdGU+MDwvQmluYXJ5U3RhdGU+DQo8Q291bnRkb3duRW5kVGltZT4wPC9Db3VudGRvd25FbmRUaW1lPg0KPGRldmljZUN1cnJlbnRUaW1lPjE1MjA3ODc1MDc8L2RldmljZUN1cnJlbnRUaW1lPg0KPC91OlNldEJpbmFyeVN0YXRlUmVzcG9uc2U+DQo8L3M6Qm9keT4gPC9zOkVudmVsb3BlPg==
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body>
<u:SetBinaryStateResponse xmlns:u="urn:Belkin:service:basicevent:1">
<BinaryState>0</BinaryState>
<CountdownEndTime>0</CountdownEndTime>
<deviceCurrentTime>1520787507</deviceCurrentTime>
</u:SetBinaryStateResponse>
</s:Body> </s:Envelope>
But haven’t been able to get to that via groovy code in habitat where the content-type is text/xml. Any insights on what I am missing or a simple way of doing something like:
description.body.decodebase64()
Does not find a property ‘body’ of description…