import { Injectable } from '@angular/core';
import { Http } 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 { AuthHttp, AuthService, RestExtractor, RestPagination, RestService, ResultList } from '../../shared';
+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()
.catch((res) => this.restExtractor.handleError(res));
}
+ reportVideo(id: string, reason: string) {
+ const url = VideoService.BASE_VIDEO_URL + id + '/abuse';
+ const body = {
+ reason
+ };
+
+ return this.authHttp.post(url, body)
+ .map(this.restExtractor.extractDataBool)
+ .catch((res) => this.restExtractor.handleError(res));
+ }
+
+ setVideoLike(id: string) {
+ return this.setVideoRate(id, 'like');
+ }
+
+ setVideoDislike(id: string) {
+ return this.setVideoRate(id, 'dislike');
+ }
+
+ getUserVideoRating(id: string) {
+ const url = UserService.BASE_USERS_URL + '/me/videos/' + id + '/rating';
+
+ return this.authHttp.get(url)
+ .map(this.restExtractor.extractDataGet)
+ .catch((res) => this.restExtractor.handleError(res));
+ }
+
+ private setVideoRate(id: string, rateType: RateType) {
+ const url = VideoService.BASE_VIDEO_URL + id + '/rate';
+ const body = {
+ rating: rateType
+ };
+
+ return this.authHttp.put(url, body)
+ .map(this.restExtractor.extractDataBool)
+ .catch((res) => this.restExtractor.handleError(res));
+ }
+
private extractVideos(result: ResultList) {
const videosJson = result.data;
const totalVideos = result.total;