+
+}
+
+//------------------------------------------------------------------------------
+Request* Request::done(const Callback& cb)
+{
+ if( _ready_state == DONE )
+ cb(this);
+ else
+ _cb_done.push_back(cb);
+
+ return this;
+}
+
+//------------------------------------------------------------------------------
+Request* Request::fail(const Callback& cb)
+{
+ if( _ready_state == FAILED )
+ cb(this);
+ else
+ _cb_fail.push_back(cb);
+
+ return this;
+}
+
+//------------------------------------------------------------------------------
+Request* Request::always(const Callback& cb)
+{
+ if( isComplete() )
+ cb(this);
+ else
+ _cb_always.push_back(cb);
+
+ return this;
+}
+
+//------------------------------------------------------------------------------
+void Request::setBodyData( const std::string& data,
+ const std::string& type )
+{
+ _request_data = data;
+ _request_media_type = type;
+
+ if( !data.empty() && _method == "GET" )
+ _method = "POST";
+}
+
+//----------------------------------------------------------------------------
+void Request::setBodyData(const SGPropertyNode* data)
+{
+ if( !data )
+ setBodyData("");
+
+ std::stringstream buf;
+ writeProperties(buf, data, true);
+
+ setBodyData(buf.str(), "application/xml");