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); }
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); }
/// <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; }
/// <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)); }
public DocumentCollectionJsonConverter(IDocumentTypeResolver documentTypeResolver) { _documentTypeResolver = documentTypeResolver; }
public DocumentSerializer(IDocumentTypeResolver documentTypeResolver) { _documentTypeResolver = documentTypeResolver; _settings = EnvelopeSerializer.CreateSettings(documentTypeResolver); _jsonSerializer = JsonSerializer.Create(_settings); }
public DocumentContainerJsonConverter(IDocumentTypeResolver documentTypeResolver) { _documentTypeResolver = documentTypeResolver; }