import { catchError } from 'rxjs/operators' import { HttpClient } from '@angular/common/http' import { Injectable } from '@angular/core' import { Observable } from 'rxjs' import { VideoImport } from '../../../../../shared' import { environment } from '../../../environments/environment' import { RestExtractor, RestService } from '../rest' import { VideoImportCreate } from '../../../../../shared/models/videos/video-import-create.model' import { objectToFormData } from '@app/shared/misc/utils' import { VideoUpdate } from '../../../../../shared/models/videos' @Injectable() export class VideoImportService { private static BASE_VIDEO_IMPORT_URL = environment.apiUrl + '/api/v1/videos/imports/' constructor ( private authHttp: HttpClient, private restService: RestService, private restExtractor: RestExtractor ) {} importVideo (targetUrl: string, video: VideoUpdate): Observable { const url = VideoImportService.BASE_VIDEO_IMPORT_URL const language = video.language || null const licence = video.licence || null const category = video.category || null const description = video.description || null const support = video.support || null const scheduleUpdate = video.scheduleUpdate || null const body: VideoImportCreate = { targetUrl, name: video.name, category, licence, language, support, description, channelId: video.channelId, privacy: video.privacy, tags: video.tags, nsfw: video.nsfw, waitTranscoding: video.waitTranscoding, commentsEnabled: video.commentsEnabled, thumbnailfile: video.thumbnailfile, previewfile: video.previewfile, scheduleUpdate } const data = objectToFormData(body) return this.authHttp.post(url, data) .pipe(catchError(res => this.restExtractor.handleError(res))) } }