srctree

Gregory Mullen parent b63a27bc 6825e32a
add unknown and decl literal for user-agent browser

inlinesplit
src/bot-detection.zig added: 17, removed: 4, total 13
@@ -62,6 +62,7 @@ pub const Browsers = struct {
&.{},
&.{},
&.{},
&.{},
};
pub const Chrome = struct {
pub const Version = enum(u16) {
 
src/user-agent.zig added: 17, removed: 4, total 13
@@ -79,8 +79,17 @@ pub const Resolved = union(enum) {
.version = parseVersion(str, "Firefox/") catch return .{ .bot = .unknown },
},
};
} else if (indexOf(u8, str, "Safari/") != null) {
if (indexOf(u8, str, "Version/") != null) {
return .{
.browser = .{
.name = .safari,
.version = parseVersion(str, "Version/") catch return .{ .bot = .unknown },
},
};
} else return .{ .browser = .unknown };
} else {
return .{ .bot = .unknown };
return .{ .browser = .unknown };
}
}
};
@@ -89,7 +98,7 @@ test Resolved {
try std.testing.expectEqualDeep(Resolved{ .unknown = .{} }, Resolved.init("unknown"));
 
try std.testing.expectEqualDeep(
Resolved{ .bot = .unknown },
Resolved{ .browser = .unknown },
Resolved.init("Mozilla/5.0"),
);
 
@@ -148,6 +157,8 @@ pub const Browser = struct {
version: u32,
version_string: []const u8 = "",
 
pub const unknown: Browser = .{ .name = .unknown, .version = 0 };
 
pub fn age(b: Browser) !i64 {
if (comptime !BOTDETC_ENABLED) @compileError("Bot Detection is currently disabled");
const versions = BotDetection.Browsers.Versions[@intFromEnum(b.name)];
@@ -171,6 +182,7 @@ pub const Browser = struct {
safari,
brave,
ladybird,
unknown,
};
 
test Name {}