diff --git a/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod b/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod index cd9bdfc833b29eac44017823c6e3c7d097c948b3..4f519becf7edce1e699514b91173f9c6fc556b4a 100644 --- a/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod +++ b/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod @@ -45,7 +45,9 @@ //! query variables is sent as a post request instead of a get. //! -object get_url(string url,void|mapping query_variables, void|mapping request_headers) +object get_url(string url, + void|mapping query_variables, + void|mapping request_headers) { object con=master()->resolv("Protocols")["HTTP"]["Query"](); @@ -65,7 +67,7 @@ object get_url(string url,void|mapping query_variables, void|mapping request_hea error("Protocols.HTTP can't handle %O or any other protocol than HTTP\n", prot); - if (query_variables) + if (query_variables && sizeof(query_variables)) { if (search(query,"?")!=-1) query+="&"+http_encode_query(query_variables); @@ -75,14 +77,18 @@ object get_url(string url,void|mapping query_variables, void|mapping request_hea con->sync_request(host,port, "GET /"+query+" HTTP/1.0", - (["user-agent": - "Mozilla/4.0 compatible (Pike HTTP client)"]) | request_headers); + ([ + "user-agent":"Mozilla/4.0 compatible (Pike HTTP client)", + "host":host + ]) | request_headers); if (!con->ok) return 0; return con; } -object put_url(string url, void|string file, void|mapping query_variables, +object put_url(string url, + void|string file, + void|mapping query_variables, void|mapping request_headers) { object con=master()->resolv("Protocols")["HTTP"]["Query"](); @@ -103,7 +109,7 @@ object put_url(string url, void|string file, void|mapping query_variables, error("Protocols.HTTP can't handle %O or any other protocol than HTTP\n", prot); - if (query_variables) + if (query_variables && sizeof(query_variables)) { if (search(query,"?")!=-1) query+="&"+http_encode_query(query_variables); @@ -111,11 +117,11 @@ object put_url(string url, void|string file, void|mapping query_variables, query+="?"+http_encode_query(query_variables); } - con->sync_request(host,port, + con->sync_request(host, port, "PUT /"+query+" HTTP/1.0", ([ - "user-agent": - "Mozilla/4.0 compatible (Pike HTTP client)" + "user-agent":"Mozilla/4.0 compatible (Pike HTTP client)", + "host":host ]) | request_headers, file); @@ -123,7 +129,8 @@ object put_url(string url, void|string file, void|mapping query_variables, return con; } -object delete_url(string url, void|mapping query_variables, +object delete_url(string url, + void|mapping query_variables, void|mapping request_headers) { object con=master()->resolv("Protocols")["HTTP"]["Query"](); @@ -144,7 +151,7 @@ object delete_url(string url, void|mapping query_variables, error("Protocols.HTTP can't handle %O or any other protocol than HTTP\n", prot); - if (query_variables) + if (query_variables && sizeof(query_variables)) { if (search(query,"?")!=-1) query+="&"+http_encode_query(query_variables); @@ -154,8 +161,10 @@ object delete_url(string url, void|mapping query_variables, con->sync_request(host,port, "DELETE /"+query+" HTTP/1.0", - (["user-agent": - "Mozilla/4.0 compatible (Pike HTTP client)"]) | + ([ + "user-agent":"Mozilla/4.0 compatible (Pike HTTP client)", + "host":host + ]) | request_headers); if (!con->ok) return 0; @@ -196,8 +205,10 @@ object post_url(string url,mapping query_variables, void|mapping request_headers con->sync_request(host,port, "POST /"+query+" HTTP/1.0", - (["user-agent": - "Mozilla/4.0 compatible (Pike HTTP client)"]) | + ([ + "user-agent":"Mozilla/4.0 compatible (Pike HTTP client)", + "host":host + ]) | request_headers | (["content-type": "application/x-www-form-urlencoded"]), @@ -207,13 +218,17 @@ object post_url(string url,mapping query_variables, void|mapping request_headers return con; } -array(string) post_url_nice(string url,mapping query_variables, void|mapping request_headers) +array(string) post_url_nice(string url, + mapping query_variables, + void|mapping request_headers) { object c=post_url(url,query_variables, request_headers); return c && ({c->headers["content-type"],c->data()}); } -string post_url_data(string url,mapping query_variables, void|mapping request_headers) +string post_url_data(string url, + mapping query_variables, + void|mapping request_headers) { object z=post_url(url,query_variables, request_headers); return z && z->data();