Author: ecki
Date: Fri Sep 18 15:35:40 2015
New Revision: 1703891
URL: http://svn.apache.org/viewvc?rev=1703891&view=rev
Log:
[VFS-198][http] Make user-agent configurable.
Modified:
commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileObject.java
commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileSystemConfigBuilder.java
commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/HttpProviderTestCase.java
commons/proper/vfs/trunk/src/changes/changes.xml
Modified:
commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileObject.java
URL:
http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileObject.java?rev=1703891&r1=1703890&r2=1703891&view=diff
==============================================================================
---
commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileObject.java
(original)
+++
commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileObject.java
Fri Sep 18 15:35:40 2015
@@ -73,6 +73,7 @@ public class HttpFileObject<FS extends H
}
}
private final String urlCharset;
+ private final String userAgent;
private final boolean followRedirect;
private HeadMethod method;
@@ -88,6 +89,7 @@ public class HttpFileObject<FS extends H
super(name, fileSystem);
final FileSystemOptions fileSystemOptions =
fileSystem.getFileSystemOptions();
urlCharset = builder.getUrlCharset(fileSystemOptions);
+ userAgent = builder.getUserAgent(fileSystemOptions);
followRedirect = builder.getFollowRedirect(fileSystemOptions);
}
@@ -221,6 +223,11 @@ public class HttpFileObject<FS extends H
return followRedirect;
}
+ protected String getUserAgent()
+ {
+ return userAgent;
+ }
+
HeadMethod getHeadMethod() throws IOException
{
if (method != null)
@@ -253,7 +260,7 @@ public class HttpFileObject<FS extends H
final String pathEncoded = ((URLFileName)
getName()).getPathQueryEncoded(this.getUrlCharset());
method.setPath(pathEncoded);
method.setFollowRedirects(this.getFollowRedirect());
- method.setRequestHeader("User-Agent", "Jakarta-Commons-VFS");
+ method.setRequestHeader("User-Agent", this.getUserAgent());
}
/*
Modified:
commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileSystemConfigBuilder.java
URL:
http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileSystemConfigBuilder.java?rev=1703891&r1=1703890&r2=1703891&view=diff
==============================================================================
---
commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileSystemConfigBuilder.java
(original)
+++
commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileSystemConfigBuilder.java
Fri Sep 18 15:35:40 2015
@@ -30,6 +30,8 @@ public class HttpFileSystemConfigBuilder
{
protected static final String KEY_FOLLOW_REDIRECT = "followRedirect";
+ protected static final String KEY_USER_AGENT = "userAgent";
+
private static final HttpFileSystemConfigBuilder BUILDER = new
HttpFileSystemConfigBuilder();
private static final int DEFAULT_MAX_HOST_CONNECTIONS = 5;
@@ -42,6 +44,8 @@ public class HttpFileSystemConfigBuilder
private static final boolean DEFAULT_FOLLOW_REDIRECT = true;
+ private static final String DEFAULT_USER_AGENT = "Jakarta-Commons-VFS";
+
private static final String KEY_PREEMPTIVE_AUTHENTICATION =
"preemptiveAuth";
/**
@@ -330,6 +334,28 @@ public class HttpFileSystemConfigBuilder
return getInteger(opts, HttpConnectionManagerParams.SO_TIMEOUT,
DEFAULT_SO_TIMEOUT);
}
+ /**
+ * Assign the user agent to attach to the outgoing http methods
+ *
+ * @param userAgent User Agent String
+ */
+ public void setUserAgent(final FileSystemOptions opts, final String
userAgent)
+ {
+ setParam(opts, "userAgent", userAgent);
+ }
+
+ /**
+ * Return the user agent string
+ *
+ * @return User provided User-Agent string, otherwise default of:
Jakarta-Commons-VFS
+ */
+ public String getUserAgent(final FileSystemOptions opts)
+ {
+ final String userAgent = (String) getParam(opts, KEY_USER_AGENT);
+ return userAgent != null ? userAgent : DEFAULT_USER_AGENT;
+ }
+
+
@Override
protected Class<? extends FileSystem> getConfigClass()
{
Modified:
commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/HttpProviderTestCase.java
URL:
http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/HttpProviderTestCase.java?rev=1703891&r1=1703890&r2=1703891&view=diff
==============================================================================
---
commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/HttpProviderTestCase.java
(original)
+++
commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/HttpProviderTestCase.java
Fri Sep 18 15:35:40 2015
@@ -217,13 +217,16 @@ public class HttpProviderTestCase extend
// ensure defaults are 0
assertEquals(0, builder.getConnectionTimeout(opts));
assertEquals(0, builder.getSoTimeout(opts));
+ assertEquals("Jakarta-Commons-VFS", builder.getUserAgent(opts));
builder.setConnectionTimeout(opts, 60000);
builder.setSoTimeout(opts, 60000);
+ builder.setUserAgent(opts, "foo/bar");
// ensure changes are visible
assertEquals(60000, builder.getConnectionTimeout(opts));
assertEquals(60000, builder.getSoTimeout(opts));
+ assertEquals("foo/bar", builder.getUserAgent(opts));
// TODO: should also check the created HTTPClient
}
Modified: commons/proper/vfs/trunk/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/commons/proper/vfs/trunk/src/changes/changes.xml?rev=1703891&r1=1703890&r2=1703891&view=diff
==============================================================================
--- commons/proper/vfs/trunk/src/changes/changes.xml (original)
+++ commons/proper/vfs/trunk/src/changes/changes.xml Fri Sep 18 15:35:40 2015
@@ -26,6 +26,9 @@
<!-- <action issue="VFS-443" dev="ggregory" type="update"
due-to="nickallen"> -->
<!-- [Local] Need an easy way to convert from a FileObject to a File.
-->
<!-- </action> -->
+ <action issue="VFS-198" dev="ecki" type="add" due-to="Andrew Franklin,
Simon Legner">
+ [http] Make user agent configurable.
+ </action>
<action issue="VFS-202" dev="ecki" type="fix" due-to="Sergey Vladimirov,
Simon Legner">
[http] Allow URLs responding with 405 to HEAD requests.
</action>