mirror of
https://github.com/dlang/phobos.git
synced 2025-05-12 07:08:48 +03:00
fix Issue 11879 - missing default User-Agent in std.net.curl
- use "Phobos-std.net.curl/2.065 (libcurl/7.32.0)" as default "User-Agent" - add method to set a different user agent
This commit is contained in:
parent
b364a2f5f5
commit
b84b43ff5d
1 changed files with 36 additions and 0 deletions
|
@ -2162,6 +2162,7 @@ struct HTTP
|
|||
maxRedirects = HTTP.defaultMaxRedirects;
|
||||
p.charset = "ISO-8859-1"; // Default charset defined in HTTP RFC
|
||||
p.method = Method.undefined;
|
||||
setUserAgent(HTTP.defaultUserAgent);
|
||||
dataTimeout = _defaultDataTimeout;
|
||||
onReceiveHeader = null;
|
||||
version (unittest) verbose = true;
|
||||
|
@ -2460,12 +2461,47 @@ struct HTTP
|
|||
*/
|
||||
void addRequestHeader(const(char)[] name, const(char)[] value)
|
||||
{
|
||||
if (icmp(name, "User-Agent") == 0)
|
||||
return setUserAgent(value);
|
||||
string nv = format("%s: %s", name, value);
|
||||
p.headersOut = curl_slist_append(p.headersOut,
|
||||
cast(char*) toStringz(nv));
|
||||
p.curl.set(CurlOption.httpheader, p.headersOut);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default "User-Agent" value send with a request.
|
||||
* It has the form "Phobos-std.net.curl/$(I PHOBOS_VERSION) (libcurl/$(I CURL_VERSION))"
|
||||
*/
|
||||
static immutable string defaultUserAgent;
|
||||
|
||||
shared static this()
|
||||
{
|
||||
import std.compiler : version_major, version_minor;
|
||||
|
||||
// http://curl.haxx.se/docs/versions.html
|
||||
enum fmt = "Phobos-std.net.curl/%d.%03d (libcurl/%d.%d.%d)";
|
||||
enum maxLen = fmt.length - "%d%03d%d%d%d".length + 10 + 10 + 3 + 3 + 3;
|
||||
|
||||
__gshared char[maxLen] buf = void;
|
||||
|
||||
auto curlVer = curl_version_info(CURLVERSION_NOW).version_num;
|
||||
defaultUserAgent = cast(immutable)sformat(
|
||||
buf, fmt, version_major, version_minor,
|
||||
curlVer >> 16 & 0xFF, curlVer >> 8 & 0xFF, curlVer & 0xFF);
|
||||
}
|
||||
|
||||
/** Set the value of the user agent request header field.
|
||||
*
|
||||
* By default a request has it's "User-Agent" field set to $(LREF
|
||||
* defaultUserAgent) even if $(D setUserAgent) was never called. Pass
|
||||
* an empty string to suppress the "User-Agent" field altogether.
|
||||
*/
|
||||
void setUserAgent(const(char)[] userAgent)
|
||||
{
|
||||
p.curl.set(CurlOption.useragent, userAgent);
|
||||
}
|
||||
|
||||
/** The headers read from a successful response.
|
||||
*
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue