Ejemplo n.º 1
0
        private static async Task <GetAuthorPlagiarismsResponse> GetAuthorPlagiarismsAsync(UserExerciseSubmission submission)
        {
            RemoveOldValuesFromCache();
            var userId   = Guid.Parse(submission.UserId);
            var taskId   = submission.SlideId;
            var cacheKey = Tuple.Create(userId, taskId);

            if (plagiarismsCache.TryGetValue(cacheKey, out var cachedValue))
            {
                return(cachedValue.Item2);
            }

            var value = await antiPlagiarismClient.GetAuthorPlagiarismsAsync(new GetAuthorPlagiarismsParameters
            {
                AuthorId = userId,
                TaskId   = taskId
            }).ConfigureAwait(false);

            plagiarismsCache.AddOrUpdate(cacheKey, key => Tuple.Create(DateTime.Now, value), (key, old) => Tuple.Create(DateTime.Now, value));
            return(value);
        }