示例#1
0
 public async Task <Option <IEnumerable <Repository>, RepoCounterApiException> > GetUserRepositoriesAsync(string username)
 {
     return(await _memoryCache.GetOrCreateAsync(username, async (entry) =>
     {
         entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromDays(1);
         return await _innerRepositoryService.GetUserRepositoriesAsync(username);
     }));
 }
        public async Task <Option <UserStatistics, AllegroApiException> > GetRepositoryStatisticsAsync(string username)
        {
            var optionTaskResult = await _repositoryStore.GetUserRepositoriesAsync(username);

            return(optionTaskResult.Match(
                       some: repos =>
            {
                var repositories = repos.ToList();
                if (repositories.Any())
                {
                    return Option.Some <UserStatistics, AllegroApiException>(
                        TransformStatistics(username, repositories));
                }
                else
                {
                    return Option.None <UserStatistics, AllegroApiException>(
                        new AllegroApiException(ErrorCodes.UserHasNoRepositories));
                }
            },
                       none: exception => Option.None <UserStatistics, AllegroApiException>(exception)
                       ));
        }