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)); }
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()); }
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}"), });
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); } }
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); }
public async Task <bool> Delete(ArticleId id, CancellationToken token = default) { id.VerifyNotNull(nameof(id)); return(await _dataLakeStore.Delete(ToFullFileName((string)id), token : token)); }
public static bool IsArticleArea(this ArticleId articleId, ArticleArea articleArea) => articleId .VerifyNotNull(nameof(articleId)) .GetArticleArea() == articleArea;
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();