public static async Task SetItemAsync(this IResourceProvider resources, UriString uri, object value, IImmutableSession metadata) { if (metadata.Get(Use <IResourceNamespace> .Namespace, x => x.Type) == typeof(string)) { using (var stream = await ResourceHelper.SerializeTextAsync((string)value)) using (await resources.PutAsync(uri, stream, metadata.Set(Use <IResourceNamespace> .Namespace, x => x.Format, MimeType.Text))) { } } else { using (var stream = await ResourceHelper.SerializeBinaryAsync(value)) using (await resources.PutAsync(uri, stream, metadata.Set(Use <IResourceNamespace> .Namespace, x => x.Format, MimeType.Binary))) { } } }
protected override async Task <IResourceInfo> PostAsyncInternal(UriString uri, Stream value, IImmutableSession metadata) { uri = BaseUri + uri; var(response, mediaType) = await InvokeAsync(uri, HttpMethod.Post, metadata.Set(Use <IHttpNamespace> .Namespace, x => x.Content, value)); return(new HttpResourceInfo(uri, response, new MimeType(mediaType))); }
public static IImmutableSession WithReferences(this IImmutableSession context, IEnumerable <IExpression> expressions) { var registrations = context .Get(Expression.Namespace, x => x.References, ImmutableDictionary <SoftString, IExpression> .Empty) .SetItems(expressions.Select(e => new KeyValuePair <SoftString, IExpression>($"R.{e.Name.ToString()}", e))); return(context.Set(Expression.Namespace, x => x.References, registrations)); }
public static IImmutableSession WithComparer(this IImmutableSession context, string name, IEqualityComparer <object> comparer) { var comparers = context .Get(Expression.Namespace, x => x.Comparers, ImmutableDictionary <SoftString, IEqualityComparer <object> > .Empty) .SetItem(name, comparer); return(context.Set(Expression.Namespace, x => x.Comparers, comparers)); }
protected ResourceProvider([NotNull] IEnumerable <SoftString> schemes, IImmutableSession metadata) { if (schemes == null) { throw new ArgumentNullException(nameof(schemes)); } //var metadata = Metadata.Empty; // If this is a decorator then the decorated resource-provider already has set this. if (metadata.Get(Use <IProviderNamespace> .Namespace, x => x.DefaultName) is var df && !df) { metadata = metadata.Set(Use <IProviderNamespace> .Namespace, x => x.DefaultName, GetType().ToPrettyString()); } if ((Schemes = schemes.ToImmutableHashSet()).Empty()) { throw new ArgumentException(paramName: nameof(metadata), message: $"{nameof(schemes)} must not be empty."); } Metadata = metadata; }
internal SqlServerResourceInfo([NotNull] UriString uri, [CanBeNull] object value, IImmutableSession metadata) : base(uri, metadata.Set(Use <IResourceNamespace> .Namespace, x => x.Format, value is string?MimeType.Text: MimeType.Binary)) { _value = value; }
internal AppSettingInfo([NotNull] UriString uri, [CanBeNull] string value, IImmutableSession metadata) : base(uri, metadata.Set(Use <IResourceNamespace> .Namespace, x => x.Format, MimeType.Text)) { _value = value; }