code wiki / _hdl_build / nx_video_sniff_api_gate.nx

nx_video_sniff_api_gate.nx source

↩ module page · 58 lines · 3280 B

1import "nx_gate_gn.nx" 2import "nx_gate_base.nx" 3// nx_video_sniff_api_gate.nx -- proves the API layer: the sniff result formats as a JSON API response and a 4// `?url=` request query parses (URL-decoded). This is the contract a daemon route / MCP tool returns + reads. license_tier: ORIGINAL expect_exit: 0 5import "nx_syscalls.nx" 6import "nx_js_eval.nx" 7import "nx_media_jsexec.nx" 8import "nx_video_sniff.nx" 9 10func grow(name: *u8, ok: i64) -> i64 { if ok==1 { gw(" PASS " as *u8) } else { gw(" FAIL " as *u8) } gw(name); gw(" 11" as *u8); return ok } 12func gsl(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n } 13func streq(a: *u8, b: *u8) -> i64 { var i: i64=0; while 1==1 { let x: i64=a[i]&0xff; let y: i64=b[i]&0xff; if x!=y { return 0 } if x==0 { return 1 } i=i+1 } return 0 } 14 15func chk_json(kind: i64, plan: *u8, want: *u8) -> i64 { 16 let out: *u8 = sys_mmap(2560) 17 vs_result_json(kind, plan, out, 2560) 18 if streq(out, want) == 1 { return 1 } 19 gw(" got=[" as *u8); gw(out); gw("]\n" as *u8); return 0 20} 21func chk_query(q: *u8, want: *u8) -> i64 { 22 let out: *u8 = sys_mmap(2048) 23 vs_query_url(q, gsl(q), out, 2048) 24 if streq(out, want) == 1 { return 1 } 25 gw(" got=[" as *u8); gw(out); gw("]\n" as *u8); return 0 26} 27 28func main() -> i64 { 29 gw("video-sniff API gate (result -> JSON + request ?url= -> decoded)\n" as *u8) 30 var pass: i64 = 0 31 var ttl: i64 = 0 32 33 // --- result -> JSON --- 34 ttl=ttl+1; pass=pass+grow("J1 hls -> found+route+url\x00" as *u8, 35 chk_json(VSK_HLS, "ROUTE=hls URL=https://cdn/x.m3u8" as *u8, "{\"found\":true,\"route\":\"hls\",\"url\":\"https://cdn/x.m3u8\"}" as *u8)) 36 ttl=ttl+1; pass=pass+grow("J2 none -> found:false url:null\x00" as *u8, 37 chk_json(VSK_NONE, "ROUTE=none URL=-" as *u8, "{\"found\":false,\"route\":\"none\",\"url\":null}" as *u8)) 38 ttl=ttl+1; pass=pass+grow("J3 guard-killed -> found:false\x00" as *u8, 39 chk_json(VSK_KILLED, "ROUTE=guard-killed URL=- (runaway)" as *u8, "{\"found\":false,\"route\":\"guard-killed\",\"url\":null}" as *u8)) 40 ttl=ttl+1; pass=pass+grow("J4 direct -> found+mp4\x00" as *u8, 41 chk_json(VSK_DIRECT, "ROUTE=direct URL=https://c/v.mp4" as *u8, "{\"found\":true,\"route\":\"direct\",\"url\":\"https://c/v.mp4\"}" as *u8)) 42 // --- request ?url= parse (URL-decoded) --- 43 ttl=ttl+1; pass=pass+grow("Q1 percent-decode https%3A%2F%2F...\x00" as *u8, 44 chk_query("url=https%3A%2F%2Fx.com%2Fp%2Fm.m3u8" as *u8, "https://x.com/p/m.m3u8" as *u8)) 45 ttl=ttl+1; pass=pass+grow("Q2 url= amid other params\x00" as *u8, 46 chk_query("foo=1&url=https://a.b/c&bar=2" as *u8, "https://a.b/c" as *u8)) 47 ttl=ttl+1; pass=pass+grow("Q3 '+' -> space\x00" as *u8, 48 chk_query("url=a+b+c" as *u8, "a b c" as *u8)) 49 ttl=ttl+1 50 let q4o: *u8 = sys_mmap(2048) 51 let q4q: *u8 = "noturl=1&x=2" as *u8 52 let q4n: i64 = vs_query_url(q4q, gsl(q4q), q4o, 2048) 53 pass=pass+grow("Q4 no url param -> empty (len 0)\x00" as *u8, (q4n == 0) as i64) 54 55 gw("pass=" as *u8); gn(pass); gw("/" as *u8); gn(ttl); gw("\n" as *u8) 56 if pass == ttl { gw("verdict=GREEN (sniff result -> JSON API response + request ?url= parsing)\n" as *u8); sys_exit(0); return 0 } 57 gw("verdict=RED\n" as *u8); sys_exit(1); return 1 58}