public Task <GetContentLocationsResponse> GetContentLocationsAsync(GetContentLocationsRequest request) { return(ExecuteAsync(request, async context => { Result <IReadOnlyList <ContentLocationEntry> > result = await _store.GetBulkAsync(context, request.Hashes); return result.Select(entries => new GetContentLocationsResponse() { Entries = entries }); })); }
public void GetContentLocationsRequestRoundtrip() { var model = MetadataServiceSerializer.TypeModel; var obj = new GetContentLocationsRequest() { ContextId = "test", Hashes = new List <ShortHash>() { ContentHash.Random(), }, }; var deserialized = Roundtrip(model, obj); Assert.Equal(obj.Hashes, deserialized.Hashes); // Equality seems to be defined wrong for the record type somehow. However, the deserialization does result // in the same objects. // Assert.Equal(obj, deserialized); }
/// <inheritdoc /> public Task <GetContentLocationsResponse> GetContentLocationsAsync(GetContentLocationsRequest request, CallContext callContext = default) { return(ExecuteAsync(request, callContext, context => { return _store.GetBulkAsync(context, request.Hashes) .AsAsync(entries => new GetContentLocationsResponse() { Entries = entries }); }, extraEndMessage: r => { if (!r.Succeeded) { var csv = string.Join(",", request.Hashes); return $"Hashes=[{csv}]"; } else { var entries = r.Value.Entries; var csv = string.Join(",", request.Hashes.Zip(entries, (hash, entry) => $"{hash}:{entry.Locations.Count}")); return $"Hashes=[{csv}]"; } })); }