[ARVADOS-WORKBENCH2] created: 1.1.4-576-g5a7f3f5
Git user
git at public.curoverse.com
Thu Aug 9 10:44:42 EDT 2018
at 5a7f3f56fc39ab231982435d29b8f15e819748fe (commit)
commit 5a7f3f56fc39ab231982435d29b8f15e819748fe
Author: Michal Klobukowski <michal.klobukowski at contractors.roche.com>
Date: Thu Aug 9 16:44:26 2018 +0200
Add webdavClient to ServiceRepository
Feature #13990
Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski at contractors.roche.com>
diff --git a/.env b/.env
index ed397c5..de1444c 100644
--- a/.env
+++ b/.env
@@ -4,4 +4,5 @@
REACT_APP_ARVADOS_CONFIG_URL=/config.json
REACT_APP_ARVADOS_API_HOST=qr1hi.arvadosapi.com
+REACT_APP_ARVADOS_KEEP_WEB_HOST=download.qr1hi.arvadosapi.com
HTTPS=true
\ No newline at end of file
diff --git a/src/common/config.ts b/src/common/config.ts
index 775b114..5391927 100644
--- a/src/common/config.ts
+++ b/src/common/config.ts
@@ -8,6 +8,7 @@ export const CONFIG_URL = process.env.REACT_APP_ARVADOS_CONFIG_URL || "/config.j
export interface Config {
API_HOST: string;
+ KEEP_WEB_HOST: string;
}
export const fetchConfig = () => {
@@ -24,7 +25,8 @@ const mapConfig = (config: Config): Config => ({
});
const getDefaultConfig = (): Config => ({
- API_HOST: process.env.REACT_APP_ARVADOS_API_HOST || ""
+ API_HOST: process.env.REACT_APP_ARVADOS_API_HOST || "",
+ KEEP_WEB_HOST: process.env.REACT_APP_ARVADOS_KEEP_WEB_HOST || ""
});
const addProtocol = (url: string) => `${window.location.protocol}//${url}`;
diff --git a/src/index.tsx b/src/index.tsx
index aac275f..49cb064 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -38,12 +38,12 @@ addMenuActionSet(ContextMenuKind.COLLECTION, collectionActionSet);
fetchConfig()
.then(config => {
const history = createBrowserHistory();
- const services = createServices(config.API_HOST);
+ const services = createServices(config);
const store = configureStore(history, services);
store.dispatch(initAuth());
store.dispatch(getProjectList(services.authService.getUuid()));
-
+ console.log(services.webdavClient);
const TokenComponent = (props: any) => <ApiToken authService={services.authService} {...props}/>;
const WorkbenchComponent = (props: any) => <Workbench authService={services.authService} {...props}/>;
diff --git a/src/services/services.ts b/src/services/services.ts
index e77b5d3..d2a8ce4 100644
--- a/src/services/services.ts
+++ b/src/services/services.ts
@@ -7,32 +7,24 @@ import { GroupsService } from "./groups-service/groups-service";
import { ProjectService } from "./project-service/project-service";
import { LinkService } from "./link-service/link-service";
import { FavoriteService } from "./favorite-service/favorite-service";
-import { AxiosInstance } from "axios";
import { CollectionService } from "./collection-service/collection-service";
import { TagService } from "./tag-service/tag-service";
import Axios from "axios";
import { CollectionFilesService } from "./collection-files-service/collection-files-service";
import { KeepService } from "./keep-service/keep-service";
+import { WebDAV } from "../common/webdav";
+import { Config } from "../common/config";
-export interface ServiceRepository {
- apiClient: AxiosInstance;
+export type ServiceRepository = ReturnType<typeof createServices>;
- authService: AuthService;
- keepService: KeepService;
- groupsService: GroupsService;
- projectService: ProjectService;
- linkService: LinkService;
- favoriteService: FavoriteService;
- tagService: TagService;
- collectionService: CollectionService;
- collectionFilesService: CollectionFilesService;
-}
-
-export const createServices = (baseUrl: string): ServiceRepository => {
+export const createServices = (config: Config) => {
const apiClient = Axios.create();
- apiClient.defaults.baseURL = `${baseUrl}/arvados/v1`;
+ apiClient.defaults.baseURL = `${config.API_HOST}/arvados/v1`;
+
+ const webdavClient = WebDAV.create();
+ webdavClient.defaults.baseUrl = config.KEEP_WEB_HOST;
- const authService = new AuthService(apiClient, baseUrl);
+ const authService = new AuthService(apiClient, config.API_HOST);
const keepService = new KeepService(apiClient);
const groupsService = new GroupsService(apiClient);
const projectService = new ProjectService(apiClient);
@@ -44,6 +36,7 @@ export const createServices = (baseUrl: string): ServiceRepository => {
return {
apiClient,
+ webdavClient,
authService,
keepService,
groupsService,
@@ -55,3 +48,4 @@ export const createServices = (baseUrl: string): ServiceRepository => {
collectionFilesService
};
};
+
diff --git a/src/store/auth/auth-action.ts b/src/store/auth/auth-action.ts
index 6b81c31..8bf4c3f 100644
--- a/src/store/auth/auth-action.ts
+++ b/src/store/auth/auth-action.ts
@@ -17,12 +17,15 @@ export const authActions = unionize({
USER_DETAILS_REQUEST: {},
USER_DETAILS_SUCCESS: ofType<User>()
}, {
- tag: 'type',
- value: 'payload'
-});
+ tag: 'type',
+ value: 'payload'
+ });
-function setAuthorizationHeader(client: AxiosInstance, token: string) {
- client.defaults.headers.common = {
+function setAuthorizationHeader(services: ServiceRepository, token: string) {
+ services.apiClient.defaults.headers.common = {
+ Authorization: `OAuth2 ${token}`
+ };
+ services.webdavClient.defaults.headers = {
Authorization: `OAuth2 ${token}`
};
}
@@ -35,7 +38,7 @@ export const initAuth = () => (dispatch: Dispatch, getState: () => RootState, se
const user = services.authService.getUser();
const token = services.authService.getApiToken();
if (token) {
- setAuthorizationHeader(services.apiClient, token);
+ setAuthorizationHeader(services, token);
}
if (token && user) {
dispatch(authActions.INIT({ user, token }));
@@ -44,7 +47,7 @@ export const initAuth = () => (dispatch: Dispatch, getState: () => RootState, se
export const saveApiToken = (token: string) => (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
services.authService.saveApiToken(token);
- setAuthorizationHeader(services.apiClient, token);
+ setAuthorizationHeader(services, token);
dispatch(authActions.SAVE_API_TOKEN(token));
};
diff --git a/src/store/auth/auth-actions.test.ts b/src/store/auth/auth-actions.test.ts
index 1ded88e..2b28cd0 100644
--- a/src/store/auth/auth-actions.test.ts
+++ b/src/store/auth/auth-actions.test.ts
@@ -23,9 +23,9 @@ describe('auth-actions', () => {
let store: RootStore;
beforeEach(() => {
- store = configureStore(createBrowserHistory(), createServices("/arvados/v1"));
+ store = configureStore(createBrowserHistory(), createServices({ API_HOST: "/arvados/v1", KEEP_WEB_HOST: "" }));
localStorage.clear();
- reducer = authReducer(createServices("/arvados/v1"));
+ reducer = authReducer(createServices({ API_HOST: "/arvados/v1", KEEP_WEB_HOST: "" }));
});
it('should initialise state with user and api token from local storage', () => {
diff --git a/src/store/auth/auth-reducer.test.ts b/src/store/auth/auth-reducer.test.ts
index 0e05263..28cfbb2 100644
--- a/src/store/auth/auth-reducer.test.ts
+++ b/src/store/auth/auth-reducer.test.ts
@@ -13,7 +13,7 @@ describe('auth-reducer', () => {
beforeAll(() => {
localStorage.clear();
- reducer = authReducer(createServices("/arvados/v1"));
+ reducer = authReducer(createServices({ API_HOST: "/arvados/v1", KEEP_WEB_HOST: "" }));
});
it('should correctly initialise state', () => {
@@ -25,7 +25,7 @@ describe('auth-reducer', () => {
uuid: "uuid",
ownerUuid: "ownerUuid"
};
- const state = reducer(initialState, authActions.INIT({user, token: "token"}));
+ const state = reducer(initialState, authActions.INIT({ user, token: "token" }));
expect(state).toEqual({
apiToken: "token",
user
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list