Example #1
0
 public static IDocumentTypeResolver WithBlipDocuments(this IDocumentTypeResolver documentTypeResolver)
 {
     documentTypeResolver = documentTypeResolver.WithMessagingDocuments();
     documentTypeResolver.RegisterAssemblyDocuments(typeof(Takenet.Iris.Messaging.Contents.Attendance).Assembly);
     documentTypeResolver.RegisterAssemblyDocuments(typeof(DocumentTypeResolverExtensions).Assembly);
     return(documentTypeResolver);
 }
        public EnvelopeSerializer(IDocumentTypeResolver documentTypeResolver)
        {
            if (documentTypeResolver == null)
            {
                throw new ArgumentNullException(nameof(documentTypeResolver));
            }

            Settings   = CreateSettings(documentTypeResolver);
            Serializer = JsonSerializer.Create(Settings);
        }
Example #3
0
        public static Document ToDocument(
            this JToken jToken,
            MediaType mediaType,
            JsonSerializer serializer,
            IDocumentTypeResolver documentTypeResolver)
        {
            Document document;

            if (documentTypeResolver.TryGetTypeForMediaType(mediaType, out var documentType))
            {
                try
                {
                    if (mediaType.IsJson)
                    {
                        document = (Document)serializer.Deserialize(jToken.CreateReader(), documentType);
                    }
                    else if (jToken != null)
                    {
                        var parseFunc = TypeUtilEx.GetParseFuncForType(documentType);
                        document = (Document)parseFunc(jToken.ToString());
                    }
                    else
                    {
                        document = (Document)Activator.CreateInstance(documentType);
                    }

                    return(document);
                }
                catch (JsonException) { }
                catch (ArgumentException) { }
                catch (TypeLoadException)
                {
                    // Ignore deserialization exceptions and return a Plain/Json document instead
                }
            }

            if (mediaType.IsJson)
            {
                if (jToken is IDictionary <string, JToken> contentJsonObject)
                {
                    var contentDictionary = contentJsonObject.ToDictionary(k => k.Key, v => v.Value.GetTokenValue());
                    document = new JsonDocument(contentDictionary, mediaType);
                }
                else
                {
                    throw new ArgumentException("The property is not a JSON");
                }
            }
            else
            {
                document = new PlainDocument(jToken.ToString(), mediaType);
            }
            return(document);
        }
 public static IDocumentTypeResolver WithBlipDocuments(this IDocumentTypeResolver documentTypeResolver)
 {
     documentTypeResolver = documentTypeResolver.WithMessagingDocuments();
     documentTypeResolver.RegisterAssemblyDocuments(typeof(Attendance).Assembly);
     documentTypeResolver.RegisterAssemblyDocuments(typeof(Intention).Assembly);
     documentTypeResolver.RegisterAssemblyDocuments(typeof(Attendant).Assembly);
     documentTypeResolver.RegisterAssemblyDocuments(typeof(DetailMedia).Assembly);
     documentTypeResolver.RegisterAssemblyDocuments(typeof(Application).Assembly);
     documentTypeResolver.RegisterAssemblyDocuments(typeof(DocumentTypeResolverExtensions).Assembly);
     return(documentTypeResolver);
 }
Example #5
0
        /// <summary>
        /// Builds an ISender using the given auth key and custom documents previously set
        /// </summary>
        /// <param name="authKey"></param>
        /// <param name="documentTypeResolver"></param>
        /// <returns></returns>
        public ISender BuildBlipHttpClient(string authKey, IDocumentTypeResolver documentTypeResolver)
        {
            var envelopeSerializer = new EnvelopeSerializer(documentTypeResolver);

            var client = new RestClient("https://msging.net/")
            {
                JsonSerializerSettings = envelopeSerializer.Settings
            }.For <IBlipHttpClient>();

            client.Authorization = new AuthenticationHeaderValue("Key", authKey);
            return(new BlipHttpClient(client));
        }
 public BlipHttpClientAsync(
     string authorizationKey,
     IInternalLogger logger,
     IDocumentTypeResolver typeResolver)
 {
     _envelopeSerializer = new EnvelopeSerializer(typeResolver);
     _authorizationKey   = authorizationKey;
     _logger             = logger;
     _client.BaseAddress = new Uri("https://msging.net");
     _client.DefaultRequestHeaders.Accept.Clear();
     _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
     _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Key", authorizationKey);
 }
        /// <summary>
        /// RegisterDocument all documents in the specified assembly.
        /// </summary>
        /// <param name="typeResolver"></param>
        /// <param name="assembly"></param>
        public static void RegisterAssemblyDocuments(this IDocumentTypeResolver typeResolver, Assembly assembly)
        {
            if (assembly == null)
            {
                throw new ArgumentNullException(nameof(assembly));
            }

            var documentTypes = assembly
                                .DefinedTypes
                                .Where(t => !t.IsAbstract && typeof(Document).GetTypeInfo().IsAssignableFrom(t));

            foreach (var type in documentTypes)
            {
                typeResolver.RegisterDocument(type.AsType());
            }
        }
        internal static JsonSerializerSettings CreateSettings(IDocumentTypeResolver documentTypeResolver)
        {
            var converters = new List <JsonConverter>
            {
                new StringEnumConverter {
                    CamelCaseText = false
                },
                new IdentityJsonConverter(),
                new NodeJsonConverter(),
                new LimeUriJsonConverter(),
                new MediaTypeJsonConverter(),
                new SessionJsonConverter(),
                new AuthenticationJsonConverter(),
                new DocumentContainerJsonConverter(documentTypeResolver),
                new DocumentCollectionJsonConverter(documentTypeResolver),
                new IsoDateTimeConverter
                {
                    DateTimeFormat = "yyyy-MM-ddTHH:mm:ss.fffZ",
                    DateTimeStyles = DateTimeStyles.AdjustToUniversal
                }
            };

            converters.Add(new DocumentJsonConverter(
                               new JsonSerializerSettings
            {
                NullValueHandling     = NullValueHandling.Ignore,
                ReferenceLoopHandling = ReferenceLoopHandling.Serialize,
                Converters            = converters.ToList()
            }));

            return(new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore,
                ReferenceLoopHandling = ReferenceLoopHandling.Serialize,
                Converters = converters
            });
        }
 public BlipClientFactory(IInternalLogger logger, IDocumentTypeResolver typeResolver)
 {
     _logger       = logger;
     _typeResolver = typeResolver;
 }
Example #10
0
 /// <summary>
 /// Registers all documents in the Lime.Messaging assembly.
 /// </summary>
 /// <param name="documentTypeResolver"></param>
 /// <returns></returns>
 public static IDocumentTypeResolver WithMessagingDocuments(this IDocumentTypeResolver documentTypeResolver)
 {
     documentTypeResolver.RegisterAssemblyDocuments(typeof(DocumentTypeResolverExtensions).GetTypeInfo().Assembly);
     return(documentTypeResolver);
 }
 /// <summary>
 /// RegisterDocument the specified document type.
 /// </summary>
 /// <typeparam name="TDocument"></typeparam>
 /// <param name="typeResolver"></param>
 public static void RegisterDocument <TDocument>(this IDocumentTypeResolver typeResolver)
 {
     typeResolver.RegisterDocument(typeof(TDocument));
 }
Example #12
0
 public DocumentCollectionJsonConverter(IDocumentTypeResolver documentTypeResolver)
 {
     _documentTypeResolver = documentTypeResolver;
 }
Example #13
0
 public DocumentSerializer(IDocumentTypeResolver documentTypeResolver)
 {
     _documentTypeResolver = documentTypeResolver;
     _settings             = EnvelopeSerializer.CreateSettings(documentTypeResolver);
     _jsonSerializer       = JsonSerializer.Create(_settings);
 }
Example #14
0
 public DocumentContainerJsonConverter(IDocumentTypeResolver documentTypeResolver)
 {
     _documentTypeResolver = documentTypeResolver;
 }