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 { RateType } from './rate-type.type'; import { AuthService } from '../../core'; import { AuthHttp, RestExtractor, RestPagination, RestService, ResultList, UserService } from '../../shared'; import { Video } from './video.model'; @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), 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), 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), label: data[languageKey] }); }); }); } getVideo(id: string): Observable