From 4e95f395e276d3fcec8da41e73601bce3acc6368 Mon Sep 17 00:00:00 2001 From: Samuel Webb Date: Mon, 24 Mar 2025 00:46:26 -0400 Subject: [PATCH] Fix lessThan functions --- src/Entities.zig | 4 ++-- src/MusicBrainzQuery.zig | 48 ---------------------------------------- src/root.zig | 5 +++-- 3 files changed, 5 insertions(+), 52 deletions(-) diff --git a/src/Entities.zig b/src/Entities.zig index b5dd6f3..1d9df15 100644 --- a/src/Entities.zig +++ b/src/Entities.zig @@ -45,7 +45,7 @@ pub const Recording = struct { const bdtyr = std.fmt.parseInt(u32, bdtstr[0..4], 10) catch 0; if (adtyr != bdtyr) { return adtyr < bdtyr; - } else if (adtstr.len > 7) { + } else if (adtstr.len >= 7) { if (bdtstr.len < 7) return true; // a provides more information const adtmn = std.fmt.parseInt(u32, adtstr[5..7], 10) catch 0; const bdtmn = std.fmt.parseInt(u32, bdtstr[5..7], 10) catch 0; @@ -90,7 +90,7 @@ pub const Release = struct { const bdtyr = std.fmt.parseInt(u32, bdtstr[0..4], 10) catch 0; if (adtyr != bdtyr) { return adtyr < bdtyr; - } else if (adtstr.len > 7) { + } else if (adtstr.len >= 7) { if (bdtstr.len < 7) return true; // a provides more information const adtmn = std.fmt.parseInt(u32, adtstr[5..7], 10) catch 0; const bdtmn = std.fmt.parseInt(u32, bdtstr[5..7], 10) catch 0; diff --git a/src/MusicBrainzQuery.zig b/src/MusicBrainzQuery.zig index abff1f8..ec1ad6a 100644 --- a/src/MusicBrainzQuery.zig +++ b/src/MusicBrainzQuery.zig @@ -139,28 +139,6 @@ pub const searchMetadata = struct { an: []const u8, }; -//pub fn percentEncode(alloc: std.mem.Allocator, smd: searchMetadata) !searchMetadata { -// var output: searchMetadata = undefined; -// inline for (std.meta.fields(searchMetadata)) |k| { -// var encoded = std.ArrayList(u8).init(alloc); -// errdefer encoded.deinit(); -// for (@field(smd, k.name)) |v| { -// if ((v >= 'A' and v <= 'Z') or (v >= 'a' and v <= 'z') or (v >= '0' and v <= '9') or v == '-' or v == '_' or v == '.' or v == '~') { -// try encoded.append(v); -// } else if (v == ' ') { -// try encoded.append('+'); -// } else { -// const hex = try std.fmt.allocPrint(alloc, "%{x}", .{v}); -// defer alloc.free(hex); -// try encoded.appendSlice(hex); -// } -// } -// @field(output, k.name) = try encoded.toOwnedSlice(); -// } -// -// return output; -//} - pub const searchIDs = union { id: []const u8, ids: struct { @@ -169,29 +147,3 @@ pub const searchIDs = union { song_id: ?[]const u8, }, }; - -//test "pe_jethro_tull" { -// const test_alloc = std.testing.allocator; -// const jt = searchMetadata{ .tn = "Aqualung ", .rn = "Aqualung", .an = "Jethro Tull" }; -// const jt_enc = try percentEncode(test_alloc, jt); -// defer test_alloc.free(jt_enc); -// //defer jt.deinit(); -// try testing.expect(std.mem.eql(u8, jt_enc.an, "Jethro+Tull")); -//} -// -//test "pe_aphex_twin" { -// const test_alloc = std.testing.allocator; -// var at = searchMetadata{ .alloc = test_alloc, .tn = .{ .dec = "#3" }, .rn = .{ .dec = "Selected Ambient Works Volume II" }, .an = .{ .dec = "Aphex Twin" } }; -// try at.percentEncode(); -// defer at.deinit(); -// try testing.expect(std.mem.eql(u8, at.tn.enc, "%233")); -//} -// -//test "pe_bon_iver" { -// const test_alloc = std.testing.allocator; -// var bi = searchMetadata{ .alloc = test_alloc, .tn = .{ .dec = "21 M♢♢N WATER" }, .rn = .{ .dec = "22, a Million" }, .an = .{ .dec = "Bon Iver" } }; -// try bi.percentEncode(); -// defer bi.deinit(); -// try testing.expect(std.mem.eql(u8, bi.tn.enc, "21+M%e2%99%a2%e2%99%a2N+WATER")); -//} -// diff --git a/src/root.zig b/src/root.zig index 8623140..3c5e84d 100644 --- a/src/root.zig +++ b/src/root.zig @@ -19,19 +19,20 @@ pub fn mbSearch(alloc: std.mem.Allocator, smd: MBQ.searchMetadata) !MBQ.Result { try code.append('+'); } else { const hex = try std.fmt.allocPrint(alloc, "%{x}", .{v}); - defer alloc.free(hex); try code.appendSlice(hex); } } @field(encoded, k.name) = try code.toOwnedSlice(); } - // Might consider making just one of these and passing it around var client = Client{ .allocator = alloc }; + errdefer client.deinit(); const query: []const u8 = try std.fmt.allocPrint(alloc, "https://musicbrainz.org/ws/2/recording/?query=\"{s}\"%20AND%20artist:\"{s}\"%20AND%20release:\"{s}\"&fmt=json", .{ encoded.tn, encoded.an, encoded.rn }); + errdefer alloc.free(query); var ar = std.ArrayList(u8).init(alloc); + errdefer ar.deinit(); const response: Client.FetchResult = try client.fetch(.{ .response_storage = .{ .dynamic = &ar }, .location = .{ .url = query }, .method = .GET, .headers = .{ .user_agent = .{ .override = user_agent } } });