[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