@@ -20,21 +20,27 @@ std::string wiki::get(const std::string &url,const std::list<std::string> &heade
2020 request.setOpt <curlpp::Options::HttpHeader>(header);
2121 return get (request);
2222}
23- std::string wiki::get (const std::string &url ,const std::string &cookiejar_path,const std::list<std::string> &header){
23+ std::string wiki::get_login_token (const std::string &api ,const std::string &cookiejar_path,const std::list<std::string> &header){
2424 curlpp::Easy request;
25- request.setOpt <curlpp::Options::Url>(url );
25+ request.setOpt <curlpp::Options::Url>(api+ " ?format=json&action=query&meta=tokens&type=login " );
2626 request.setOpt <curlpp::Options::CookieJar>(cookiejar_path);
2727 request.setOpt <curlpp::Options::HttpHeader>(header);
28- return get (request);
29- }
30- std::string wiki::get_token (const std::string &url,const std::string &cookiejar_path,const std::list<std::string> &header){
31- nlohmann::json response=nlohmann::json::parse (wiki::get (url,cookiejar_path,header));
28+ nlohmann::json response=nlohmann::json::parse (wiki::get (request));
3229 const std::string token=response[" query" ][" tokens" ][" logintoken" ];
3330 return token;
3431}
35- std::string wiki::login (const std::string &url ,const std::string &cookie_path, const std::string &username, const std::string &password, const std::string &login_token ,const std::list<std::string> &header){
32+ std::string wiki::get_csrf_token (const std::string &api ,const std::string &cookie_path,const std::list<std::string> &header){
3633 curlpp::Easy request;
37- request.setOpt <curlpp::Options::Url>(url);
34+ request.setOpt <curlpp::Options::Url>(api+" ?format=json&action=query&meta=tokens&type=csrf" );
35+ request.setOpt <curlpp::Options::CookieFile>(cookie_path);
36+ request.setOpt <curlpp::Options::HttpHeader>(header);
37+ nlohmann::json response=nlohmann::json::parse (wiki::get (request));
38+ const std::string token=response[" query" ][" tokens" ][" csrftoken" ];
39+ return token;
40+ }
41+ std::string wiki::login (const std::string &api,const std::string &cookie_path,const std::string &username,const std::string &password,const std::string &login_token,const std::list<std::string> &header){
42+ curlpp::Easy request;
43+ request.setOpt <curlpp::Options::Url>(api+" ?format=json&action=login" );
3844 request.setOpt <curlpp::Options::CookieFile>(cookie_path);
3945 request.setOpt <curlpp::Options::CookieJar>(cookie_path);
4046 curlpp::Forms form;
0 commit comments