MCPcopy Index your code
hub / github.com/aiscriptdev/aiscript / jwt_encode

Function jwt_encode

aiscript-vm/src/stdlib/auth/jwt.rs:170–209  ·  view source on GitHub ↗
(state: &mut State<'gc>, args: Vec<Value<'gc>>)

Source from the content-addressed store, hash-verified

168}
169
170fn jwt_encode<'gc>(state: &mut State<'gc>, args: Vec<Value<'gc>>) -> Result<Value<'gc>, VmError> {
171 if args.len() != 3 {
172 return Err(VmError::RuntimeError(
173 "encode() requires claims object, secret key, and algorithm".into(),
174 ));
175 }
176
177 // Get claims object
178 let claims_obj = match &args[0] {
179 Value::Object(obj) => obj,
180 _ => {
181 return Err(VmError::RuntimeError(
182 "First argument must be claims object".into(),
183 ));
184 }
185 };
186
187 // Get secret key
188 let secret = args[1].as_string()?;
189 let secret_str = secret.to_str().unwrap();
190
191 // Get algorithm
192 let alg = args[2].as_string()?;
193 let algorithm = parse_algorithm(alg.to_str().unwrap())?;
194
195 // Build header
196 let header = Header::new(algorithm);
197
198 // Build claims
199 let claims = build_claims(claims_obj)?;
200
201 // Create encoding key
202 let key = EncodingKey::from_secret(secret_str.as_bytes());
203
204 // Generate token
205 let token = encode(&header, &claims, &key)
206 .map_err(|e| VmError::RuntimeError(format!("JWT encoding error: {}", e)))?;
207
208 Ok(Value::String(state.intern(token.as_bytes())))
209}
210
211fn jwt_decode<'gc>(state: &mut State<'gc>, args: Vec<Value<'gc>>) -> Result<Value<'gc>, VmError> {
212 if args.len() != 3 {

Callers

nothing calls this directly

Calls 8

RuntimeErrorClass · 0.85
parse_algorithmFunction · 0.85
build_claimsFunction · 0.85
lenMethod · 0.80
as_stringMethod · 0.80
to_strMethod · 0.80
as_bytesMethod · 0.80
internMethod · 0.45

Tested by

no test coverage detected