コード例 #1
0
        public async Task <bool> Delete(ArticleId id, CancellationToken token = default)
        {
            id.VerifyNotNull(nameof(id));

            var actorKey = new ActorKey((string)id);

            _logger.LogTrace($"{nameof(Delete)}: actorKey={actorKey}, id={id.Id}");

            IArticlePackageActor actor = _actorHost !.GetActor <IArticlePackageActor>(actorKey);

            return(await actor.Delete(token));
        }
コード例 #2
0
        public async Task <ArticlePayload?> Get(ArticleId id, CancellationToken token = default)
        {
            id.VerifyNotNull(nameof(id));

            byte[] fileData = await _dataLakeStore.Read(ToFullFileName((string)id), token : token);

            if (fileData == null || fileData.Length == 0)
            {
                return(null);
            }

            return(fileData.ToArticlePayload());
        }
コード例 #3
0
        public async Task <bool> Delete(ArticleId id, CancellationToken token = default)
        {
            id.VerifyNotNull(nameof(id));
            _logger.LogTrace($"{nameof(Delete)}: Id={id}");

            HttpResponseMessage response = await _httpClient.DeleteAsync($"api/article/{id.ToBase64()}", token);

            return(response.StatusCode switch
            {
                HttpStatusCode.OK => true,
                HttpStatusCode.NotFound => false,

                _ => throw new HttpRequestException($"Invalid http code={response.StatusCode}"),
            });
コード例 #4
0
        public async Task <ArticlePayload?> Get(ArticleId id, CancellationToken token = default)
        {
            id.VerifyNotNull(nameof(id));
            _logger.LogTrace($"{nameof(Get)}: Id={id}");

            try
            {
                return(await _httpClient.GetFromJsonAsync <ArticlePayload?>($"api/article/{id.ToBase64()}", token));
            }
            catch (HttpRequestException ex)
            {
                _logger.LogError(ex, $"{nameof(Get)}: id={id} failed");
                return(null);
            }
        }
コード例 #5
0
        public static ArticlePayload ToArticlePayload(this byte[] subject, ArticleId articleId)
        {
            subject.VerifyAssert(x => x?.Length > 0, $"{nameof(subject)} is empty");
            articleId.VerifyNotNull(nameof(articleId));

            var payload = new ArticlePayload
            {
                Id             = (string)articleId,
                PackagePayload = Convert.ToBase64String(subject),
                Hash           = Convert.ToBase64String(MD5.Create().ComputeHash(subject)),
            };

            payload.Verify();
            return(payload);
        }
コード例 #6
0
        public async Task <bool> Delete(ArticleId id, CancellationToken token = default)
        {
            id.VerifyNotNull(nameof(id));

            return(await _dataLakeStore.Delete(ToFullFileName((string)id), token : token));
        }
コード例 #7
0
 public static bool IsArticleArea(this ArticleId articleId, ArticleArea articleArea) => articleId
 .VerifyNotNull(nameof(articleId))
 .GetArticleArea() == articleArea;
コード例 #8
0
 public static ArticleArea GetArticleArea(this ArticleId articleId) => articleId
 .VerifyNotNull(nameof(articleId))
 .Id.Split('/', StringSplitOptions.RemoveEmptyEntries)
 .FirstOrDefault()
 .VerifyNotEmpty($"Id {articleId.Id} does not contain area (ex: area/subject)")
 .ToArticleArea();