X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=wrappers%2Fpl_WWW_Mechanize.ml;h=f9e46044f992ec5789f744d5c1c7a572b49d8053;hb=55318cc354e514953bca429618150bb069e9920d;hp=a0b5f60afbbbf9038de35ccc10fcd5aa521c7dec;hpb=1e204b159732a1162086091c0cf1ffb675c68217;p=perl4caml.git diff --git a/wrappers/pl_WWW_Mechanize.ml b/wrappers/pl_WWW_Mechanize.ml index a0b5f60..f9e4604 100644 --- a/wrappers/pl_WWW_Mechanize.ml +++ b/wrappers/pl_WWW_Mechanize.ml @@ -2,7 +2,7 @@ * * Copyright (C) 2004 Merjis Ltd. * - * $Id: pl_WWW_Mechanize.ml,v 1.3 2005-01-13 16:06:04 rich Exp $ + * $Id: pl_WWW_Mechanize.ml,v 1.6 2005-08-16 15:39:22 rich Exp $ *) open Perl @@ -129,7 +129,33 @@ object (self) method submit () = call_method_void sv "submit" [] - (*method submit_form ?form_number ?form_name ?fields ?button ?xy () *) + method submit_form ?form_number ?form_name ?fields ?button ?xy () = + let args = ref [] in + let add name f = function + | None -> () + | Some p -> args := sv_of_string name :: f p :: !args + in + add "form_number" sv_of_int form_number; + add "form_name" sv_of_string form_name; + (match fields with + | None -> () + | Some fields -> + let hv = hv_empty () in + List.iter ( + fun (name, value) -> + hv_set hv name (sv_of_string value) + ) fields; + let sv = hashref hv in + args := sv_of_string "fields" :: sv :: !args + ); + add "button" sv_of_string button; + (match xy with + | None -> () + | Some (x, y) -> + args := sv_of_string "x" :: sv_of_int x :: + sv_of_string "y" :: sv_of_int y :: !args); + let sv = call_method sv "submit_form" !args in + new Pl_HTTP_Response.http_response sv method success = let sv = call_method sv "success" [] in @@ -156,7 +182,9 @@ object (self) let sv = call_method sv "content" [] in string_of_sv sv (* method current_forms = *) - (* method links = *) + method links = + let svs = call_method_array sv "links" [] in + List.map (new www_mechanize_link) svs method is_html = let sv = call_method sv "is_html" [] in bool_of_sv sv @@ -185,6 +213,34 @@ object (self) end +and www_mechanize_link sv = + +object (self) + + method sv = sv + + method url = + let sv = call_method sv "url" [] in + string_of_sv sv + + method text = + let sv = call_method sv "text" [] in + string_of_sv sv + + method name = + let sv = call_method sv "name" [] in + string_of_sv sv + + method tag = + let sv = call_method sv "tag" [] in + string_of_sv sv + + method base = + let sv = call_method sv "base" [] in + string_of_sv sv + +end + (* XXX Should be able to pass args to constructor of LWP::UserAgent. *) (* XXX WWW::Mechanize has additional parameters. *) let new_ ?autocheck () =