void fetchAccountPage(HTTPSClientSession& clientSession, NameValueCollection& cookies) { HTTPRequest request(HTTPRequest::HTTP_GET, "/royalgreenwich/account", HTTPMessage::HTTP_1_1); request.setCookies(cookies); HTTPResponse response; std::ostream& ostr = clientSession.sendRequest(request); std::istream& rs = clientSession.receiveResponse(response); int statusCode = response.getStatus(); poco_information_f1(logger(), "Status %d", statusCode); std::vector<HTTPCookie> newCookies; response.getCookies(newCookies); for (HTTPCookie cookie : newCookies) { poco_information_f1(logger(), "Cookie %s", cookie.toString()); if (cookies.has(cookie.getName())) { cookies.set(cookie.getName(), cookie.getValue()); } else { cookies.add(cookie.getName(), cookie.getValue()); } } StreamCopier::copyStream(rs, std::cout); }
void fetchLoginPage(HTTPSClientSession& clientSession, NameValueCollection& cookies) { HTTPRequest request(HTTPRequest::HTTP_GET, "/royalgreenwich/login?message=borrowerservices_notloggedin&referer=https%3A%2F%2Fcapitadiscovery.co.uk%2Froyalgreenwich%2Faccount", HTTPMessage::HTTP_1_1); request.setCookies(cookies); HTTPResponse response; std::ostream& ostr = clientSession.sendRequest(request); std::istream& rs = clientSession.receiveResponse(response); int statusCode = response.getStatus(); poco_information_f1(logger(), "Status %d", statusCode); std::vector<HTTPCookie> newCookies; response.getCookies(newCookies); for (HTTPCookie cookie : newCookies) { poco_information_f1(logger(), "Cookie %s", cookie.toString()); if (cookies.has(cookie.getName())) { cookies.set(cookie.getName(), cookie.getValue()); } else { cookies.add(cookie.getName(), cookie.getValue()); } } }
void submitLoginPage(HTTPSClientSession& clientSession, NameValueCollection& cookies) { HTTPRequest request(HTTPRequest::HTTP_POST, "/royalgreenwich/sessions", HTTPMessage::HTTP_1_1); request.setCookies(cookies); HTTPResponse response; HTMLForm loginForm; loginForm.add("barcode", "28028005913354"); loginForm.add("pin", "3347"); loginForm.prepareSubmit(request); std::ostream& ostr = clientSession.sendRequest(request); loginForm.write(ostr); std::istream& rs = clientSession.receiveResponse(response); int statusCode = response.getStatus(); poco_information_f1(logger(), "Status %d", statusCode); std::vector<HTTPCookie> newCookies; response.getCookies(newCookies); for (HTTPCookie cookie : newCookies) { poco_information_f1(logger(), "Cookie %s", cookie.toString()); if (cookies.has(cookie.getName())) { cookies.set(cookie.getName(), cookie.getValue()); } else { cookies.add(cookie.getName(), cookie.getValue()); } } }
void NameValueCollectionTest::testNameValueCollection() { NameValueCollection nvc; assert (nvc.empty()); assert (nvc.size() == 0); nvc.set("name", "value"); assert (!nvc.empty()); assert (nvc["name"] == "value"); assert (nvc["Name"] == "value"); nvc.set("name2", "value2"); assert (nvc.get("name2") == "value2"); assert (nvc.get("NAME2") == "value2"); assert (nvc.size() == 2); try { std::string value = nvc.get("name3"); fail("not found - must throw"); } catch (NotFoundException&) { } try { std::string value = nvc["name3"]; fail("not found - must throw"); } catch (NotFoundException&) { } assert (nvc.get("name", "default") == "value"); assert (nvc.get("name3", "default") == "default"); assert (nvc.has("name")); assert (nvc.has("name2")); assert (!nvc.has("name3")); nvc.add("name3", "value3"); assert (nvc.get("name3") == "value3"); nvc.add("name3", "value31"); NameValueCollection::ConstIterator it = nvc.find("Name3"); assert (it != nvc.end()); std::string v1 = it->second; assert (it->first == "name3"); ++it; assert (it != nvc.end()); std::string v2 = it->second; assert (it->first == "name3"); assert ((v1 == "value3" && v2 == "value31") || (v1 == "value31" && v2 == "value3")); nvc.erase("name3"); assert (!nvc.has("name3")); assert (nvc.find("name3") == nvc.end()); it = nvc.begin(); assert (it != nvc.end()); ++it; assert (it != nvc.end()); ++it; assert (it == nvc.end()); nvc.clear(); assert (nvc.empty()); assert (nvc.size() == 0); }