import { Injectable } from '@angular/core' import { Http, Headers, RequestOptions } from '@angular/http' import { Observable } from 'rxjs/Observable' import 'rxjs/add/operator/catch' import 'rxjs/add/operator/map' import { Search } from '../../shared' import { SortField } from './sort-field.type' import { AuthService } from '../../core' import { AuthHttp, RestExtractor, RestPagination, RestService, ResultList, UserService } from '../../shared' import { Video } from './video.model' import { VideoRateType } from '../../../../../shared' @Injectable() export class VideoService { private static BASE_VIDEO_URL = API_URL + '/api/v1/videos/' videoCategories: Array<{ id: number, label: string }> = [] videoLicences: Array<{ id: number, label: string }> = [] videoLanguages: Array<{ id: number, label: string }> = [] constructor ( private authService: AuthService, private authHttp: AuthHttp, private http: Http, private restExtractor: RestExtractor, private restService: RestService ) {} loadVideoCategories () { return this.http.get(VideoService.BASE_VIDEO_URL + 'categories') .map(this.restExtractor.extractDataGet) .subscribe(data => { Object.keys(data).forEach(categoryKey => { this.videoCategories.push({ id: parseInt(categoryKey, 10), label: data[categoryKey] }) }) }) } loadVideoLicences () { return this.http.get(VideoService.BASE_VIDEO_URL + 'licences') .map(this.restExtractor.extractDataGet) .subscribe(data => { Object.keys(data).forEach(licenceKey => { this.videoLicences.push({ id: parseInt(licenceKey, 10), label: data[licenceKey] }) }) }) } loadVideoLanguages () { return this.http.get(VideoService.BASE_VIDEO_URL + 'languages') .map(this.restExtractor.extractDataGet) .subscribe(data => { Object.keys(data).forEach(languageKey => { this.videoLanguages.push({ id: parseInt(languageKey, 10), label: data[languageKey] }) }) }) } getVideo (id: string): Observable