Skip to content
This repository was archived by the owner on Oct 2, 2024. It is now read-only.

Commit be3cca3

Browse files
committed
Merge pull request #82 from daboxu/utf8-encode
Utf8 encode for segment path
2 parents 4c57415 + b1a5704 commit be3cca3

File tree

3 files changed

+134
-1
lines changed

3 files changed

+134
-1
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package com.onedrive.sdk.core;
2+
3+
import com.onedrive.sdk.authentication.IAuthenticator;
4+
import com.onedrive.sdk.concurrency.IExecutors;
5+
import com.onedrive.sdk.extensions.IDriveCollectionRequestBuilder;
6+
import com.onedrive.sdk.extensions.IDriveRequestBuilder;
7+
import com.onedrive.sdk.extensions.IOneDriveClient;
8+
import com.onedrive.sdk.extensions.IShareCollectionRequestBuilder;
9+
import com.onedrive.sdk.extensions.IShareRequestBuilder;
10+
import com.onedrive.sdk.http.IHttpProvider;
11+
import com.onedrive.sdk.logger.ILogger;
12+
import com.onedrive.sdk.serializer.ISerializer;
13+
14+
public class MockClient implements IOneDriveClient{
15+
private ILogger mLogger;
16+
17+
@Override
18+
public IDriveRequestBuilder getDrive() {
19+
return null;
20+
}
21+
22+
@Override
23+
public IDriveCollectionRequestBuilder getDrives() {
24+
return null;
25+
}
26+
27+
@Override
28+
public IDriveRequestBuilder getDrive(String id) {
29+
return null;
30+
}
31+
32+
@Override
33+
public IShareCollectionRequestBuilder getShares() {
34+
return null;
35+
}
36+
37+
@Override
38+
public IShareRequestBuilder getShare(String id) {
39+
return null;
40+
}
41+
42+
@Override
43+
public IAuthenticator getAuthenticator() {
44+
return null;
45+
}
46+
47+
@Override
48+
public String getServiceRoot() {
49+
return null;
50+
}
51+
52+
@Override
53+
public IExecutors getExecutors() {
54+
return null;
55+
}
56+
57+
@Override
58+
public IHttpProvider getHttpProvider() {
59+
return null;
60+
}
61+
62+
@Override
63+
public ILogger getLogger() {
64+
return mLogger;
65+
}
66+
67+
@Override
68+
public ISerializer getSerializer() {
69+
return null;
70+
}
71+
72+
@Override
73+
public void validate() {
74+
75+
}
76+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.onedrive.sdk.http;
2+
3+
import android.net.Uri;
4+
import android.test.AndroidTestCase;
5+
6+
import com.onedrive.sdk.core.MockClient;
7+
import com.onedrive.sdk.extensions.IOneDriveClient;
8+
9+
import junit.framework.Assert;
10+
11+
import java.net.URL;
12+
13+
/**
14+
* Test cases for (@see BaseRequest)
15+
*/
16+
public class BaseRequestTests extends AndroidTestCase{
17+
private IOneDriveClient mockClient;
18+
private BaseRequest mRequest;
19+
20+
private final String baseUrl = "https://localhost:8080/";
21+
private final String[] testingSegments = { "Hello World", "你好世界", "Καλημέρα κόσμε", "안녕하세요", "コンニチハ", "แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช" };
22+
23+
@Override
24+
public void setUp() {
25+
mockClient = new MockClient();
26+
StringBuilder sb = new StringBuilder(baseUrl);
27+
28+
for (String segment : testingSegments) {
29+
sb.append(segment);
30+
sb.append("/");
31+
}
32+
33+
sb.deleteCharAt(sb.length()-1);
34+
35+
mRequest = new BaseRequest(sb.toString(), mockClient, /*options:*/ null, null) {
36+
@Override
37+
public IOneDriveClient getClient() {
38+
return mockClient;
39+
}
40+
};
41+
}
42+
public void testUrlEncoded() throws Exception {
43+
URL requestUrl = mRequest.getRequestUrl();
44+
final Uri.Builder expectBuilder = Uri.parse(baseUrl).buildUpon();
45+
46+
for (String segment : testingSegments) {
47+
expectBuilder.appendPath(segment);
48+
}
49+
50+
Assert.assertEquals(expectBuilder.build().toString(), requestUrl.toString());
51+
}
52+
}

onedrivesdk/src/main/java/com/onedrive/sdk/http/BaseRequest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,12 @@ public BaseRequest(final String requestUrl,
125125
@Override
126126
public URL getRequestUrl() {
127127
Uri baseUrl = Uri.parse(mRequestUrl);
128-
final Uri.Builder uriBuilder = baseUrl.buildUpon();
128+
final Uri.Builder uriBuilder = new Uri.Builder().scheme(baseUrl.getScheme()).encodedAuthority(baseUrl.getEncodedAuthority());
129+
130+
for (final String segment : baseUrl.getPathSegments()) {
131+
uriBuilder.appendPath(segment);
132+
}
133+
129134
for (final QueryOption option : mQueryOptions) {
130135
uriBuilder.appendQueryParameter(option.getName(), option.getValue());
131136
}

0 commit comments

Comments
 (0)