// rdwebresult.cpp // // Container class for Rivendel Web Service result messages. // // (C) Copyright 2011,2016 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as // published by the Free Software Foundation. // // This program 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 General Public License for more details. // // You should have received a copy of the GNU General Public // License along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // #include #include #include #include RDWebResult::RDWebResult(const QString &str,int resp_code, RDAudioConvert::ErrorCode conv_code) { web_text=str; web_response_code=resp_code; web_converter_code=conv_code; } RDWebResult::RDWebResult() { web_text="Unknown"; web_response_code=0; web_converter_code=RDAudioConvert::ErrorOk; } QString RDWebResult::text() const { return web_text; } void RDWebResult::setText(const QString &str) { web_text=str; } int RDWebResult::responseCode() const { return web_response_code; } void RDWebResult::setResponseCode(int code) { web_response_code=code; } RDAudioConvert::ErrorCode RDWebResult::converterErrorCode() const { return web_converter_code; } void RDWebResult::setConverterErrorCode(RDAudioConvert::ErrorCode code) { web_converter_code=code; } QString RDWebResult::xml() const { QString ret=""; ret+="\r\n"; ret+=QString().sprintf(" %d\r\n", web_response_code); ret+=" "+web_text+"\r\n"; if(web_converter_code!=RDAudioConvert::ErrorOk) { ret+=QString().sprintf(" %d\r\n", web_converter_code); } ret+="\r\n"; return ret; } bool RDWebResult::readXml(const QString &xml) { // // FIXME: This is totally ad-hoc, but should work until we settle on // a proper XML parser. // QStringList list=xml.split("\r\n"); for(int i=0;i=2) { list2=list2[1].split(">"); if(list2.size()>=2) { web_text=list2[1]; } } } if(list[i].contains("ResponseCode")) { QStringList list2=list[i].split("<"); if(list2.size()>=2) { list2=list2[1].split(">"); if(list2.size()>=2) { web_response_code=list2[1].toInt(); } } } if(list[i].contains("AudioConvertError")) { QStringList list2=list[i].split("<"); if(list2.size()>=2) { list2=list2[1].split(">"); if(list2.size()>=2) { web_converter_code=(RDAudioConvert::ErrorCode)list2[1].toInt(); } } } } return true; } bool RDWebResult::readXmlFromFile(const QString &filename) { FILE *f=NULL; char line[1024]; QString xml=""; if((f=fopen(filename,"r"))==NULL) { return false; } while(fgets(line,1024,f)!=NULL) { xml+=line; } fclose(f); return readXml(xml); }