示例#1
0
 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))) { }
     }
 }
示例#2
0
        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));
        }
示例#5
0
        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;
        }
示例#6
0
 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;
 }
示例#7
0
 internal AppSettingInfo([NotNull] UriString uri, [CanBeNull] string value, IImmutableSession metadata)
     : base(uri, metadata.Set(Use <IResourceNamespace> .Namespace, x => x.Format, MimeType.Text))
 {
     _value = value;
 }