@@ -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