export class WebDAV {
- defaults: WebDAVDefaults = {
+ private defaults: WebDAVDefaults = {
baseURL: '',
- headers: {},
+ headers: {
+ 'Cache-Control': 'must-revalidate'
+ },
};
constructor(config?: Partial<WebDAVDefaults>, private createRequest = () => new XMLHttpRequest()) {
if (config) {
- this.defaults = { ...this.defaults, ...config };
+ this.defaults = {
+ ...this.defaults,
+ ...config,
+ headers: {
+ ...this.defaults.headers,
+ ...config.headers
+ },
+ };
}
}
+ getBaseUrl = (): string => this.defaults.baseURL;
+ setAuthorization = (token?) => this.defaults.headers.Authorization = token;
+
propfind = (url: string, config: WebDAVRequestConfig = {}) =>
this.request({
...config, url,
const { classes, onItemMenuOpen, onUploadDataClick, isWritable, dispatch, collectionPanelFiles, collectionPanel } = props;
const { apiToken, config } = props.auth;
- const webdavClient = new WebDAV();
- webdavClient.defaults.baseURL = config.keepWebServiceUrl;
- webdavClient.defaults.headers = {
- Authorization: `Bearer ${apiToken}`
- };
+ const webdavClient = new WebDAV({
+ baseURL: config.keepWebServiceUrl,
+ headers: {
+ Authorization: `Bearer ${apiToken}`
+ },
+ });
const webDAVRequestConfig: WebDAVRequestConfig = {
headers: {
}
extendFileURL = (file: CollectionDirectory | CollectionFile) => {
- const baseUrl = this.webdavClient.defaults.baseURL.endsWith('/')
- ? this.webdavClient.defaults.baseURL.slice(0, -1)
- : this.webdavClient.defaults.baseURL;
+ const baseUrl = this.webdavClient.getBaseUrl().endsWith('/')
+ ? this.webdavClient.getBaseUrl().slice(0, -1)
+ : this.webdavClient.getBaseUrl();
const apiToken = this.authService.getApiToken();
const encodedApiToken = apiToken ? encodeURI(apiToken) : '';
const userApiToken = `/t=${encodedApiToken}/`;
services.apiClient.defaults.headers.common = {
Authorization: `Bearer ${token}`
};
- services.webdavClient.defaults.headers = {
- Authorization: `Bearer ${token}`
- };
+ services.webdavClient.setAuthorization(`Bearer ${token}`);
}
export function removeAuthorizationHeader(services: ServiceRepository) {
delete services.apiClient.defaults.headers.common;
- delete services.webdavClient.defaults.headers.common;
+ services.webdavClient.setAuthorization(undefined);
}
export const createServices = (config: Config, actions: ApiActions, useApiClient?: AxiosInstance) => {
const apiClient = useApiClient || Axios.create({ headers: {} });
apiClient.defaults.baseURL = config.baseUrl;
- const webdavClient = new WebDAV();
- webdavClient.defaults.baseURL = config.keepWebServiceUrl;
+ const webdavClient = new WebDAV({
+ baseURL: config.keepWebServiceUrl
+ });
const apiClientAuthorizationService = new ApiClientAuthorizationService(apiClient, actions);
const authorizedKeysService = new AuthorizedKeysService(apiClient, actions);