diff options
| author | John Estabrook <jestabro@vyos.io> | 2024-10-23 18:50:46 -0500 |
|---|---|---|
| committer | John Estabrook <jestabro@vyos.io> | 2024-10-27 21:49:06 -0500 |
| commit | b8dbd4d03ebb058aaf1e8ddd9261b0628e520e8b (patch) | |
| tree | 14b44c0990030a94f3f685b6aa929f0e20371b42 /src/vyconf_client_session.ml | |
| parent | a5473033fc8ea92891d6ebab9bdeaccbe742d565 (diff) | |
| download | vyconf-b8dbd4d03ebb058aaf1e8ddd9261b0628e520e8b.tar.gz vyconf-b8dbd4d03ebb058aaf1e8ddd9261b0628e520e8b.zip | |
T6718: add client_session module and test executable validate.ml
Diffstat (limited to 'src/vyconf_client_session.ml')
| -rw-r--r-- | src/vyconf_client_session.ml | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/vyconf_client_session.ml b/src/vyconf_client_session.ml new file mode 100644 index 0000000..70a2a13 --- /dev/null +++ b/src/vyconf_client_session.ml @@ -0,0 +1,64 @@ +open Vyconf_connect.Vyconf_pbt + +type op_t = + | OpSetupSession + | OpExists + | OpTeardownSession + | OpShowConfig + | OpValidate + +let config_format_of_string s = + match s with + | "curly" -> Curly + | "json" -> Json + | _ -> failwith (Printf.sprintf "Unknown config format %s, should be curly or json" s) + +let output_format_of_string s = + match s with + | "plain" -> Out_plain + | "json" -> Out_json + | _ -> failwith (Printf.sprintf "Unknown output format %s, should be plain or json" s) + +let call_op ?(out_format="plain") ?(config_format="curly") socket token op path = + let config_format = config_format_of_string config_format in + let out_format = output_format_of_string out_format in + let run = + let%lwt client = + Vyconf_client.create ~token:token socket out_format config_format + in + let%lwt result = match op with + | None -> Error "Operation required" |> Lwt.return + | Some o -> + begin + match o with + | OpSetupSession -> + let%lwt resp = Vyconf_client.setup_session client "vyconf_client_session" in + begin + match resp with + | Ok c -> Vyconf_client.get_token c + | Error e -> Error e |> Lwt.return + end + | OpExists -> Vyconf_client.exists client path + | OpTeardownSession -> Vyconf_client.teardown_session client + | OpShowConfig -> Vyconf_client.show_config client path + | OpValidate -> Vyconf_client.validate client path + end + in + Lwt.return result + in + Lwt_main.run run + +let session_init ?(out_format="plain") ?(config_format="curly") socket = + call_op ~out_format:out_format ~config_format:config_format socket None (Some OpSetupSession) [] + +let session_free socket token = + call_op socket (Some token) (Some OpTeardownSession) [] + +let session_validate_path socket token path = + call_op socket (Some token) (Some OpValidate) path + +let session_show_config socket token path = + call_op socket (Some token) (Some OpShowConfig) path + +let session_path_exists socket token path = + call_op socket (Some token) (Some OpExists) path |
