OCaml library for JSONfeed parsing and creation
at v1.1.0 1.2 kB view raw
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 ()