OCaml library for JSONfeed parsing and creation
1(** Example: JSON Feed Validator
2
3 Reads a JSON Feed from stdin and validates it.
4
5 Usage: feed_validator < feed.json cat feed.json | feed_validator
6
7 Exit codes: 0 - Feed is valid 1 - Feed parsing failed 2 - Feed validation
8 failed *)
9
10let validate_stdin () =
11 let stdin = Bytesrw.Bytes.Reader.of_in_channel In_channel.stdin in
12 match Jsonfeed.decode ~locs:true stdin with
13 | Error err ->
14 Format.eprintf "Parsing failed:\n %s\n%!" (Jsont.Error.to_string err);
15 exit 1
16 | Ok feed -> (
17 match Jsonfeed.validate feed with
18 | Ok () ->
19 Format.printf "Feed is valid\n%!";
20 Format.printf "\nFeed details:\n";
21 Format.printf " Title: %s\n" (Jsonfeed.title feed);
22 Format.printf " Version: %s\n" (Jsonfeed.version feed);
23 (match Jsonfeed.home_page_url feed with
24 | Some url -> Format.printf " Home page: %s\n" url
25 | None -> ());
26 Format.printf " Items: %d\n" (List.length (Jsonfeed.items feed));
27 exit 0
28 | Error errors ->
29 Format.eprintf "Validation failed:\n%!";
30 List.iter (fun err -> Format.eprintf " - %s\n%!" err) errors;
31 exit 2)
32
33let () = validate_stdin ()