import { Injectable } from '@angular/core'; import { HttpClient, HttpParams } from '@angular/common/http'; import { Observable } from 'rxjs/Observable'; import { map } from 'rxjs/operators'; import { Video } from '../models/video'; import { Comment } from '../models/comment'; @Injectable() export class CommentsService { constructor(private http: HttpClient) { } findVideos( filter = '', sortBy = 'recorded_at', sortOrder = 'desc', pageNumber = 0, pageSize = 20): Observable { return this.http.get('/twitch-logs/api/videos', { observe: 'response', params: new HttpParams() .set('filter', filter) .set('sort_by', sortBy) .set('sort_order', sortOrder) .set('page_number', pageNumber.toString()) .set('page_size', pageSize.toString()) }).pipe( map((res: any) => ({ videos: res.body, totalCount: parseInt(res.headers.get('X-Total-Count')) })) ); } findComments(videoID, filter = '', sortBy = 'offset', sortOrder = 'asc', pageNumber = 0, pageSize = 20): Observable { return this.http.get('/twitch-logs/api/videos/' + videoID + '/comments', { observe: 'response', params: new HttpParams() .set('filter', filter) .set('sort_by', sortBy) .set('sort_order', sortOrder) .set('page_number', pageNumber.toString()) .set('page_size', pageSize.toString()) }).pipe( map((res: any) => ({ comments: res.body, totalCount: parseInt(res.headers.get('X-Total-Count')) })) ); } }