/// <summary> /// Formats the token as a string /// </summary> public string Format(Token token, object value = null) { switch (token.Type) { case TokenType.String: return(token.Value); case TokenType.Parameter: if (value == null && _parameters == null) { return(string.Empty); } if (value == null && token.Position < _parameters.Length) { value = _parameters[token.Position]; value = FormatterEntry.FormatParameter(value); } if (token.NativeFormat != null) { return(string.Format(token.NativeFormat, value)); } else { return(value == null ? string.Empty : value.ToString()); } } return(string.Empty); }
public static async ValueTask StoreAsync(string key, OutputCacheEntry value, TimeSpan duration, IOutputCacheStore store, CancellationToken cancellationToken) { ArgumentNullException.ThrowIfNull(value); ArgumentNullException.ThrowIfNull(value.Body); ArgumentNullException.ThrowIfNull(value.Headers); var formatterEntry = new FormatterEntry { StatusCode = value.StatusCode, Created = value.Created, Tags = value.Tags, Body = value.Body.Segments }; if (value.Headers != null) { formatterEntry.Headers = new(); foreach (var header in value.Headers) { formatterEntry.Headers.TryAdd(header.Key, header.Value.ToArray()); } } using var bufferStream = new MemoryStream(); JsonSerializer.Serialize(bufferStream, formatterEntry, FormatterEntrySerializerContext.Default.FormatterEntry); await store.SetAsync(key, bufferStream.ToArray(), value.Tags ?? Array.Empty <string>(), duration, cancellationToken); }