From f4b01aeaa4e18601830034a81df532f4736fe011 Mon Sep 17 00:00:00 2001 From: "Mirar (Pontus Hagland)" <pike@sort.mirar.org> Date: Fri, 9 Apr 1999 13:13:37 +0200 Subject: [PATCH] helper functions Rev: lib/modules/Protocols.pmod/HTTP.pmod/module.pmod:1.1 --- .../Protocols.pmod/HTTP.pmod/module.pmod | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 lib/modules/Protocols.pmod/HTTP.pmod/module.pmod diff --git a/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod b/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod new file mode 100644 index 0000000000..f9acf901a9 --- /dev/null +++ b/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod @@ -0,0 +1,45 @@ + +//! module Protocols +//! submodule HTTP +//! method string get_url(string url) +//! Sends a HTTP GET request to the server in the URL +//! and returns the created and initialized <ref>Query</ref> object. +//! 0 is returned upon failure. +//! +//! method array get_url_nice(string url) +//! Returns an array of ({content_type,data}) +//! after calling the requested server for the information. +//! 0 is returned upon failure. + +object get_url(string url) +{ + object con=master()->resolv("Protocols")["HTTP"]["Query"](); + + string prot="http",host; + int port=80; + string query; + + sscanf(url,"%[^:/]://%[^:/]:%d/%s",prot,host,port,query) == 4 || + (port=80,sscanf(url,"%[^:/]://%[^:/]/%s",prot,host,query)) == 3 || + (prot="http",sscanf(url,"%[^:/]:%d/%s",host,port,query)) == 3 || + (port=80,sscanf(url,"%[^:/]/%s",host,query)) == 2 || + (host=url,query="/"); + + if (prot!="http") + error("Protocols.HTTP can't handle %O or any other protocol then HTTP\n", + prot); + + con->sync_request(host,port, + "GET "+query+" HTTP/1.0", + (["user-agent": + "Mozilla/4.0 compatible (Pike HTTP client)"])); + + if (!con->ok) return 0; + return con; +} + +array(string) get_url_nice(string url) +{ + object c=get_url(url); + return c && ({c->headers["content-type"],c->data()}); +} -- GitLab