From: Asbjorn M. <ste...@us...> - 2002-04-04 17:10:01
|
Update of /cvsroot/epp-rtk/name-rtk-addon/c++/src In directory usw-pr-cvs1:/tmp/cvs-serv22910 Added Files: epp_PersRegTransfer.h epp_PersRegTransfer.cc main_persRegEmailFwdTransfer.cc Log Message: -First commit of persReg extension <transfer> "interface" class and test program -epp_PersRegTransferRsp was in wrong namespace due to search'n'replace mistake --- NEW FILE: epp_PersRegTransfer.h --- /************************************************************************ * EPP RTK C++ * Copyright (C) 2002 The Global Name Registry, Limited * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Contact information: ep...@gn... * * EPP RTK * The Global Name Registry, Limited * 125 High Holborn * London WC1V 6QA * United Kingdom ************************************************************************/ #ifndef __EPP_PERSREGTRANSFER_H #define __EPP_PERSREGTRANSFER_H /** @file epp_PersRegTransfer.h * @brief Declaration of epp_PersRegTransfer and epp_PersRegTransfer_ref * @author Asbjorn Steira Mikkelsen */ #include <epprtk/epp_Extension.h> #include "data/epp_PersRegTransferRsp.h" namespace eppobject { namespace persReg { // persReg extension <transfer> class utilizing the extension framework // @see epp_Extension for additional information class epp_PersRegTransfer : public eppobject::epp::epp_Extension { public: epp_PersRegTransferRsp_ref m_response; /**< Extension response received from server */ /// Null constructor epp_PersRegTransfer() {}; /// Destructor virtual ~epp_PersRegTransfer() {}; /** Function returning the object's response element * @return Response element of object */ epp_PersRegTransferRsp_ref getResponseData(); /** Function that takes the extension response xml eppobject::epp#epp_string, parses it, * and puts elements into the class' response data object. * @param xml The extension response xml string * @throw eppobject::epp::epp_XMLException If response string is missing critical data */ virtual void fromXML(const eppobject::epp::epp_string & xml); }; /// Typedef for the ref to the epp_PersRegTransfer class typedef refcnt_ptr<epp_PersRegTransfer> epp_PersRegTransfer_ref; }} #endif --- NEW FILE: epp_PersRegTransfer.cc --- /************************************************************************ * EPP RTK C++ * Copyright (C) 2002 The Global Name Registry, Limited * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Contact information: ep...@gn... * * EPP RTK * The Global Name Registry, Limited * 125 High Holborn * London WC1V 6QA * United Kingdom ************************************************************************/ #include <epprtk/config.h> #include <epprtk/ltoa.h> #include <epprtk/data/epp_XMLException.h> #include <epprtk/data/epp_eppXMLbase.h> #include <domtools/dom_output.h> #include <domtools/dom_wrapper.h> #include "epp_PersRegTransfer.h" using namespace domtools; using namespace eppobject::persReg; using namespace eppobject::epp; epp_PersRegTransferRsp_ref epp_PersRegTransfer::getResponseData() { return m_response; } void epp_PersRegTransfer::fromXML(const eppobject::epp::epp_string & xml) { string xml2parse = "<extension xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + xml + "</extension>"; dom_ptr doc = createDOMDocument(xml2parse); if(doc->isNull()) { throw epp_XMLException(__FILE__, __LINE__, "Parsed extension string returned an empty document"); } dom_ptr docChild = dom_ptr(doc->getTag("extension")); if(docChild->isNull()) { throw epp_XMLException(__FILE__, __LINE__, "Document node has no children"); } dom_ptr extChild = dom_ptr(docChild->getFirstChildElement()); if(extChild->isNull()) { throw epp_XMLException(__FILE__, __LINE__, "Extension element is empty"); } m_response.ref(new epp_PersRegTransferRsp()); dom_ptr trChild = dom_ptr(extChild->getFirstChildElement()); if(!trChild->isNull() && trChild->getNodeName() == "persReg:bundledRate") { string bRate = trChild->getNodeData(); if(bRate == "1" || bRate == "true") m_response->m_bundled_rate.ref(new epp_boolean(true)); else if(bRate == "0" || bRate == "false") m_response->m_bundled_rate.ref(new epp_boolean(false)); else throw epp_XMLException(__FILE__, __LINE__, "Empty or unknown bundledRate-attribute"); } }; --- NEW FILE: main_persRegEmailFwdTransfer.cc --- /************************************************************************ * EPP RTK C++ * Copyright (C) 2002 The Global Name Registry, Limited * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Contact information: ep...@gn... * * EPP RTK * The Global Name Registry, Limited * 125 High Holborn * London WC1V 6QA * United Kingdom ************************************************************************/ #include <string> #include <iostream.h> #include <epprtk/data/epp_XMLException.h> #include <epprtk/data/epp_Exception.h> #include <epprtk/data/epp_eppXMLbase.h> #include <epprtk/epp_Action.h> #include <epprtk/epp_Session.h> #include <epprtk/testTools.h> #include "data/epp_EmailFwdTransferReq.h" #include "data/epp_EmailFwdTransferRsp.h" #include "epp_EmailFwdTransfer.h" #include "GNRtestTools.h" #include "epp_PersRegTransfer.h" /////////////////////////////////////// // Based on main_emailFwdtransfer.cc // /////////////////////////////////////// using namespace eppobject::emailFwd; using namespace eppobject::epp; using namespace eppobject::persReg; void printRsp(const epp_EmailFwdTransferRsp_ref req) { cout << "Printing Response:\n_______________________________\n"; if(req != NULL) { printResponsePart1(req->m_rsp); printGNRResDataHeaders("emailFwd", "trnData"); if(req->m_trn_data != NULL) { if(req->m_trn_data->m_name != NULL) cerr << "<emailFwd:name>" << *req->m_trn_data->m_name << "</emailFwd:name>" << endl; if(req->m_trn_data->m_transfer_status != NULL) { string trStatus = returnTransferStatusType(*req->m_trn_data->m_transfer_status); cerr << "<emailFwd:trStatus>" << trStatus << "</emailFwd:trStatus>" << endl; } if(req->m_trn_data->m_request_client_id != NULL) cerr << "<emailFwd:reID>" << *req->m_trn_data->m_request_client_id << "</emailFwd:reID>" << endl; if(req->m_trn_data->m_request_date != NULL) cerr << "<emailFwd:reDate>" << *req->m_trn_data->m_request_date << "</emailFwd:reDate>" << endl; if(req->m_trn_data->m_action_client_id != NULL) cerr << "<emailFwd:acID>" << *req->m_trn_data->m_action_client_id << "</emailFwd:acID>" << endl; if(req->m_trn_data->m_action_date != NULL) cerr << "<emailFwd:acDate>" << *req->m_trn_data->m_action_date << "</emailFwd:acDate>" << endl; if(req->m_trn_data->m_expiration_date != NULL) cerr << "<emailFwd:exDate>" << *req->m_trn_data->m_expiration_date << "</emailFwd:exDate>" << endl; } printGNRResDataFooter("emailFwd", "trnData"); printResponsePart2(req->m_rsp); } cout << "_______________________________\n"; } // printRsp int main(int argc, char * argv[]) { epp_Session test; string username, password; if(!handleArgs(test, argc, argv, username, password)) return 1; testLogIn(test, username, password); try { epp_EmailFwdTransferReq_ref l_req(new epp_EmailFwdTransferReq()); l_req->m_cmd.ref(new epp_Command(NULL, NULL, epp_trid("ABC-12345"))); // REQ-test: l_req->m_name.ref(new epp_string("jo...@do...")); l_req->m_trans.ref(new epp_TransferRequest()); l_req->m_trans->m_op.ref(new epp_TransferOpType(REQUEST)); l_req->m_trans->m_auth_info.ref(new epp_AuthInfo()); l_req->m_trans->m_auth_info->m_type.ref(new epp_AuthInfoType(PW)); l_req->m_trans->m_auth_info->m_roid.ref(new epp_roid("JD1234-VRSN")); l_req->m_trans->m_auth_info->m_value.ref(new epp_string("2fooBAR")); l_req->m_period.ref(new epp_EmailFwdPeriod(YEAR, 1)); epp_EmailFwdTransfer_ref l_obj(new epp_EmailFwdTransfer()); l_obj->setRequestData(*l_req); test.processAction(l_obj); epp_EmailFwdTransferRsp_ref l_rsp = l_obj->getResponseData(); #ifndef TEST_IO_REQUEST2CERR printRsp(l_rsp); #endif // Let us do something more with the extension-object: if(l_rsp->m_rsp->m_ext_string != NULL) { epp_PersRegTransfer_ref extension(new epp_PersRegTransfer()); extension->fromXML(eppobject::epp::epp_string(*l_rsp->m_rsp->m_ext_string)); epp_PersRegTransferRsp_ref extObj = extension->getResponseData(); if(extObj != NULL) { if(extObj->m_bundled_rate != NULL) { string bRate = *extObj->m_bundled_rate ? "1" : "0"; cerr << "<persReg:bundledRate>" << bRate << "</persReg:bundledRate>" << endl; } } } cout << "\n----------------------------------\n"; // QUERY-test: *l_req->m_trans->m_op = QUERY; l_req->m_trans->m_auth_info.ref(NULL); l_req->m_period.ref(NULL); l_obj->setRequestData(*l_req); test.processAction(l_obj); l_rsp = l_obj->getResponseData(); #ifndef TEST_IO_REQUEST2CERR printRsp(l_rsp); #endif return 0; } catch(epp_XMLException ex) { cout << "Exception: " << ex.getString() << endl; } catch(epp_Exception ex) { cout << "Exception: " << endl; #ifndef TEST_IO_REQUEST2CERR cerr << "<response>" << endl; printResultsSeq(ex.m_details); printTransID(ex.m_trans_id); cerr << "</response>" << endl; #endif } catch(...) { cout << "Something else went wrong...\n"; } } |