summaryrefslogtreecommitdiffstats
path: root/src/instance.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/instance.cpp')
-rw-r--r--src/instance.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/instance.cpp b/src/instance.cpp
index 5e9126d..7b1d5c1 100644
--- a/src/instance.cpp
+++ b/src/instance.cpp
@@ -53,19 +53,16 @@ uint64_t Instance::get_max_chars() noexcept
_max_chars = [&answer]
{
- auto &body{answer.body};
- size_t pos_start{body.find("max_toot_chars")};
- if (pos_start == string::npos)
+ const regex re_chars{R"("max_toot_chars"\s*:\s*([^"]+))"};
+ smatch match;
+
+ if (regex_search(answer.body, match, re_chars))
{
- debuglog << "max_toot_chars not found.\n";
- return default_max_chars;
+ return static_cast<uint64_t>(stoull(match[1].str()));
}
- pos_start = body.find(':', pos_start) + 1;
- const size_t pos_end{body.find(',', pos_start)};
- const auto max_toot_chars{body.substr(pos_start,
- pos_end - pos_start)};
- return static_cast<uint64_t>(stoull(max_toot_chars));
+ debuglog << "max_toot_chars not found.\n";
+ return default_max_chars;
}();
debuglog << "Set _max_chars to: " << _max_chars << '\n';
}