import { catchError, map } from 'rxjs/operators'
import { HttpClient, HttpParams } from '@angular/common/http'
import { Injectable } from '@angular/core'
-import { lineFeedToHtml } from '@app/shared/misc/utils'
+import { objectLineFeedToHtml } from '@app/shared/misc/utils'
import { Observable } from 'rxjs'
-import { ResultList } from '../../../../../../shared/models'
+import { ResultList, FeedFormat } from '../../../../../../shared/models'
import {
VideoComment as VideoCommentServerModel,
VideoCommentCreate,
@Injectable()
export class VideoCommentService {
private static BASE_VIDEO_URL = environment.apiUrl + '/api/v1/videos/'
+ private static BASE_FEEDS_URL = environment.apiUrl + '/feeds/video-comments.'
constructor (
private authHttp: HttpClient,
addCommentThread (videoId: number | string, comment: VideoCommentCreate) {
const url = VideoCommentService.BASE_VIDEO_URL + videoId + '/comment-threads'
- const normalizedComment = lineFeedToHtml(comment, 'text')
+ const normalizedComment = objectLineFeedToHtml(comment, 'text')
- return this.authHttp.post(url, normalizedComment)
+ return this.authHttp.post<{ comment: VideoCommentServerModel }>(url, normalizedComment)
.pipe(
- map(data => this.extractVideoComment(data['comment'])),
+ map(data => this.extractVideoComment(data.comment)),
catchError(err => this.restExtractor.handleError(err))
)
}
addCommentReply (videoId: number | string, inReplyToCommentId: number, comment: VideoCommentCreate) {
const url = VideoCommentService.BASE_VIDEO_URL + videoId + '/comments/' + inReplyToCommentId
- const normalizedComment = lineFeedToHtml(comment, 'text')
+ const normalizedComment = objectLineFeedToHtml(comment, 'text')
- return this.authHttp.post(url, normalizedComment)
+ return this.authHttp.post<{ comment: VideoCommentServerModel }>(url, normalizedComment)
.pipe(
- map(data => this.extractVideoComment(data[ 'comment' ])),
+ map(data => this.extractVideoComment(data.comment)),
catchError(err => this.restExtractor.handleError(err))
)
}
)
}
+ getVideoCommentsFeeds (videoUUID?: string) {
+ const feeds = [
+ {
+ format: FeedFormat.RSS,
+ label: 'rss 2.0',
+ url: VideoCommentService.BASE_FEEDS_URL + FeedFormat.RSS.toLowerCase()
+ },
+ {
+ format: FeedFormat.ATOM,
+ label: 'atom 1.0',
+ url: VideoCommentService.BASE_FEEDS_URL + FeedFormat.ATOM.toLowerCase()
+ },
+ {
+ format: FeedFormat.JSON,
+ label: 'json 1.0',
+ url: VideoCommentService.BASE_FEEDS_URL + FeedFormat.JSON.toLowerCase()
+ }
+ ]
+
+ if (videoUUID !== undefined) {
+ for (const feed of feeds) {
+ feed.url += '?videoId=' + videoUUID
+ }
+ }
+
+ return feeds
+ }
+
private extractVideoComment (videoComment: VideoCommentServerModel) {
return new VideoComment(videoComment)
}