std::vector AdfsCredentialsProvider::get_input_tags_from_html()

in src/authentication/adfs/adfs.cc [102:127]


std::vector<std::string> AdfsCredentialsProvider::get_input_tags_from_html(const std::string& body) {
    std::unordered_set<std::string> hash_set;
    std::vector<std::string> retval;

    std::smatch matches;
    std::regex pattern(INPUT_TAG_PATTERN);
    std::string source = body;
    while (std::regex_search(source,matches,pattern)) {
        std::string tag = matches.str(0);
        std::string tag_name = get_value_by_key(tag, std::string("name"));
        DLOG(INFO) << "Tag [" << tag << "], Tag Name [" << tag_name << "]";
        std::transform(tag_name.begin(), tag_name.end(), tag_name.begin(), [](unsigned char c) {
            return std::tolower(c);
        });
        if (!tag_name.empty() && !hash_set.contains(tag_name)) {
            hash_set.insert(tag_name);
            retval.push_back(tag);
            DLOG(INFO) << "Saved input_tag: " << tag;
        }

        source = matches.suffix().str();
    }

	DLOG(INFO) << "Input tags vector size: " << retval.size();
    return retval;
}