Skip to content
Snippets Groups Projects
Commit 3f3b4e39 authored by Johan Sundström's avatar Johan Sundström
Browse files

Protocols.HTTP now sends host headers.

Rev: lib/modules/Protocols.pmod/HTTP.pmod/module.pmod:1.14
parent 813b3966
No related branches found
No related tags found
No related merge requests found
...@@ -45,7 +45,9 @@ ...@@ -45,7 +45,9 @@
//! query variables is sent as a post request instead of a get. //! 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"](); object con=master()->resolv("Protocols")["HTTP"]["Query"]();
...@@ -65,7 +67,7 @@ object get_url(string url,void|mapping query_variables, void|mapping request_hea ...@@ -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", error("Protocols.HTTP can't handle %O or any other protocol than HTTP\n",
prot); prot);
if (query_variables) if (query_variables && sizeof(query_variables))
{ {
if (search(query,"?")!=-1) if (search(query,"?")!=-1)
query+="&"+http_encode_query(query_variables); query+="&"+http_encode_query(query_variables);
...@@ -75,14 +77,18 @@ object get_url(string url,void|mapping query_variables, void|mapping request_hea ...@@ -75,14 +77,18 @@ object get_url(string url,void|mapping query_variables, void|mapping request_hea
con->sync_request(host,port, con->sync_request(host,port,
"GET /"+query+" HTTP/1.0", "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; if (!con->ok) return 0;
return con; 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) void|mapping request_headers)
{ {
object con=master()->resolv("Protocols")["HTTP"]["Query"](); object con=master()->resolv("Protocols")["HTTP"]["Query"]();
...@@ -103,7 +109,7 @@ object put_url(string url, void|string file, void|mapping query_variables, ...@@ -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", error("Protocols.HTTP can't handle %O or any other protocol than HTTP\n",
prot); prot);
if (query_variables) if (query_variables && sizeof(query_variables))
{ {
if (search(query,"?")!=-1) if (search(query,"?")!=-1)
query+="&"+http_encode_query(query_variables); query+="&"+http_encode_query(query_variables);
...@@ -114,8 +120,8 @@ object put_url(string url, void|string file, void|mapping query_variables, ...@@ -114,8 +120,8 @@ object put_url(string url, void|string file, void|mapping query_variables,
con->sync_request(host, port, con->sync_request(host, port,
"PUT /"+query+" HTTP/1.0", "PUT /"+query+" HTTP/1.0",
([ ([
"user-agent": "user-agent":"Mozilla/4.0 compatible (Pike HTTP client)",
"Mozilla/4.0 compatible (Pike HTTP client)" "host":host
]) | request_headers, ]) | request_headers,
file); file);
...@@ -123,7 +129,8 @@ object put_url(string url, void|string file, void|mapping query_variables, ...@@ -123,7 +129,8 @@ object put_url(string url, void|string file, void|mapping query_variables,
return con; return con;
} }
object delete_url(string url, void|mapping query_variables, object delete_url(string url,
void|mapping query_variables,
void|mapping request_headers) void|mapping request_headers)
{ {
object con=master()->resolv("Protocols")["HTTP"]["Query"](); object con=master()->resolv("Protocols")["HTTP"]["Query"]();
...@@ -144,7 +151,7 @@ object delete_url(string url, void|mapping query_variables, ...@@ -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", error("Protocols.HTTP can't handle %O or any other protocol than HTTP\n",
prot); prot);
if (query_variables) if (query_variables && sizeof(query_variables))
{ {
if (search(query,"?")!=-1) if (search(query,"?")!=-1)
query+="&"+http_encode_query(query_variables); query+="&"+http_encode_query(query_variables);
...@@ -154,8 +161,10 @@ object delete_url(string url, void|mapping query_variables, ...@@ -154,8 +161,10 @@ object delete_url(string url, void|mapping query_variables,
con->sync_request(host,port, con->sync_request(host,port,
"DELETE /"+query+" HTTP/1.0", "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); request_headers);
if (!con->ok) return 0; if (!con->ok) return 0;
...@@ -196,8 +205,10 @@ object post_url(string url,mapping query_variables, void|mapping request_headers ...@@ -196,8 +205,10 @@ object post_url(string url,mapping query_variables, void|mapping request_headers
con->sync_request(host,port, con->sync_request(host,port,
"POST /"+query+" HTTP/1.0", "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 | request_headers |
(["content-type": (["content-type":
"application/x-www-form-urlencoded"]), "application/x-www-form-urlencoded"]),
...@@ -207,13 +218,17 @@ object post_url(string url,mapping query_variables, void|mapping request_headers ...@@ -207,13 +218,17 @@ object post_url(string url,mapping query_variables, void|mapping request_headers
return con; 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); object c=post_url(url,query_variables, request_headers);
return c && ({c->headers["content-type"],c->data()}); 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); object z=post_url(url,query_variables, request_headers);
return z && z->data(); return z && z->data();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment