1 #include "UserService.hpp"
2 #include "HttpConnection.hpp"
3 #include "CommandTO.hpp"
4 #include "CommandResultTO.hpp"
5 #include "JsonFormatter.hpp"
6 #include "Credentials.hpp"
9 * WARNING: keep enum values synchronized to WEB API (UserService)
22 std::string gde::UserService::_servletName = "UserService";
25 gde::UserService::createUser(const std::string& name, const std::string& password)
27 // build JSON string for CommandTO data
28 Poco::JSON::Object obj;
29 obj.set("name", Poco::Dynamic::Var(name));
30 obj.set("password", Poco::Dynamic::Var(password));
31 std::string data = JsonFormatter::stringify(obj);
33 CommandTO cto(CREATE_USER, data);
34 const Credentials& credentials = _session.getCredentials();
35 std::string uri = _session.getServiceURI(_servletName);
36 CommandResultTO crto = gde::HttpConnection(Poco::URI(uri), credentials).doPost(cto);
38 // build User object from CommandResultTO data (json format)
40 Poco::JSON::Object::Ptr object = JsonFormatter::parse(crto.getData());
41 int id = JsonFormatter::extract<int>(object, "id");
42 std::string name = JsonFormatter::extract<std::string>(object, "name");
43 std::string password = JsonFormatter::extract<std::string>(object, "password");
44 return gde::User(id, name, password);
49 gde::UserService::deleteUser(const User& user)
51 CommandTO cto(DELETE_USER);
52 cto.setParameter("id", user.getId());
54 const Credentials& credentials = _session.getCredentials();
55 std::string uri = _session.getServiceURI(_servletName);
56 CommandResultTO crto = gde::HttpConnection(Poco::URI(uri), credentials).doPost(cto);
57 return crto.getCode() == CommandResultTO::OK;
61 gde::UserService::findUser(const std::string& name)
63 CommandTO cto(FIND_USER);
64 cto.setParameter("username", name);
66 const Credentials& credentials = _session.getCredentials();
67 std::string uri = _session.getServiceURI(_servletName);
68 CommandResultTO crto = gde::HttpConnection(Poco::URI(uri), credentials).doPost(cto);
70 // build User object from CommandResultTO data (json format)
72 Poco::JSON::Object::Ptr object = JsonFormatter::parse(crto.getData());
73 int id = JsonFormatter::extract<int>(object, "id");
74 std::string name = JsonFormatter::extract<std::string>(object, "name");
75 return gde::User(id, name);
80 gde::UserService::createUserGroup(const std::string& name)
82 CommandTO cto(CREATE_GROUP);
83 cto.setParameter("name", name);
85 const Credentials& credentials = _session.getCredentials();
86 std::string uri = _session.getServiceURI(_servletName);
87 CommandResultTO crto = gde::HttpConnection(Poco::URI(uri), credentials).doPost(cto);
89 // build UserGroup object from CommandResultTO data (json format)
91 Poco::JSON::Object::Ptr object = JsonFormatter::parse(crto.getData());
92 int id = JsonFormatter::extract<int>(object, "id");
93 std::string name = JsonFormatter::extract<std::string>(object, "name");
94 return gde::UserGroup(id, name);
99 gde::UserService::deleteUserGroup(const gde::UserGroup& group)
101 CommandTO cto(DELETE_GROUP);
102 cto.setParameter("id", group.getId());
104 const Credentials& credentials = _session.getCredentials();
105 std::string uri = _session.getServiceURI(_servletName);
106 CommandResultTO crto = gde::HttpConnection(Poco::URI(uri), credentials).doPost(cto);
107 return crto.getCode() == CommandResultTO::OK;
111 gde::UserService::findUserGroup(const std::string& name)
113 CommandTO cto(FIND_GROUP);
114 cto.setParameter("groupname", name);
116 const Credentials& credentials = _session.getCredentials();
117 std::string uri = _session.getServiceURI(_servletName);
118 CommandResultTO crto = gde::HttpConnection(Poco::URI(uri), credentials).doPost(cto);
120 // build UserGroup object from CommandResultTO data (json format)
122 Poco::JSON::Object::Ptr object = JsonFormatter::parse(crto.getData());
123 int id = JsonFormatter::extract<int>(object, "id");
124 std::string name = JsonFormatter::extract<std::string>(object, "name");
125 return gde::UserGroup(id, name);
130 gde::UserService::addToUserGroup(const gde::UserGroup& group, const gde::User& user)
132 CommandTO cto(ADD_TO_GROUP);
133 cto.setParameter("groupId", group.getId());
134 cto.setParameter("userId", user.getId());
136 const Credentials& credentials = _session.getCredentials();
137 std::string uri = _session.getServiceURI(_servletName);
138 CommandResultTO crto = gde::HttpConnection(Poco::URI(uri), credentials).doPost(cto);
139 return crto.getCode() == CommandResultTO::OK;
143 gde::UserService::removeFromUserGroup(const gde::UserGroup& group, const gde::User& user)
145 CommandTO cto(REMOVE_FROM_GROUP);
146 cto.setParameter("groupId", group.getId());
147 cto.setParameter("userId", user.getId());
149 const Credentials& credentials = _session.getCredentials();
150 std::string uri = _session.getServiceURI(_servletName);
151 CommandResultTO crto = gde::HttpConnection(Poco::URI(uri), credentials).doPost(cto);
152 return crto.getCode() == CommandResultTO::OK;