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>


Reply via email to