INCLUDE_DIRECTORIES(${Poco_INCLUDE_DIRS})
ADD_SUBDIRECTORY(src)
+ADD_SUBDIRECTORY(tests)
gde::CommandResultTO
gde::CommandResultTO::fromJson(std::string json)
{
+ std::cout << "CommandResultTO: " << json << std::endl;
Poco::JSON::Object::Ptr object = JsonFormatter::parse(json);
int code = JsonFormatter::extract<int>(object, "code");
std::string message = JsonFormatter::extract<std::string>(object, "message");
std::string data = JsonFormatter::extract<std::string>(object, "data");
ParametersMap parameters;
- Poco::JSON::Object::Ptr objParameters = JsonFormatter::extract<Poco::JSON::Object::Ptr>(object, "parameters");
+ //Poco::JSON::Object::Ptr objParameters = JsonFormatter::extract<Poco::JSON::Object::Ptr>(object, "parameters");
+ Poco::Dynamic::Var varParameters = object->get("parameters");
+ Poco::JSON::Object::Ptr objParameters = varParameters.extract<Poco::JSON::Object::Ptr>();
+
for (Poco::JSON::Object::ConstIterator itr = objParameters->begin(); itr != objParameters->end(); ++itr) {
std::string paramName = itr->first;
std::string paramValue = itr->second;
std::string message = "";
std::string data = "";
+ std::cout << "processRequest: body = " << requestBody << std::endl;
+
try {
+ std::cout << "Sending request...\n";
std::ostream& os = _session.sendRequest((HTTPRequest&)request);
// Send request body, if any
if (!requestBody.empty()) {
Poco::StreamCopier::copyStream((std::istream&)iss, os);
}
+ std::cout << "Getting response...\n";
// Get response
HTTPResponse response;
std::istream& rs = _session.receiveResponse(response);
std::ostringstream responseBody;
Poco::StreamCopier::copyStream(rs, responseBody);
// responseBody contains a CommandResultTO in json format
+ std::cout << "Returning result...\n";
return CommandResultTO::fromJson(responseBody.str());
} catch (Poco::Exception& e) {
std::cerr << e.displayText() << std::endl;
object.stringify(jsonStream);
return jsonStream.str();
}
+
+// Declare methods for the supported template type parameters
+template int gde::JsonFormatter::extract<int>(Poco::JSON::Object::Ptr object, const std::string& varName);
+template std::string gde::JsonFormatter::extract<std::string>(Poco::JSON::Object::Ptr object, const std::string& varName);
friend class UserService;
public:
+ ~User() {}
+
inline int getId() const { return _id; }
inline void setId(int id) { this->_id = id; }
private:
User(int id=-1, std::string name="", std::string password="")
: _id(id), _name(name), _password(password) {}
- ~User() {}
User(const User&); // non copyable
User& operator=(const User&); // non copyable
FIND_USER
};
+std::string gde::UserService::_servletName = "http://localhost:8080/GDE-war/UserService";
+
gde::UserService::UserService()
- : _servletName("/UserService")
{
}
{
}
-gde::User
+const gde::User
gde::UserService::createUser(std::string name, std::string password)
{
// build JSON string for CommandTO data
obj.set("name", Poco::Dynamic::Var(name));
obj.set("password", Poco::Dynamic::Var(password));
std::string data = JsonFormatter::stringify(obj);
+ std::cout << "createUser: command = " << data << std::endl;
CommandTO cto(CREATE_USER, data);
CommandResultTO crto = gde::HttpConnection(Poco::URI(_servletName)).doPost(cto);
class UserService {
public:
- User createUser(std::string name, std::string password);
+ static const User createUser(std::string name, std::string password);
void createUser();
void deleteUser();
UserService& operator=(const UserService&); // non copyable
private:
- std::string _servletName;
+ static std::string _servletName;
};
};
--- /dev/null
+
+INCLUDE_DIRECTORIES(
+ ${Poco_INCLUDE_DIRS}
+ ${PROJECT_SOURCE_DIR}/src
+)
+
+LINK_DIRECTORIES(
+ ${Poco_LIBRARY_DIRS}
+# ${CMAKE_INSTALL_DIR/lib}
+)
+
+SET(_link_LIBRARIES
+ #PocoNet
+ #PocoJSON
+ GdeApiCpp
+)
+
+ADD_EXECUTABLE(simple_test simple_test.cpp)
+TARGET_LINK_LIBRARIES(simple_test ${_link_LIBRARIES})
+INSTALL(TARGETS simple_test EXPORT ${PROJECT_NAME}TargetGroup DESTINATION tests)
--- /dev/null
+#include <iostream>
+
+#include <UserService.hpp>
+#include <User.hpp>
+
+int
+main()
+{
+ const gde::User& user = gde::UserService::createUser("toto", "toto_passwd");
+
+ std::cout << "Name: " << user.getName() << std::endl;
+ std::cout << "Password: " << user.getPassword() << std::endl;
+
+}