forked from loafle/openapi-generator-original
Merge pull request #1876 from xhh/file-downloading-fixes
File downloading improvements for Ruby and Java
This commit is contained in:
@@ -580,6 +580,17 @@ public class ApiClient {
|
||||
return params;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitize filename by removing path.
|
||||
* e.g. ../../sun.gif becomes sun.gif
|
||||
*
|
||||
* @param filename The filename to be sanitized
|
||||
* @return The sanitized filename
|
||||
*/
|
||||
public String sanitizeFilename(String filename) {
|
||||
return filename.replaceAll(".*[/\\\\]", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the given MIME is a JSON MIME.
|
||||
* JSON MIME examples:
|
||||
@@ -737,8 +748,9 @@ public class ApiClient {
|
||||
// Get filename from the Content-Disposition header.
|
||||
Pattern pattern = Pattern.compile("filename=['\"]?([^'\"\\s]+)['\"]?");
|
||||
Matcher matcher = pattern.matcher(contentDisposition);
|
||||
if (matcher.find())
|
||||
filename = matcher.group(1);
|
||||
if (matcher.find()) {
|
||||
filename = sanitizeFilename(matcher.group(1));
|
||||
}
|
||||
}
|
||||
|
||||
String prefix = null;
|
||||
|
||||
@@ -277,4 +277,17 @@ public class ApiClientTest {
|
||||
assertEquals(values.size(), pairValueSplit.length);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSanitizeFilename() {
|
||||
assertEquals("sun", apiClient.sanitizeFilename("sun"));
|
||||
assertEquals("sun.gif", apiClient.sanitizeFilename("sun.gif"));
|
||||
assertEquals("sun.gif", apiClient.sanitizeFilename("../sun.gif"));
|
||||
assertEquals("sun.gif", apiClient.sanitizeFilename("/var/tmp/sun.gif"));
|
||||
assertEquals("sun.gif", apiClient.sanitizeFilename("./sun.gif"));
|
||||
assertEquals("sun.gif", apiClient.sanitizeFilename("..\\sun.gif"));
|
||||
assertEquals("sun.gif", apiClient.sanitizeFilename("\\var\\tmp\\sun.gif"));
|
||||
assertEquals("sun.gif", apiClient.sanitizeFilename("c:\\var\\tmp\\sun.gif"));
|
||||
assertEquals("sun.gif", apiClient.sanitizeFilename(".\\sun.gif"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user