rss-cli/src/rss_out.cpp

167 lines
4.8 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// Tyler Perkins
// 7-23-21
// rss output functions implementation
//
#include "rss_out.hpp"
using namespace rss_utils;
std::string rss_utils::rss_to_list(const rss& rss_obj, const option_flags* flags){
std::string ret;
if(flags->title)
ret += rss_obj.getTitle() + "\n";
if(flags->link)
ret += rss_obj.getLink() + "\n";
if(flags->description)
ret += rss_obj.getDescription() + "\n";
if(flags->language)
ret += rss_obj.getLanguage() + "\n";
if(flags->webmaster)
ret += rss_obj.getWebMaster() + "\n";
if(flags->copyright)
ret += rss_obj.getCopyright() + "\n";
if(flags->pubdate)
ret += rss_obj.getPubDate() + "\n";
if(flags->managingeditor)
ret += rss_obj.getManagingEditor() + "\n";
if(flags->generator)
ret += rss_obj.getGenerator() + "\n";
if(flags->docs)
ret += rss_obj.getDocs() + "\n";
if(flags->ttl)
ret += rss_obj.getTTL() + "\n";
if(flags->builddate)
ret += rss_obj.getLastBuildDate() + "\n";
if(flags->imageurl)
ret += rss_obj.getImageURL() + "\n";
if(flags->imagetitle)
ret += rss_obj.getImageTitle() + "\n";
if(flags->imagelink)
ret += rss_obj.getImageLink() + "\n";
if(flags->imagewidth)
ret += rss_obj.getImageWidth() + "\n";
if(flags->imageheight)
ret += rss_obj.getImageHeight() + "\n";
if(flags->clouddomain)
ret += rss_obj.getCloudDomain() +"\n";
if(flags->cloudport)
ret += rss_obj.getCloudPort() + "\n";
if(flags->cloudpath)
ret += rss_obj.getCloudPath() + "\n";
if(flags->cloudregister)
ret += rss_obj.getCloudRegisterProcedure() + "\n";
if(flags->cloudprotocol)
ret += rss_obj.getCloudProtocol() + "\n";
if(ret.length() > 0)
ret.pop_back();
else if (ret.length() == 0)
ret = "<No arguments given>";
return ret;
}
std::string rss_utils::rss_to_items(const rss& rss_obj, const option_flags* flags){
item_flags* items = flags->items;
int maxItem = rss_obj.getItemCount();
std::string ret;
if(maxItem == -1){
ret = "<No items in feed!>";
return ret;
}
for(unsigned int i=0; i < flags->item_count; ++i, ++items){
//if has a valid index
if(items->index >= 0 && items->index < maxItem) {
rss_utils::item cur_item = rss_obj[items->index];
if(items->title)
ret += cur_item.getTitle() + "\n";
if(items->link)
ret += cur_item.getLink() + "\n";
if(items->description)
ret += cur_item.getDescription() + "\n";
if(items->author)
ret += cur_item.getAuthor() + "\n";
if(items->category)
ret += cur_item.getCategory() + "\n";
if(items->comments)
ret += cur_item.getComments() + "\n";
if(items->guid)
ret += cur_item.getGuid() + "\n";
if(items->pubdate)
ret += cur_item.getPubDate() + "\n";
if(items->source)
ret += cur_item.getSource() + "\n";
if(items->enclosureurl)
ret += cur_item.getEnclosureURL() + "\n";
if(items->enclosuretype)
ret += cur_item.getEnclosureType() + "\n";
if(items->enclosurelength)
ret += std::to_string(cur_item.getEnclosureLength()) + "\n";
} else
std::cerr << "Index on item " << i << " is not valid!" << std::endl;
}
if(ret.length() > 0)
ret.pop_back();
else
ret = "<No arguments given for items>";
return ret;
}
bool rss_utils::rss_opts_empty(const option_flags* flags){
if(flags->title)
return false;
if(flags->link)
return false;
if(flags->description)
return false;
if(flags->language)
return false;
if(flags->webmaster)
return false;
if(flags->copyright)
return false;
if(flags->pubdate)
return false;
if(flags->managingeditor)
return false;
if(flags->generator)
return false;
if(flags->docs)
return false;
if(flags->ttl)
return false;
if(flags->builddate)
return false;
if(flags->imageurl)
return false;
if(flags->imagetitle)
return false;
if(flags->imagelink)
return false;
if(flags->imagewidth)
return false;
if(flags->imageheight)
return false;
if(flags->clouddomain)
return false;
if(flags->cloudport)
return false;
if(flags->cloudpath)
return false;
if(flags->cloudregister)
return false;
if(flags->cloudprotocol)
return false;
return true;
}