#include "../lib/urireader.cpp" #include class URITest : public Util::DataCallback{ public: void dump(const char *ptr, size_t size); void dataCallback(const char *ptr, size_t size); int main(int argc, char **argv); }; void URITest::dataCallback(const char *ptr, size_t size){ dump(ptr, size); } void URITest::dump(const char *ptr, size_t size){ if (fwrite(ptr, sizeof(char), size, stdout) != size){INFO_MSG("error: %s", strerror(errno));} } int URITest::main(int argc, char **argv){ Util::redirectLogsIfNeeded(); Util::Config cfg(argv[0]); JSON::Value option; option["arg_num"] = 1; option["arg"] = "string"; option["help"] = "Name of the input URI or - for stdin"; option["value"].append("-"); cfg.addOption("input", option); option.null(); option["short"] = "r"; option["long"] = "readall"; option["help"] = "Read all data all at once in blocking mode"; option["value"].append(0); cfg.addOption("readall", option); if (!cfg.parseArgs(argc, argv)){return 1;} cfg.activate(); HTTP::URIReader R(cfg.getString("input")); if (cfg.getBool("readall")){ char *dPtr = 0; size_t dLen = 0; R.readAll(dPtr, dLen); dump(dPtr, dLen); }else{ while (!R.isEOF() && cfg.is_active){R.readSome(10486, *this);} } return 0; } int main(int argc, char **argv){ URITest t; t.main(argc, argv); }