Skip to content

Commit 2845214

Browse files
committed
Use /api basePath by default
1 parent 7180c28 commit 2845214

File tree

4 files changed

+60
-24
lines changed

4 files changed

+60
-24
lines changed

src/AndroidClient/client/src/main/java/net/servicestack/client/JsonServiceClient.java

Lines changed: 37 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,19 @@
2525
import java.net.URL;
2626
import java.net.URLEncoder;
2727
import java.nio.charset.Charset;
28+
import java.nio.charset.StandardCharsets;
29+
import java.nio.file.Paths;
2830
import java.util.Date;
2931
import java.util.List;
3032
import java.util.Map;
3133
import java.util.UUID;
3234

3335
public class JsonServiceClient implements ServiceClient {
34-
static Charset UTF8 = Charset.forName("UTF-8");
36+
static Charset UTF8 = StandardCharsets.UTF_8;
3537
String baseUrl;
3638
URI baseUri;
3739
String replyUrl;
40+
String oneWayUrl;
3841

3942
boolean alwaysSendBasicAuthHeaders;
4043
String userName;
@@ -56,10 +59,11 @@ public JsonServiceClient(String baseUrl) {
5659
this(baseUrl, true);
5760
}
5861
public JsonServiceClient(String baseUrl, boolean initCookies) {
59-
setBaseUrl(baseUrl);
6062
if (initCookies) {
6163
initCookieHandler();
6264
}
65+
setBaseUrl(baseUrl);
66+
setBasePath("api");
6367
}
6468

6569
public void initCookieHandler() {
@@ -76,24 +80,41 @@ public void setBaseUrl(String baseUrl) {
7680
} catch (URISyntaxException e) {
7781
throw new RuntimeException(e);
7882
}
79-
this.replyUrl = this.baseUrl + "json/reply/";
8083
}
8184

85+
public JsonServiceClient setBasePath() { return setBasePath(""); }
86+
public JsonServiceClient setBasePath(String basePath) {
87+
if (basePath == null || basePath.length() == 0) {
88+
this.replyUrl = this.baseUri.resolve("json/reply") + "/";
89+
this.oneWayUrl = this.baseUri.resolve("json/oneway") + "/";
90+
} else {
91+
if (basePath.endsWith("/")) {
92+
basePath = basePath.substring(0, basePath.length() -1);
93+
}
94+
this.replyUrl = this.baseUri.resolve(basePath) + "/";
95+
this.oneWayUrl = this.baseUri.resolve(basePath) + "/";
96+
}
97+
return this;
98+
}
99+
100+
public String getBaseUrl() { return this.baseUrl; }
101+
public String getReplyUrl() { return this.replyUrl; }
102+
82103
public void setTimeout(int timeoutMs) {
83104
this.timeoutMs = timeoutMs;
84105
}
85106

86107
public GsonBuilder getGsonBuilder() {
87108
return new GsonBuilder()
88-
.registerTypeAdapterFactory(JsonSerializers.getCaseInsensitiveEnumTypeAdapterFactory())
89-
.registerTypeAdapter(Date.class, JsonSerializers.getDateSerializer())
90-
.registerTypeAdapter(Date.class, JsonSerializers.getDateDeserializer())
91-
.registerTypeAdapter(TimeSpan.class, JsonSerializers.getTimeSpanSerializer())
92-
.registerTypeAdapter(TimeSpan.class, JsonSerializers.getTimeSpanDeserializer())
93-
.registerTypeAdapter(UUID.class, JsonSerializers.getGuidSerializer())
94-
.registerTypeAdapter(UUID.class, JsonSerializers.getGuidDeserializer())
95-
.registerTypeAdapter(byte[].class, JsonSerializers.getByteArraySerializer())
96-
.registerTypeAdapter(byte[].class, JsonSerializers.getByteArrayDeserializer());
109+
.registerTypeAdapterFactory(JsonSerializers.getCaseInsensitiveEnumTypeAdapterFactory())
110+
.registerTypeAdapter(Date.class, JsonSerializers.getDateSerializer())
111+
.registerTypeAdapter(Date.class, JsonSerializers.getDateDeserializer())
112+
.registerTypeAdapter(TimeSpan.class, JsonSerializers.getTimeSpanSerializer())
113+
.registerTypeAdapter(TimeSpan.class, JsonSerializers.getTimeSpanDeserializer())
114+
.registerTypeAdapter(UUID.class, JsonSerializers.getGuidSerializer())
115+
.registerTypeAdapter(UUID.class, JsonSerializers.getGuidDeserializer())
116+
.registerTypeAdapter(byte[].class, JsonSerializers.getByteArraySerializer())
117+
.registerTypeAdapter(byte[].class, JsonSerializers.getByteArrayDeserializer());
97118
}
98119

99120
public Gson getGson() {
@@ -103,23 +124,23 @@ public Gson getGson() {
103124
return gson;
104125
}
105126

106-
public String toJson(Object o){
127+
public String toJson(Object o) {
107128
String json = getGson().toJson(o);
108129
return json;
109130
}
110131

111-
public Object fromJson(String json, Class c){
132+
public Object fromJson(String json, Class c) {
112133
Object o = getGson().fromJson(json, c);
113134
return o;
114135
}
115136

116137
public void setGson(Gson gson) { this.gson = gson; }
117138

118-
public String createUrl(Object requestDto){
139+
public String createUrl(Object requestDto) {
119140
return createUrl(requestDto, null);
120141
}
121142

122-
public String createUrl(Object requestDto, Map<String,String> query){
143+
public String createUrl(Object requestDto, Map<String,String> query) {
123144
String requestUrl = this.replyUrl + requestDto.getClass().getSimpleName();
124145

125146
StringBuilder sb = new StringBuilder();

src/AndroidClient/client/src/test/java/net/servicestack/client/JsonServiceClientTests.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ public void exec(HttpURLConnection conn) {
5252
}
5353

5454
public void test_does_process_missing_service_correctly() {
55-
JsonServiceClient localTestClient = new JsonServiceClient("https://techstacks.io/");
55+
JsonServiceClient localTestClient = new JsonServiceClient("https://blazordiffusion.com/");
5656

5757
try {
5858
localTestClient.get(new EchoTypes());
5959
fail("Should throw");
6060
} catch (WebServiceException ex) {
61-
assertEquals(ex.getStatusCode(), 405);
61+
assertEquals(ex.getStatusCode(), 404);
6262
}
6363
}
6464

@@ -78,4 +78,19 @@ public void test_can_serialize_dates_correctly_via_get_request() {
7878
assertTrue(response != null);
7979
assertEquals(request.getDateTime(),response.getDateTime());
8080
}
81+
82+
public void test_can_change_basePath() {
83+
JsonServiceClient client = new JsonServiceClient("https://test.servicestack.net/");
84+
assertEquals("https://test.servicestack.net/api/", client.getReplyUrl());
85+
86+
client.setBasePath();
87+
assertEquals("https://test.servicestack.net/json/reply/", client.getReplyUrl());
88+
89+
client.setBasePath("api");
90+
assertEquals("https://test.servicestack.net/api/", client.getReplyUrl());
91+
client.setBasePath("/api");
92+
assertEquals("https://test.servicestack.net/api/", client.getReplyUrl());
93+
client.setBasePath("/api/");
94+
assertEquals("https://test.servicestack.net/api/", client.getReplyUrl());
95+
}
8196
}

src/AndroidClient/client/src/test/java/net/servicestack/client/JsonTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public void test_Does_serialize_DateTime_in_QueryString() throws UnsupportedEnco
4545

4646
String url = client.createUrl(request);
4747

48-
assertEquals("https://test.servicestack.net/json/reply/HelloDateTime?dateTime=" + URLEncoder.encode("/Date(978310861000-0000)/", "UTF-8"), url);
48+
assertEquals("https://test.servicestack.net/api/HelloDateTime?dateTime=" + URLEncoder.encode("/Date(978310861000-0000)/", "UTF-8"), url);
4949
}
5050

5151
public void test_Can_get_time_components(){

src/AndroidClient/client/src/test/java/net/servicestack/client/TestInterfaceMarkerTests.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,34 +20,34 @@ public void test_Does_SendDefault_as_POST(){
2020
SendVerbResponse response = client.send(new SendDefault().setId(1));
2121
assertEquals(1, (int)response.getId());
2222
assertEquals(HttpMethods.Post, response.getRequestMethod());
23-
assertEquals("/json/reply/SendDefault", response.getPathInfo());
23+
assertEquals("/api/SendDefault", response.getPathInfo());
2424
}
2525

2626
public void test_Does_SendRestGet_as_GET_using_Predefined_Route(){
2727
SendVerbResponse response = client.send(new SendRestGet().setId(1));
2828
assertEquals(1, (int)response.getId());
2929
assertEquals(HttpMethods.Get, response.getRequestMethod());
30-
assertEquals("/json/reply/SendRestGet", response.getPathInfo());
30+
assertEquals("/api/SendRestGet", response.getPathInfo());
3131
}
3232

3333
public void test_Does_SendGet_as_GET(){
3434
SendVerbResponse response = client.send(new SendGet().setId(1));
3535
assertEquals(1, (int)response.getId());
3636
assertEquals(HttpMethods.Get, response.getRequestMethod());
37-
assertEquals("/json/reply/SendGet", response.getPathInfo());
37+
assertEquals("/api/SendGet", response.getPathInfo());
3838
}
3939

4040
public void test_Does_SendPost_as_POST(){
4141
SendVerbResponse response = client.send(new SendPost().setId(1));
4242
assertEquals(1, (int)response.getId());
4343
assertEquals(HttpMethods.Post, response.getRequestMethod());
44-
assertEquals("/json/reply/SendPost", response.getPathInfo());
44+
assertEquals("/api/SendPost", response.getPathInfo());
4545
}
4646

4747
public void test_Does_SendPut_as_PUT(){
4848
SendVerbResponse response = client.send(new SendPut().setId(1));
4949
assertEquals(1, (int)response.getId());
5050
assertEquals(HttpMethods.Put, response.getRequestMethod());
51-
assertEquals("/json/reply/SendPut", response.getPathInfo());
51+
assertEquals("/api/SendPut", response.getPathInfo());
5252
}
5353
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy