#ifndef __RESULT_HPP #define __RESULT_HPP #include "string" //#include #include #ifndef SWIG XALAN_USING_XALAN(XalanNode) #endif /** * This class models the result element of EPP responses. From RFC 3730: * "One or more }elements [...] document the success or failure * of command execution. If the command was processed successfully, only one * element MUST be returned. If the command was not processed * successfully, multiple elements MAY be returned to document * failure conditions. Each element contains the following * attribute and child elements. * * See getX method descriptions for a description of the elements of a Result. * Note that any DOM Node fields will not be serialized. * @note A Result instance uses nodes (cf. XalanNode*) from a parsed response object, but does * not assume ownership. Therefore, these other objects life time must outlast * the Result object. */ class Result { public: /// @TODO SWIG/Perl workaround - figure out why SWIG wants an empty constructor. Result () {} /** * @note A Result instance uses nodes (cf. XalanNode*) from a parsed response object, but does * not assume ownership. Therefore, these other objects life time must outlast * the Result object. */ Result (int code, const std::string &msg, const XalanNode *value, const std::string &valueText, const std::string &valueReason, const std::string &msgLang = ""); ~Result(); /** * The code attribute of a result. From RFC 3730: * A "code" attribute whose value is a four-digit, decimal number that * describes the success or failure of the command. */ int getResultCode() const { return resultCode; }; /** * The msg element of a result. From RFC 3730: *
* A element containing a human-readable description of the * response code. *
*/ const std::string& getResultMessage() const { return resultMessage; }; /** * The lang attribute of the msg element of a result. From RFC 3730: *
* The language of the response is identified via an OPTIONAL "lang" * attribute. If not specified, the default attribute value MUST be "en" * (English). *
*/ const std::string& getResultMessageLanguage() const { return resultMessageLang; }; /** * The value child elements of the extValue element of a result. From RFC * 3730: * "Zero or more OPTIONAL elements that can be used to * provide additional error diagnostic information, including:
* - A element that identifies a client-provided element * (including XML tag and value) that caused a server error condition." */ const std::string& getResultExtValueValue() const { return resultExtvalueValue; }; /** * The reason child elements of the extValue element of a result. From RFC * 3730: "Zero or more OPTIONAL elements that can be used to * provide additional error diagnostic information, including:
* - A element containing a human-readable message that * describes the reason for the error." * @todo provide interface to get language of each reason. */ const std::string& getResultExtValueReason() const { return resultExtvalueReason; }; /** * The value elements of a result. From RFC 3730: *
* Zero or more OPTIONAL elements that identify a * client-provided element (including XML tag and value) that caused a * server error condition. *
*/ const xalanc::XalanNode* getResultValue() { return resultValue; }; /** * Whether the associated command succeeded or not. This can be used to * reduce the amount of result checking, since if this returns true, then * no further results should be available for the associated response. */ bool succeeded() const { return ((1000 <= resultCode) && (resultCode < 2000)); }; std::string toString() const; private: int resultCode; std::string resultMessage; std::string resultMessageLang; // non-owning pointer. const XalanNode* resultValue; std::string resultExtvalueValue; std::string resultExtvalueReason; }; #endif // __RESULT_HPP