예제 #1
0
        protected OperationResponse(HttpResponseMessage message, ITypeSerializerRegistry typeSerializerRegistry)
        {
            Message = message ?? throw new ArgumentNullException(nameof(message));
            TypeSerializerRegistry = typeSerializerRegistry ?? throw new ArgumentNullException(nameof(typeSerializerRegistry));

            // ReSharper disable once VirtualMemberCallInConstructor
            ParseHeaders();
        }
예제 #2
0
        public static HttpContent Serialize <T>(this ITypeSerializerRegistry typeSerializerRegistry,
                                                T value, string mediaType)
        {
            if (!typeSerializerRegistry.TryGet(mediaType, out ITypeSerializer? typeSerializer))
            {
                throw new UnknownMediaTypeException(mediaType);
            }

            return(typeSerializer.Serialize(value, mediaType));
        }
예제 #3
0
        public static ITypeSerializerRegistry Add(this ITypeSerializerRegistry typeSerializerRegistry,
                                                  IEnumerable <string> mediaTypes, ITypeSerializer typeSerializer)
        {
            foreach (string mediaType in mediaTypes)
            {
                typeSerializerRegistry = typeSerializerRegistry.Add(mediaType, typeSerializer);
            }

            return(typeSerializerRegistry);
        }
        public static ITypeSerializerRegistry Add <T>(this ITypeSerializerRegistry typeSerializerRegistry,
                                                      IEnumerable <string> mediaTypes)
            where T : ITypeSerializer
        {
            ConstructorInfo?constructor = typeof(T).GetConstructor(new[] { typeof(ITypeSerializerRegistry) });

            ITypeSerializer serializer = (ITypeSerializer?)constructor?.Invoke(new object[] { typeSerializerRegistry }) ??
                                         Activator.CreateInstance <T>();

            return(typeSerializerRegistry.Add(mediaTypes, serializer));
        }
예제 #5
0
        public static ValueTask <T> DeserializeAsync <T>(this ITypeSerializerRegistry typeSerializerRegistry,
                                                         HttpContent content)
        {
            string mediaType = content.Headers.ContentType.MediaType;

            if (!typeSerializerRegistry.TryGet(mediaType, out ITypeSerializer? typeSerializer))
            {
                throw new UnknownMediaTypeException(mediaType, content);
            }

            return(typeSerializer.DeserializeAsync <T>(content));
        }
예제 #6
0
 public RegistryConstructorSerializer(ITypeSerializerRegistry registry)
 {
     Registry = registry;
 }
예제 #7
0
 protected UnknownResponse(HttpResponseMessage message, ITypeSerializerRegistry typeSerializerRegistry)
     : base(message, typeSerializerRegistry)
 {
 }
 public MultipartFormDataSerializer(ITypeSerializerRegistry typeSerializerRegistry)
 {
     _typeSerializerRegistry = typeSerializerRegistry ?? throw new ArgumentNullException(nameof(typeSerializerRegistry));
 }