/********************************************************************************
 * Copyright (C) 2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/ import { ContainerModule } from '@theia/core/shared/inversify' ; import { BackendApplicationContribution } from '@theia/core/lib/node/backend-application' ; import { FileDownloadEndpoint } from './file-download-endpoint' ; import { FileDownloadHandler , SingleFileDownloadHandler , MultiFileDownloadHandler , DownloadLinkHandler } from './file-download-handler' ; import { DirectoryArchiver } from './directory-archiver' ; import { FileDownloadCache } from './file-download-cache' ; export default new ContainerModule ( bind => { bind ( FileDownloadEndpoint ) . toSelf ( ) . inSingletonScope ( ) ; bind ( BackendApplicationContribution ) . toService ( FileDownloadEndpoint ) ; bind ( FileDownloadCache ) . toSelf ( ) . inSingletonScope ( ) ; bind ( FileDownloadHandler ) . to ( SingleFileDownloadHandler ) . inSingletonScope ( ) . whenTargetNamed ( FileDownloadHandler . SINGLE ) ; bind ( FileDownloadHandler ) . to ( MultiFileDownloadHandler ) . inSingletonScope ( ) . whenTargetNamed ( FileDownloadHandler . MULTI ) ; bind ( FileDownloadHandler ) . to ( DownloadLinkHandler ) . inSingletonScope ( ) . whenTargetNamed ( FileDownloadHandler . DOWNLOAD_LINK ) ; bind ( DirectoryArchiver ) . toSelf ( ) . inSingletonScope ( ) ; } ) ;