diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-09-18 15:39:30 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-09-18 15:39:30 (GMT) |
commit | 8dde1311719b29c63efb379566916cb1aa9a7cd7 (patch) | |
tree | 6849ab145936ea5a2bebee5b64e69c4d226c3810 /src/uscxml/plugins/element/respond | |
parent | 7938e286967597c7168b855b7e3fdfbd9b949e0e (diff) | |
download | uscxml-8dde1311719b29c63efb379566916cb1aa9a7cd7.zip uscxml-8dde1311719b29c63efb379566916cb1aa9a7cd7.tar.gz uscxml-8dde1311719b29c63efb379566916cb1aa9a7cd7.tar.bz2 |
Work on FFMpegInvoker
Diffstat (limited to 'src/uscxml/plugins/element/respond')
-rw-r--r-- | src/uscxml/plugins/element/respond/RespondElement.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/uscxml/plugins/element/respond/RespondElement.cpp b/src/uscxml/plugins/element/respond/RespondElement.cpp index 3c47b83..ae81fed 100644 --- a/src/uscxml/plugins/element/respond/RespondElement.cpp +++ b/src/uscxml/plugins/element/respond/RespondElement.cpp @@ -63,8 +63,14 @@ void RespondElement::enterElement(const Arabica::DOM::Node<std::string>& node) { if (HAS_ATTR(contents[0], "expr")) { // -- content is evaluated string from datamodel ------ if (_interpreter->getDataModel()) { try { - std::string contentValue = _interpreter->getDataModel().evalAsString(ATTR(contents[0], "expr")); - httpReply.content = contentValue; + Data contentData = _interpreter->getDataModel().getStringAsData(ATTR(contents[0], "expr")); + if (contentData.atom.length() > 0) { + httpReply.content = contentData.atom; + } else if (contentData.binary) { + httpReply.content = std::string(contentData.binary->_data, contentData.binary->_size); + } else { + httpReply.content = Data::toJSON(contentData); + } } catch (Event e) { LOG(ERROR) << "Syntax error with expr in content child of Respond element:" << std::endl << e << std::endl; return; @@ -132,20 +138,20 @@ void RespondElement::enterElement(const Arabica::DOM::Node<std::string>& node) { std::string value; if (HAS_ATTR(headers[i], "value")) { value = ATTR(headers[i], "value"); - } else if(HAS_ATTR(headers[i], "expr")) { + } else if(HAS_ATTR(headers[i], "valueexpr")) { if (_interpreter->getDataModel()) { try { - value = _interpreter->getDataModel().evalAsString(ATTR(headers[i], "expr")); + value = _interpreter->getDataModel().evalAsString(ATTR(headers[i], "valueexpr")); } catch (Event e) { - LOG(ERROR) << "Syntax error with expr in header child of Respond element:" << std::endl << e << std::endl; + LOG(ERROR) << "Syntax error with valueexpr in header child of Respond element:" << std::endl << e << std::endl; return; } } else { - LOG(ERROR) << "header element has expr attribute but no datamodel is specified."; + LOG(ERROR) << "header element has valueexpr attribute but no datamodel is specified."; return; } } else { - LOG(ERROR) << "header element has no value or expr attribute."; + LOG(ERROR) << "header element has no value or valueexpr attribute."; return; } |