mirror of https://github.com/portainer/portainer
60 lines
1.8 KiB
JavaScript
60 lines
1.8 KiB
JavaScript
import angular from 'angular';
|
|
|
|
angular.module('portainer.agent').factory('VolumeBrowserService', VolumeBrowserServiceFactory);
|
|
|
|
function VolumeBrowserServiceFactory(StateManager, Browse, BrowseVersion1, API_ENDPOINT_ENDPOINTS, EndpointProvider, Upload) {
|
|
return {
|
|
ls,
|
|
get,
|
|
delete: deletePath,
|
|
rename,
|
|
upload,
|
|
};
|
|
|
|
function getAgentApiVersion() {
|
|
const state = StateManager.getState();
|
|
return state.endpoint.agentApiVersion;
|
|
}
|
|
|
|
function getBrowseService() {
|
|
const agentVersion = getAgentApiVersion();
|
|
return agentVersion > 1 ? Browse : BrowseVersion1;
|
|
}
|
|
|
|
function ls(volumeId, path) {
|
|
return getBrowseService().ls({ volumeID: volumeId, path, version: getAgentApiVersion() }).$promise;
|
|
}
|
|
|
|
function get(volumeId, path) {
|
|
return getBrowseService().get({ volumeID: volumeId, path, version: getAgentApiVersion() }).$promise;
|
|
}
|
|
|
|
function deletePath(volumeId, path) {
|
|
return getBrowseService().delete({ volumeID: volumeId, path, version: getAgentApiVersion() }).$promise;
|
|
}
|
|
|
|
function rename(volumeId, path, newPath) {
|
|
const payload = {
|
|
CurrentFilePath: path,
|
|
NewFilePath: newPath,
|
|
};
|
|
return getBrowseService().rename({ volumeID: volumeId, version: getAgentApiVersion() }, payload).$promise;
|
|
}
|
|
|
|
function upload(path, file, volumeId, onProgress) {
|
|
const agentVersion = StateManager.getAgentApiVersion();
|
|
if (agentVersion < 2) {
|
|
throw new Error('upload is not supported on this agent version');
|
|
}
|
|
|
|
const url = `${API_ENDPOINT_ENDPOINTS}/${EndpointProvider.endpointID()}/docker/v${agentVersion}/browse/put?volumeID=${volumeId}`;
|
|
|
|
return new Promise((resolve, reject) => {
|
|
Upload.upload({
|
|
url: url,
|
|
data: { file, Path: path },
|
|
}).then(resolve, reject, onProgress);
|
|
});
|
|
}
|
|
}
|