import BaseEntityService from '../../common/services/BaseEntityService/BaseEntityService'; import FileServiceInterface from './FileServiceInterface'; import FileClientInterface from '../clients/FileClientInterface'; import RequestPromise from '../../common/DTO/RequestPromise'; import HTTPRequest from '../../Request/entity/HTTPRequest'; import FileFactoryInterface from '../factories/FileFactoryInterface'; import DigitalFile from '../entity/File'; export default abstract class FileService extends BaseEntityService implements FileServiceInterface { constructor(client: FileClientInterface, transformer: FileFactoryInterface) { super(client, transformer); } protected uploadFile(file: File, instance: DigitalFile): RequestPromise { let formData = new FormData(); formData.append('file', file, file.name); formData.append('data', JSON.stringify(this.transformer.transformToPayload(instance))); const httpRequest = new HTTPRequest(); httpRequest.data = formData; const requestPromise = (this.client).upload(httpRequest); return new RequestPromise( requestPromise.requestId, new Promise(resolve => { requestPromise.promise.then(response => { resolve(instance.id) }); }) ); } }