public string ToJson() { string jsonResponse; var provider = DirectProvider.GetCurrent(); var serializer = JsonSerializer.Create(Settings); var converter = provider.GetDefaultDateTimeConverter(); if (converter != null) { // Default DateTime converter is added last therefore will not override the // one provided by the caller. serializer.Converters.Add(converter); } using (var stringWriter = new StringWriter()) { using (var jsonWriter = new JsonTextWriter(stringWriter)) { #if DEBUG jsonWriter.Formatting = Formatting.Indented; #else jsonWriter.Formatting = provider.Debug ? Formatting.Indented : Formatting.None; #endif serializer.Serialize(jsonWriter, this); jsonResponse = stringWriter.ToString(); } } return jsonResponse; }
internal virtual void WriteResponse(DirectRequest directRequest, HttpResponseBase response) { var method = DirectProvider.GetCurrent().GetMethod(directRequest.Action, directRequest.Method); DirectResponse directResponse; if (method.EventName != null) { directResponse = new DirectEventResponse(directRequest) { Name = method.EventName, Data = Data, Settings = Settings }; } else { directResponse = new DirectDataResponse(directRequest) { Result = Data, Settings = Settings }; } directResponse.Write(response, ContentType, ContentEncoding); }
public static DirectProvider GetCurrent() { if (_current == null) { lock (_lockObj) { if (_current == null) { _current = new DirectProvider(); _current.Configure(); } } } return _current; }
public static DirectProvider GetCurrent() { if (_current == null) { lock (_lockObj) { if (_current == null) { _current = new DirectProvider(); _current.Configure(); } } } return(_current); }
private void WriteContent(HttpResponseBase response) { if (!String.IsNullOrEmpty(ContentType)) { response.ContentType = ContentType; } else { response.ContentType = "application/json"; } if (ContentEncoding != null) { response.ContentEncoding = ContentEncoding; } if (Data != null) { if (Data is String) { // write strings directly to avoid double quotes around them caused by JsonSerializer response.Write(Data); } else { using (JsonWriter writer = new JsonTextWriter(response.Output)) { var provider = DirectProvider.GetCurrent(); var serializer = JsonSerializer.Create(Settings); var converter = provider.GetDefaultDateTimeConverter(); if (converter != null) { serializer.Converters.Add(converter); } #if DEBUG writer.Formatting = Formatting.Indented; #else writer.Formatting = provider.Debug ? Formatting.Indented : Formatting.None; #endif serializer.Serialize(writer, Data); } } } }
internal static DirectProvider GetCurrentProvider() { if (_currentProvider == null) { lock (_syncLock) { if (_currentProvider == null) { _currentProvider = new DirectProvider { Name = DirectConfig.ProviderName, Namespace = DirectConfig.Namespace, Buffer = DirectConfig.Buffer }; } } } return _currentProvider; }
public DirectValueProvider(DirectRequest directRequest, ParameterDescriptor[] parameterDescriptors) { int paramCount = parameterDescriptors.Length; Object[] data = directRequest.Data; DirectMethod directMethod = DirectProvider.GetCurrent().GetMethod(directRequest.Action, directRequest.Method); bool usesNamedArguments = (directMethod != null && directMethod.UsesNamedArguments); if (paramCount > 0) { if (usesNamedArguments) // named arguments. match params by name { var dataObj = data[0] as JObject; for (int i = 0; i < paramCount; i++) { string pName = parameterDescriptors[i].ParameterName; Type pType = parameterDescriptors[i].ParameterType; JToken value = dataObj != null?dataObj.SelectToken(pName) : null; object rawValue = null; if (value != null && value.Type != JTokenType.Null && value.Type != JTokenType.Undefined) { Type vType = value.GetType(); if (vType == typeof(JObject) && pType != typeof(JObject) || vType == typeof(JArray) && pType != typeof(JArray)) { rawValue = JsonConvert.DeserializeObject(value.ToString(), pType); } else { rawValue = Convert.ChangeType(value.ToString(), pType); } } string attemptedValue = Convert.ToString(rawValue, CultureInfo.InvariantCulture); _values.Add(pName, new ValueProviderResult(rawValue, attemptedValue, CultureInfo.InvariantCulture)); } } else { for (int i = 0; i < parameterDescriptors.Length; i++) { object rawValue = data[i]; if (rawValue != null) { Type vType = rawValue.GetType(); Type pType = parameterDescriptors[i].ParameterType; // Deserialize only objects and arrays and let MVC handle everything else. if (vType == typeof(JObject) && pType != typeof(JObject) || vType == typeof(JArray) && pType != typeof(JArray)) { rawValue = JsonConvert.DeserializeObject(rawValue.ToString(), pType); } } string attemptedValue = Convert.ToString(rawValue, CultureInfo.InvariantCulture); _values.Add(parameterDescriptors[i].ParameterName, new ValueProviderResult(rawValue, attemptedValue, CultureInfo.InvariantCulture)); } } } }