Skip to content

Commit 2c509b6

Browse files
authored
Fix baseUrl handling (#105)
The baseUrl did not handle trailing slashes correctly. The V2 Client expected the baseUrl to not have a trailing slash. The V1 Client expected the baseUrl to have a trailing slash. With the fix the trailing slash is always removed and added during the calculation of the subscription path. Fixes #99
1 parent 9611b89 commit 2c509b6

4 files changed

Lines changed: 28 additions & 3 deletions

File tree

packages/modelserver-client/src/model-server-client-v2.spec.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,18 @@ describe('tests for ModelServerClientV2', () => {
3838
const axios = client['restClient'];
3939
expect(axios.defaults.baseURL).to.be.equal(baseUrl);
4040
});
41+
it('test createSubscriptionPath without trailing slash', () => {
42+
client = new ModelServerClientV2();
43+
client.initialize(baseUrl);
44+
const subscriptionPath = client['createSubscriptionPath']('foo', {});
45+
expect(subscriptionPath).to.be.equal(`ws://localhost:8081/api/v2/subscribe?modeluri=foo&format=json-v2`);
46+
});
47+
it('test createSubscriptionPath with trailing slash', () => {
48+
client = new ModelServerClientV2();
49+
client.initialize(`${baseUrl}/`);
50+
const subscriptionPath = client['createSubscriptionPath']('foo', {});
51+
expect(subscriptionPath).to.be.equal(`ws://localhost:8081/api/v2/subscribe?modeluri=foo&format=json-v2`);
52+
});
4153

4254
describe('test requests', () => {
4355
it('getAll', done => {

packages/modelserver-client/src/model-server-client-v2.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export class ModelServerClientV2 implements ModelServerClientApiV2 {
3131
protected defaultFormat: Format = FORMAT_JSON_V2;
3232

3333
initialize(baseUrl: string, defaultFormat: Format = FORMAT_JSON_V2): void | Promise<void> {
34-
this._baseUrl = baseUrl;
34+
this._baseUrl = baseUrl.endsWith('/') ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl;
3535
this.defaultFormat = defaultFormat;
3636
this.restClient = axios.create(this.getAxiosConfig(baseUrl));
3737
}

packages/modelserver-client/src/model-server-client.spec.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,19 @@ describe('tests for ModelServerClient', () => {
3838
expect(axios.defaults.baseURL).to.be.equal(baseUrl);
3939
});
4040

41+
it('test createSubscriptionPath without trailing slash', () => {
42+
client = new ModelServerClient();
43+
client.initialize(baseUrl);
44+
const subscriptionPath = client['createSubscriptionPath']('foo', {});
45+
expect(subscriptionPath).to.be.equal(`ws://localhost:8081/api/v1/subscribe?modeluri=foo`);
46+
});
47+
it('test createSubscriptionPath with trailing slash', () => {
48+
client = new ModelServerClient();
49+
client.initialize(`${baseUrl}/`);
50+
const subscriptionPath = client['createSubscriptionPath']('foo', {});
51+
expect(subscriptionPath).to.be.equal(`ws://localhost:8081/api/v1/subscribe?modeluri=foo`);
52+
});
53+
4154
describe('test requests', () => {
4255
it('getAll', done => {
4356
client.getAll();

packages/modelserver-client/src/model-server-client.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class ModelServerClient implements ModelServerClientApiV1 {
2929
protected defaultFormat = 'json';
3030

3131
initialize(baseUrl: string): void | Promise<void> {
32-
this._baseUrl = baseUrl;
32+
this._baseUrl = baseUrl.endsWith('/') ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl;
3333
this.restClient = axios.create(this.getAxisConfig(baseUrl));
3434
}
3535

@@ -218,7 +218,7 @@ export class ModelServerClient implements ModelServerClientApiV1 {
218218
}
219219
Object.entries(paramOptions).forEach(entry => queryParams.append(entry[0], entry[1]));
220220
queryParams.delete('errorWhenUnsuccessful');
221-
return `${this._baseUrl}${ModelServerPaths.SUBSCRIPTION}?${queryParams.toString()}`.replace(/^(http|https):\/\//i, 'ws://');
221+
return `${this._baseUrl}/${ModelServerPaths.SUBSCRIPTION}?${queryParams.toString()}`.replace(/^(http|https):\/\//i, 'ws://');
222222
}
223223

224224
protected doSubscribe(listener: SubscriptionListener, modelUri: string, path: string): void {

0 commit comments

Comments
 (0)