Skip to content

Commit 6da7cb0

Browse files
committed
fixed
1 parent 03aab43 commit 6da7cb0

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

src/token.zig

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,25 @@ pub const Token = struct {
106106
return self.raw;
107107
}
108108

109-
pub fn getRawNoSignature(self: *Self) []const u8 {
110-
const index = std.mem.lastIndexOf(u8, self.raw, ".") orelse self.raw.len;
111-
return self.raw[0..index];
109+
pub fn getRawNoSignature(self: *Self) ![]const u8 {
110+
const count = std.mem.count(u8, self.raw, ".");
111+
if (count <= 1) {
112+
return self.raw;
113+
}
114+
115+
var header: []const u8 = "";
116+
var claims: []const u8 = "";
117+
118+
var it = std.mem.splitScalar(u8, self.raw, '.');
119+
if (it.next()) |pair| {
120+
header = pair;
121+
}
122+
if (it.next()) |pair| {
123+
claims = pair;
124+
}
125+
126+
const signature = try std.mem.joinZ(self.alloc, ".", &.{header, claims});
127+
return signature;
112128
}
113129

114130
pub fn getHeader(self: *Self) !Header {
@@ -339,7 +355,7 @@ test "Token" {
339355
const token51 = token3.getRaw();
340356
try testing.expectEqualStrings(check2, token51);
341357

342-
const token5 = token3.getRawNoSignature();
358+
const token5 = try token3.getRawNoSignature();
343359
try testing.expectEqualStrings(check1, token5);
344360

345361
// ====================
@@ -352,7 +368,7 @@ test "Token" {
352368
const sig61 = token6.getRaw();
353369
try testing.expectEqualStrings(check3, sig61);
354370

355-
const sig6 = token6.getRawNoSignature();
371+
const sig6 = try token6.getRawNoSignature();
356372
try testing.expectEqualStrings(check3, sig6);
357373

358374
}

0 commit comments

Comments
 (0)