public async Task Set(ArtifactPayload artifactPayload, CancellationToken token = default) { artifactPayload.VerifyNotNull(nameof(artifactPayload)); ArtifactId artifactId = new ArtifactId(artifactPayload.Id); _logger.LogTrace($"{nameof(Set)}: Writing {artifactId}"); await _dataLakeStore.Write(RealPath(artifactId), artifactPayload.ToBytes(), true, token); }
public async Task Set(ArtifactPayload articlePayload, CancellationToken token = default) { articlePayload.VerifyNotNull(nameof(articlePayload)); _logger.LogTrace($"{nameof(Set)}: Id={articlePayload.Id}"); HttpResponseMessage message = await _httpClient.PostAsJsonAsync("api/artifact", articlePayload, token); message.EnsureSuccessStatusCode(); }
public async Task Set(ArtifactPayload artifactPayload, CancellationToken token) { artifactPayload.VerifyNotNull(nameof(artifactPayload)) .VerifyAssert(x => artifactPayload.Id.ToLower() == ActorKey.Value, $"Id mismatch - id={artifactPayload.Id.ToLower()}, actorKey={ActorKey}"); _logger.LogTrace($"{nameof(Set)}: Writing {artifactPayload.Id}"); await _storage.Set(artifactPayload, token); _cache.Set(artifactPayload); }
public async Task <IActionResult> Post([FromBody] ArtifactPayload record) { if (!record.IsValid()) { return(BadRequest()); } await _acticleStoreService.Set(record); return(Ok()); }
public async Task Set(ArtifactPayload record, CancellationToken token = default) { record.VerifyNotNull(nameof(record)); var actorKey = new ActorKey(new ArtifactId(record.Id).ToString()); _logger.LogTrace($"{nameof(Set)}: actorKey={actorKey}, id={record.Id}"); IArtifactPayloadActor actor = _actorHost !.GetActor <IArtifactPayloadActor>(actorKey); await actor.Set(record, token); }
public void GivenPayloadSource_ShouldRoundTrip() { ArtifactId artifactId = new ArtifactId("namespace/file.ext"); string payload = "This is the payload"; byte[] payloadBytes = Encoding.UTF8.GetBytes(payload); ArtifactPayload artifactPayload = payloadBytes.ToArtifactPayload(artifactId); byte[] fromPayload = artifactPayload.ToBytes(); Enumerable.SequenceEqual(payloadBytes, fromPayload).Should().BeTrue(); }
public static bool IsValid(this ArtifactPayload subject) { try { subject.Verify(); return(true); } catch (ArgumentException) { return(false); } }
public static void Verify(this ArtifactPayload subject) { subject.VerifyNotNull(nameof(subject)); subject.Id.VerifyNotEmpty(nameof(subject.Id)); subject.PackagePayload.VerifyAssert(x => x?.Length > 0, $"{nameof(subject.PackagePayload)} is required"); subject.Hash.VerifyNotEmpty($"{nameof(subject.Hash)} is required"); byte[] packagePayload = Convert.FromBase64String(subject.PackagePayload); byte[] hash = MD5.Create().ComputeHash(packagePayload); Convert.ToBase64String(hash).VerifyAssert(x => x == subject.Hash, "Hash verification failed"); }
public static ArtifactPayload ToArtifactPayload(this byte[] subject, ArtifactId articleId) { subject.VerifyAssert(x => x?.Length > 0, $"{nameof(subject)} is empty"); articleId.VerifyNotNull(nameof(articleId)); var payload = new ArtifactPayload { Id = (string)articleId, PackagePayload = Convert.ToBase64String(subject), Hash = Convert.ToBase64String(MD5.Create().ComputeHash(subject)), }; payload.Verify(); return(payload); }
public async Task GivenData_WhenRoundTrip_ShouldMatch(string id) { TestWebsiteHost host = TestApplication.GetHost(); const string payload = "This is a test"; ArtifactId artifactId = new ArtifactId(id); byte[] bytes = Encoding.UTF8.GetBytes(payload); ArtifactPayload articlePayload = bytes.ToArtifactPayload(artifactId); await host.ArtifactClient.Set(articlePayload); ArtifactPayload?readPayload = await host.ArtifactClient.Get(artifactId); readPayload.Should().NotBeNull(); (articlePayload == readPayload).Should().BeTrue(); string payloadText = Encoding.UTF8.GetString(readPayload !.ToBytes()); payloadText.Should().Be(payload); var search = new QueryParameter { Namespace = artifactId.Namespace }; BatchSet <string> searchList = await host.ArtifactClient.List(search).ReadNext(); searchList.Should().NotBeNull(); searchList.Records.Any(x => x.StartsWith(artifactId.Path)).Should().BeTrue(); (await host.ArtifactClient.Delete(artifactId)).Should().BeTrue(); searchList = await host.ArtifactClient.List(search).ReadNext(); searchList.Should().NotBeNull(); searchList.Records.Any(x => x.StartsWith(artifactId.Path)).Should().BeFalse(); }
public static byte[] ToBytes(this ArtifactPayload subject) { subject.Verify(); return(Convert.FromBase64String(subject.PackagePayload)); }