summaryrefslogtreecommitdiff
path: root/node_modules/ua-parser/cpp/UaParser.h
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/ua-parser/cpp/UaParser.h')
-rw-r--r--node_modules/ua-parser/cpp/UaParser.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/node_modules/ua-parser/cpp/UaParser.h b/node_modules/ua-parser/cpp/UaParser.h
new file mode 100644
index 0000000..ea34a8c
--- /dev/null
+++ b/node_modules/ua-parser/cpp/UaParser.h
@@ -0,0 +1,54 @@
+#pragma once
+
+#include <string>
+
+struct Device {
+ std::string family;
+};
+
+struct Agent : Device {
+ std::string major;
+ std::string minor;
+ std::string patch;
+
+ std::string toString() const {
+ return family + " " + toVersionString();
+ }
+
+ std::string toVersionString() const {
+ return (major.empty() ? "0" : major) + "." +
+ (minor.empty() ? "0" : minor) + "." +
+ (patch.empty() ? "0" : patch);
+ }
+};
+
+typedef Agent Os;
+typedef Agent Browser;
+
+struct UserAgent {
+ Device device;
+
+ Os os;
+ Browser browser;
+
+ std::string toFullString() const {
+ return browser.toString() + "/" + os.toString();
+ }
+
+ bool isSpider() const {
+ return device.family == "Spider";
+ }
+};
+
+class UserAgentParser {
+ public:
+ explicit UserAgentParser(const std::string& regexes_file_path);
+
+ UserAgent parse(const std::string&) const;
+
+ ~UserAgentParser();
+
+ private:
+ const std::string regexes_file_path_;
+ const void* ua_store_;
+};