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

Commit 500b756

Browse files
author
Marc Scheib
committed
feat(http): rework frontend project structure
The http client globally uses the base URL from the selected environment in the app configuration. The selected environment is based on the running location of the app and can be changed centrally. --- src/configuration/fetch-config.js | 33 +++++++++++++++++++++++++++++++ src/configuration/legendsrising.js | 17 ---------------- src/view-models/app.js | 7 +++++-- 3 files changed, 38 insertions(+), 19 deletions(-)
1 parent df2ff63 commit 500b756

File tree

3 files changed

+38
-19
lines changed

3 files changed

+38
-19
lines changed

src/configuration/fetch-config.js

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import {HttpClient} from 'aurelia-fetch-client';
2+
import {inject} from 'aurelia-framework';
3+
import {Configure} from 'aurelia-configuration';
4+
5+
@inject(HttpClient, Configure)
6+
export default class {
7+
constructor(httpClient, configure) {
8+
this.httpClient = httpClient;
9+
this.configuration = configure;
10+
}
11+
12+
configure() {
13+
this.httpClient.configure(config => {
14+
config
15+
.withDefaults({
16+
headers: {
17+
'Accept': 'application/json'
18+
}
19+
})
20+
.withBaseUrl(this.configuration.get('api.endpoint'))
21+
.withInterceptor({
22+
request(request) {
23+
console.log(`Requesting ${request.method} ${request.url}`);
24+
return request; // you can return a modified Request, or you can short-circuit the request by returning a Response
25+
},
26+
response(response) {
27+
console.log(`Received ${response.status} ${response.url}`);
28+
return response; // you can return a modified Response
29+
}
30+
});
31+
});
32+
}
33+
}

src/configuration/legendsrising.js

-17
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import {ViewLocator, LogManager} from 'aurelia-framework';
22
import {ConsoleAppender} from 'aurelia-logging-console';
3-
import {HttpClient} from 'aurelia-fetch-client';
4-
import {Configure} from 'aurelia-configuration';
53
import authConfig from './auth-config';
64

75
LogManager.addAppender(new ConsoleAppender());
@@ -35,20 +33,5 @@ export function configure(aurelia) {
3533
baseConfig.configure(authConfig);
3634
});
3735

38-
aurelia.container.registerInstance(HttpClient, new HttpClient().configure(config => {
39-
config
40-
.withBaseUrl('http://lr.local/api')//configure.get('api.endpoint'))
41-
.withInterceptor({
42-
request(request) {
43-
console.log(`Requesting ${request.method} ${request.url}`);
44-
return request; // you can return a modified Request, or you can short-circuit the request by returning a Response
45-
},
46-
response(response) {
47-
console.log(`Received ${response.status} ${response.url}`);
48-
return response; // you can return a modified Response
49-
}
50-
});
51-
}));
52-
5336
aurelia.start().then(a => a.setRoot('view-models/app', document.body));
5437
}

src/view-models/app.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,22 @@ import {inject} from 'aurelia-framework';
22
import {Router} from 'aurelia-router';
33
import {FetchConfig} from 'aurelia-auth';
44
import AppRouterConfig from '../configuration/router-config';
5+
import AppFetchConfig from '../configuration/fetch-config';
56
import 'jquery';
67
import 'twbs/bootstrap';
78

8-
@inject(Router, FetchConfig, AppRouterConfig)
9+
@inject(Router, FetchConfig, AppRouterConfig, AppFetchConfig)
910
export class App {
10-
constructor(router, fetchConfig, appRouterConfig) {
11+
constructor(router, fetchConfig, appRouterConfig, appFetchConfig) {
1112
this.router = router;
1213
this.fetchConfig = fetchConfig;
1314
this.appRouterConfig = appRouterConfig;
15+
this.appFetchConfig = appFetchConfig;
1416
}
1517

1618
activate() {
1719
this.fetchConfig.configure();
1820
this.appRouterConfig.configure();
21+
this.appFetchConfig.configure();
1922
}
2023
}

0 commit comments

Comments
 (0)