Browse Source

Multipart Put now supports urlencoded keys

pull/19/head
Frederick F. Kautz IV 10 years ago
parent
commit
c002e46c12
  1. 8
      Minio.Client/ObjectStorageClient.cs
  2. 2
      Minio.Client/V4Authenticator.cs
  3. 68
      Minio.ClientTests/IntegrationTest.cs

8
Minio.Client/ObjectStorageClient.cs

@ -816,11 +816,11 @@ namespace Minio.Client
var queries = new List<string>();
if (!recursive)
{
queries.Add("delimiter=/");
queries.Add("delimiter=%2F");
}
if (prefix != null)
{
queries.Add("prefix=" + prefix);
queries.Add("prefix=" + Uri.EscapeDataString(prefix));
}
if (marker != null)
{
@ -874,11 +874,11 @@ namespace Minio.Client
queries.Add("uploads");
if (prefix != null)
{
queries.Add("prefix=" + UrlEncode(prefix));
queries.Add("prefix=" + Uri.EscapeDataString(prefix));
}
if (keyMarker != null)
{
queries.Add("key-marker=" + UrlEncode(keyMarker));
queries.Add("key-marker=" + Uri.EscapeDataString(keyMarker));
}
if (uploadIdMarker != null)
{

2
Minio.Client/V4Authenticator.cs

@ -190,8 +190,6 @@ namespace Minio.Client
if (individualParameterString.Contains('='))
{
string[] splitQuery = individualParameterString.Split(new char[] { '=' }, 2);
splitQuery[0] = WebUtility.UrlEncode(splitQuery[0]);
splitQuery[1] = WebUtility.UrlEncode(splitQuery[1]);
sortedQueries.Add(splitQuery[0] + "=" + splitQuery[1]);
}
else

68
Minio.ClientTests/IntegrationTest.cs

@ -437,7 +437,73 @@ namespace Minio.ClientTests
{
data[i] = (byte)'a';
}
client.PutObject(bucket, "largeobj", 11 * 1024 * 1024, "application/octet-stream", new MemoryStream(data));
client.PutObject(bucket, "large/object", 11 * 1024 * 1024, "application/octet-stream", new MemoryStream(data));
}
[TestMethod]
public void PutLargeObjectWithContentType()
{
byte[] data = new byte[11 * 1024 * 1024];
for (int i = 0; i < 11 * 1024 * 1024; i++)
{
data[i] = (byte)'a';
}
client.PutObject(bucket, "large/text_plain", 11 * 1024 * 1024, "text/plain", new MemoryStream(data));
}
[TestMethod]
public void PutLargeObjectWithQuestionMark()
{
byte[] data = new byte[11 * 1024 * 1024];
for (int i = 0; i < 11 * 1024 * 1024; i++)
{
data[i] = (byte)'a';
}
client.PutObject(bucket, "large/obj?ect", 11 * 1024 * 1024, "application/octet-stream", new MemoryStream(data));
}
[TestMethod]
public void PutLargeObjectWithHash()
{
byte[] data = new byte[11 * 1024 * 1024];
for (int i = 0; i < 11 * 1024 * 1024; i++)
{
data[i] = (byte)'a';
}
client.PutObject(bucket, "large/obj#ect", 11 * 1024 * 1024, "application/octet-stream", new MemoryStream(data));
}
[TestMethod]
public void PutLargeObjectWithUnicode1()
{
byte[] data = new byte[11 * 1024 * 1024];
for (int i = 0; i < 11 * 1024 * 1024; i++)
{
data[i] = (byte)'a';
}
client.PutObject(bucket, "large/世界", 11 * 1024 * 1024, "application/octet-stream", new MemoryStream(data));
}
[TestMethod]
public void PutLargeObjectWithUnicode2()
{
byte[] data = new byte[11 * 1024 * 1024];
for (int i = 0; i < 11 * 1024 * 1024; i++)
{
data[i] = (byte)'a';
}
client.PutObject(bucket, "large/世界世", 11 * 1024 * 1024, "application/octet-stream", new MemoryStream(data));
}
[TestMethod]
public void PutLargeObjectWithUnicode3()
{
byte[] data = new byte[11 * 1024 * 1024];
for (int i = 0; i < 11 * 1024 * 1024; i++)
{
data[i] = (byte)'a';
}
client.PutObject(bucket, "large/世界世界", 11 * 1024 * 1024, "application/octet-stream", new MemoryStream(data));
}
[TestMethod]

Loading…
Cancel
Save