Esempio n. 1
0
        /// <summary>
        /// Gets a page of the latest comments for a video.
        /// </summary>
        public override async Task <GetVideoCommentsResponse> GetVideoComments(GetVideoCommentsRequest request, ServerCallContext context)
        {
            PreparedStatement prepared;
            IStatement        bound;
            Guid?startingCommentId = request.StartingCommentId?.ToGuid();
            Guid videoId           = request.VideoId.ToGuid();

            if (startingCommentId == null)
            {
                prepared = await _statementCache.GetOrAddAsync(
                    "SELECT commentid, userid, comment, dateOf(commentid) AS comment_timestamp FROM comments_by_video WHERE videoid = ?");

                bound = prepared.Bind(videoId);
            }
            else
            {
                prepared = await _statementCache.GetOrAddAsync(
                    "SELECT commentid, userid, comment, dateOf(commentid) AS comment_timestamp FROM comments_by_video WHERE videoid = ? AND commentid <= ?");

                bound = prepared.Bind(videoId, startingCommentId);
            }

            bound.SetAutoPage(false)
            .SetPageSize(request.PageSize);

            if (string.IsNullOrEmpty(request.PagingState) == false)
            {
                bound.SetPagingState(Convert.FromBase64String(request.PagingState));
            }

            RowSet rows = await _session.ExecuteAsync(bound).ConfigureAwait(false);

            var response = new GetVideoCommentsResponse
            {
                VideoId     = request.VideoId,
                PagingState = rows.PagingState != null?Convert.ToBase64String(rows.PagingState) : ""
            };

            response.Comments.Add(rows.Select(MapRowToVideoComment));
            return(response);
        }
Esempio n. 2
0
 /// <summary>
 /// Возвращает список комментариев к видеозаписи с расширенной информацией.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void GetCommentsExtended(Action <VKResponse <VKCommentExtendedObject> > callback, GetVideoCommentsRequest request)
 {
     request.IsExtended = true;
     VKHelper.GetResponse <VKCommentExtendedObject>(request, callback);
 }
Esempio n. 3
0
 /// <summary>
 /// Возвращает список комментариев к видеозаписи.
 /// </summary>
 /// <param name="callback">Метод, который будет вызван по завершении операции.
 /// Параметр является результатом запроса.</param>
 /// <param name="request">Объект запроса с необходимыми параметрами.</param>
 public void GetComments(Action <VKResponse <VKCountedItemsObject <VKComment> > > callback, GetVideoCommentsRequest request)
 {
     VKHelper.GetResponse <VKCountedItemsObject <VKComment> >(request, callback);
 }