X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/bcbe297964b0ad7393385f1dd240448c340ed5ed..1855f998e5c0e51e2c1958724ac84cc13a87d84c:/Server/src/command.cpp?ds=inline diff --git a/Server/src/command.cpp b/Server/src/command.cpp index 08a73c9..5aa4700 100644 --- a/Server/src/command.cpp +++ b/Server/src/command.cpp @@ -28,6 +28,7 @@ #include "plaqui/server/command.h" #include "plaqui/server/string.h" #include +//#include #ifdef DEBUG # include #endif // DEBUG @@ -40,13 +41,15 @@ namespace Server { Command::~Command(void) { #ifdef DEBUG - cerr << __FILE__ << ": destructor." << endl; + cerr << __FILE__ << "(" << __LINE__ << ")" + << ": destructor." << endl; #endif // DEBUG } Command::Command(const string& _target, const string& _command) { #ifdef DEBUG - cerr << __FILE__ << ": target = " << target << " | " + cerr << __FILE__ << "(" << __LINE__ << ")" + << ": target = " << target << " | " << "command = " << command << endl; #endif // DEBUG set_target(_target); @@ -54,9 +57,16 @@ Command::Command(const string& _target, const string& _command) { } void Command::build(void) { - uri = string("/") + target + '/' + command + String::join(args, "/"); + uri = string("/") + target; + if (command.length()) { + uri += '/' + command; + if (args.size()) { + uri += '/' + String::join(args, "/"); + } + } #ifdef DEBUG - cerr << __FILE__ << ": build() = " << uri << endl; + cerr << __FILE__ << "(" << __LINE__ << ")" + << ": build() = " << uri << endl; #endif // DEBUG } @@ -92,9 +102,21 @@ void Command::add_arg(const std::string& arg) { build(); } -istream& operator>>(istream& is, Command& command) { +void Command::add_arg(const unsigned& arg) { +#ifdef DEBUG + cerr << __FILE__ << "(" << __LINE__ << ")" + << ": add_arg(arg = " << arg << ") = " + << String().from(arg) << endl; +#endif // DEBUG + args.push_back(String().from(arg)); + build(); +} + +istream& operator>>(istream& is, Command& command) + throw(HTTPError, sockerr, ios::failure) { #ifdef DEBUG - cerr << __FILE__ << ": operator>>()" << endl; + cerr << __FILE__ << "(" << __LINE__ << ")" + << ": operator>>()" << endl; #endif // DEBUG // Obtengo datos del Request HTTP. is >> static_cast(command); @@ -118,9 +140,10 @@ istream& operator>>(istream& is, Command& command) { return is; } -ostream& operator<<(ostream& os, const Command& command) { +ostream& operator<<(ostream& os, const Command& command) throw (sockerr) { #ifdef DEBUG - cerr << __FILE__ << ": operator<<()" << endl; + cerr << __FILE__ << "(" << __LINE__ << ")" + << ": operator<<()" << endl; #endif // DEBUG // Manda el request HTTP con la URI que representa el comando. os << static_cast(command);