Beispiel #1
0
 public static void WriteJson(this Game.Planet self, JsonTextWriter writer)
 {
     writer.WriteStartObject();
     writer.WritePropertyName("id");
     writer.WriteValue(self.id);
     if (self.rocketUsed == null)
     {
         writer.WritePropertyName("rocketUsed");
         writer.WriteNull();
     }
     else
     {
         writer.WritePropertyName("rocketUsed");
         self.rocketUsed.WriteJson(writer);
     }
     if (self.config == null)
     {
         writer.WritePropertyName("config");
         writer.WriteNull();
     }
     else
     {
         writer.WritePropertyName("config");
         self.config.WriteJson(writer);
     }
     writer.WritePropertyName("rotationPhase");
     writer.WriteValue(self.rotationPhase);
     writer.WritePropertyName("hp");
     writer.WriteValue(self.hp);
     writer.WritePropertyName("position");
     self.position.WriteJson(writer);
     writer.WritePropertyName("currentRocketCooldown");
     writer.WriteValue(self.currentRocketCooldown);
     writer.WriteEndObject();
 }
Beispiel #2
0
        public async void EvaluateJavaScript(string js, string cb)
        {
            var        sb = new StringBuilder();
            var        sw = new StringWriter(sb);
            JsonWriter writer;

            try {
                writer = new JsonTextWriter(sw)
                {
                    Formatting = Formatting.None
                };
                var mf       = _view.CurrentBrowser.GetMainFrame();
                var response = await mf.EvaluateScriptAsync(js, TimeSpan.FromMilliseconds(500).ToString());

                if (response.Success && response.Result is IJavascriptCallback)
                {
                    response = await((IJavascriptCallback)response.Result).ExecuteAsync("");
                }
                writer.WriteStartObject();
                writer.WritePropertyName("success");
                writer.WriteValue(response.Success);
                writer.WritePropertyName("message");
                writer.WriteValue(response.Message);
                writer.WritePropertyName("error");
                writer.WriteNull();
                writer.WritePropertyName("callbackName");
                writer.WriteValue(cb);
                writer.WritePropertyName("result");

                if (response.Success && response.Result != null)
                {
                    writer.WriteRawValue(JsonConvert.SerializeObject(response.Result, Formatting.None));
                }
                else
                {
                    writer.WriteNull();
                }
                writer.WriteEndObject();
            }
            catch (Exception e) {
                Console.WriteLine(@"EvaluateJavaScript JS error: " + e.Message);
                writer = new JsonTextWriter(sw)
                {
                    Formatting = Formatting.None
                };
                writer.WriteStartObject();
                writer.WritePropertyName("message");
                writer.WriteNull();
                writer.WritePropertyName("error");
                writer.WriteValue(e.Message);
                writer.WritePropertyName("result");
                writer.WriteNull();
                writer.WritePropertyName("success");
                writer.WriteValue(false);
                writer.WritePropertyName("guid");
                writer.WriteValue(cb);
                writer.WriteEndObject();
            }
            Context.DispatchEvent(CefView.AsCallbackEvent, sb.ToString());
        }
Beispiel #3
0
        public void ToJSON(JsonTextWriter jwriter)
        {
            jwriter.WriteStartArray();

            foreach (DictionaryEntry item in this.Dictionary)
            {
                jwriter.WriteStartObject();

                jwriter.WriteMember("key");
                jwriter.WriteString(item.Key.ToString());

                //write the qualified type name of the value
                //write the value
                if (item.Value == null)
                {
                    jwriter.WriteMember("type");
                    jwriter.WriteNull();
                    jwriter.WriteMember("value");
                    jwriter.WriteNull();
                }
                else
                {
                    TypeConverter typeConverter = TypeDescriptor.GetConverter(item.Value.GetType());
                    jwriter.WriteMember("type");
                    jwriter.WriteString(item.Value.GetType().AssemblyQualifiedName);
                    jwriter.WriteMember("value");
                    jwriter.WriteString(typeConverter.ConvertToString(item.Value));
                }

                jwriter.WriteEndObject();
            }

            jwriter.WriteEndArray();
        }
Beispiel #4
0
        public void WriteReadWrite()
        {
            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            using (JsonWriter jsonWriter = new JsonTextWriter(sw))
            {
                jsonWriter.WriteStartArray();
                jsonWriter.WriteValue(true);

                jsonWriter.WriteStartObject();
                jsonWriter.WritePropertyName("integer");
                jsonWriter.WriteValue(99);
                jsonWriter.WritePropertyName("string");
                jsonWriter.WriteValue("how now brown cow?");
                jsonWriter.WritePropertyName("array");

                jsonWriter.WriteStartArray();
                for (int i = 0; i < 5; i++)
                {
                    jsonWriter.WriteValue(i);
                }

                jsonWriter.WriteStartObject();
                jsonWriter.WritePropertyName("decimal");
                jsonWriter.WriteValue(990.00990099m);
                jsonWriter.WriteEndObject();

                jsonWriter.WriteValue(5);
                jsonWriter.WriteEndArray();

                jsonWriter.WriteEndObject();

                jsonWriter.WriteValue("This is a string.");
                jsonWriter.WriteNull();
                jsonWriter.WriteNull();
                jsonWriter.WriteEndArray();
            }

            string json = sb.ToString();

            JsonSerializer serializer = new JsonSerializer();

            object jsonObject = serializer.Deserialize(new JsonTextReader(new StringReader(json)));

            sb = new StringBuilder();
            sw = new StringWriter(sb);

            using (JsonWriter jsonWriter = new JsonTextWriter(sw))
            {
                serializer.Serialize(sw, jsonObject);
            }

            Assert.AreEqual(json, sb.ToString());
        }
Beispiel #5
0
 public void Visit(NodeReference r)
 {
     if (r.IsNull)
     {
         writer.WriteNull();
     }
     else
     {
         writer.WriteValue(r.Index);
     }
 }
Beispiel #6
0
        public void WriteJson(JsonTextWriter generator, WritingOptions writingOptions)
        {
            generator.WriteStartObject();

            generator.WriteField("tribeVersion", TribeVersion);
            generator.WritePropertyName("tribe");
            if (Tribe != null)
            {
                Tribe.WriteJson(generator, writingOptions);
            }
            else
            {
                generator.WriteNull();
            }

            if (Objects.Count > (Tribe == null ? 0 : 1))
            {
                generator.WriteArrayFieldStart("objects");
                foreach (GameObject gameObject in Objects.Where(o => o != Tribe))
                {
                    gameObject.WriteJson(generator, writingOptions);
                }

                generator.WriteEndArray();
            }

            generator.WriteEndObject();
        }
Beispiel #7
0
 private void WriteJsonMessage(LogLevel logLevel, string logName, int eventId, string message, Exception exception, IEnumerable <KeyValuePair <string, object> > state)
 {
     using (var sw = new StringWriter())
         using (var jtw = new JsonTextWriter(sw))
         {
             jtw.WriteStartObject();
             jtw.WritePropertyName("time");
             jtw.WriteValue(DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"));
             jtw.WritePropertyName("level");
             jtw.WriteValue(GetLogLevelString(logLevel));
             jtw.WritePropertyName("cat");
             jtw.WriteValue(logName);
             jtw.WritePropertyName("eventID");
             jtw.WriteValue(eventId);
             if (_isIncludeScope)
             {
                 jtw.WritePropertyName("scope");
                 jtw.WriteValue(GetScopeInformation());
             }
             if (string.IsNullOrEmpty(message) == false)
             {
                 jtw.WritePropertyName("msg");
                 jtw.WriteValue(message);
             }
             if (exception != null)
             {
                 jtw.WritePropertyName("ex");
                 jtw.WriteValue(exception.ToString());
             }
             if (state != null)
             {
                 foreach (var item in state)
                 {
                     if (item.Key == "{OriginalFormat}")
                     {
                         continue;
                     }
                     jtw.WritePropertyName(item.Key);
                     if (item.Value != null)
                     {
                         try
                         {
                             jtw.WriteValue(item.Value);
                         }
                         catch (Exception)
                         {
                             jtw.WriteValue(item.Value.ToString());
                         }
                     }
                     else
                     {
                         jtw.WriteNull();
                     }
                 }
             }
             jtw.WriteEndObject();
             sw.WriteLine();
             _messageQueue.EnqueueMessage(sw.ToString());
         }
 }
Beispiel #8
0
        public override string ToString()
        {
            Dictionary <String, byte[]> binaries = new Dictionary <String, byte[]>();

            // create textual data
            using (MemoryStream stream = new MemoryStream())
            {
                using (TextWriter text = new StreamWriter(stream))
                {
                    using (JsonWriter generator = new JsonTextWriter(text))
                    {
                        generator.WriteStartObject();
                        foreach (KeyValuePair <String, IValue> entry in values)
                        {
                            generator.WritePropertyName(entry.Key);
                            if (entry.Value == null)
                            {
                                generator.WriteNull();
                            }
                            else
                            {
                                Object id = System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(this);
                                entry.Value.ToJson(null, generator, id, entry.Key, false, binaries);
                            }
                        }
                        generator.WriteEndObject();
                    }
                }
                return(System.Text.Encoding.UTF8.GetString(stream.ToArray()));
            }
        }
Beispiel #9
0
        public ResponseBody(int returnCode, string errorMessage, string response, SimpleRESTfulReturn type)
        {
            StringBuilder responseBuilder = new StringBuilder();

            using (JsonWriter writer = new JsonTextWriter(new StringWriter(responseBuilder)))
            {
                writer.Formatting = Formatting.Indented;
                writer.WriteStartObject();
                writer.WritePropertyName("ReturnCode");
                writer.WriteValue(returnCode);
                writer.WritePropertyName("ErrorMessage");
                writer.WriteValue(errorMessage);
                writer.WritePropertyName("Response");
                if (type == SimpleRESTfulReturn.Empty)
                {
                    writer.WriteNull();
                }
                else if (type == SimpleRESTfulReturn.Json)
                {
                    writer.WriteRawValue(response);
                }
                else if (type == SimpleRESTfulReturn.PlainText)
                {
                    writer.WriteValue(response);
                }
                else
                {
                    writer.WriteValue(response);
                }
                writer.WriteEndObject();
                writer.Flush();
            }
            Value = responseBuilder.ToString();
        }
Beispiel #10
0
        private void WriteEmptyKeys(CultureInfo sourceCulture, string fullFilePath, string key)
        {
            var values = key.Split('.').Take(2).ToList();

            var(ns, loc) = Tuple.Create(values[0], values[1]);
            var sourceFilePath = $"{_options.Value.ResourcesPath}/{ns}.{sourceCulture.Name}.json";

            using (var str = new FileStream(sourceFilePath, FileMode.Open, FileAccess.Read, FileShare.Read))
                using (var outStream = File.Create(fullFilePath))
                    using (var sWriter = new StreamWriter(outStream))
                        using (var writer = new JsonTextWriter(sWriter))
                            using (var sReader = new StreamReader(str))
                                using (var reader = new JsonTextReader(sReader))
                                {
                                    writer.Formatting = Formatting.Indented;
                                    var jobj = JObject.Load(reader);
                                    writer.WriteStartObject();
                                    foreach (var property in jobj.Properties())
                                    {
                                        writer.WritePropertyName(property.Name);
                                        writer.WriteNull();
                                    }
                                    writer.WriteEndObject();
                                }
        }
Beispiel #11
0
 public static void WriteJson(this Game.RocketInstance self, JsonTextWriter writer)
 {
     writer.WriteStartObject();
     if (self.config == null)
     {
         writer.WritePropertyName("config");
         writer.WriteNull();
     }
     else
     {
         writer.WritePropertyName("config");
         self.config.WriteJson(writer);
     }
     writer.WritePropertyName("position");
     self.position.WriteJson(writer);
     writer.WritePropertyName("speed");
     self.speed.WriteJson(writer);
     writer.WritePropertyName("invulTime");
     writer.WriteValue(self.invulTime);
     writer.WritePropertyName("lifeTime");
     writer.WriteValue(self.lifeTime);
     writer.WritePropertyName("parentId");
     writer.WriteValue(self.parentId);
     writer.WriteEndObject();
 }
        public void ValueFormatting()
        {
            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            using (JsonWriter jsonWriter = new JsonTextWriter(sw))
            {
                jsonWriter.WriteStartArray();
                jsonWriter.WriteValue('@');
                jsonWriter.WriteValue("\r\n\t\f\b?{\\r\\n\"\'");
                jsonWriter.WriteValue(true);
                jsonWriter.WriteValue(10);
                jsonWriter.WriteValue(10.99);
                jsonWriter.WriteValue(0.99);
                jsonWriter.WriteValue(0.000000000000000001d);
                jsonWriter.WriteValue(0.000000000000000001m);
                jsonWriter.WriteValue((string)null);
                jsonWriter.WriteValue((object)null);
                jsonWriter.WriteValue("This is a string.");
                jsonWriter.WriteNull();
                jsonWriter.WriteUndefined();
                jsonWriter.WriteEndArray();
            }

            string expected = @"[""@"",""\r\n\t\f\b?{\\r\\n\""'"",true,10,10.99,0.99,1E-18,0.000000000000000001,null,null,""This is a string."",null,undefined]";
            string result   = sb.ToString();

            Console.WriteLine("ValueFormatting");
            Console.WriteLine(result);

            Assert.AreEqual(expected, result);
        }
        public static void JayrockWriterObjects()
        {
            for (int j = 0; j < Common.Iterations; j++)
            {
                StringBuilder output = new StringBuilder();
                JsonWriter    writer = new JsonTextWriter(new StringWriter(output));

                int n = Common.SampleObject.Length;
                for (int i = 0; i < n; i += 2)
                {
                    switch ((char)Common.SampleObject[i])
                    {
                    case '{':
                        writer.WriteStartObject();
                        break;

                    case '}':
                        writer.WriteEndObject();
                        break;

                    case '[':
                        writer.WriteStartArray();
                        break;

                    case ']':
                        writer.WriteEndArray();
                        break;

                    case 'P':
                        writer.WriteMember(
                            (string)Common.SampleObject[i + 1]);
                        break;

                    case 'I':
                        writer.WriteNumber(
                            (int)Common.SampleObject[i + 1]);
                        break;

                    case 'D':
                        writer.WriteNumber(
                            (double)Common.SampleObject[i + 1]);
                        break;

                    case 'S':
                        writer.WriteString(
                            (string)Common.SampleObject[i + 1]);
                        break;

                    case 'B':
                        writer.WriteBoolean(
                            (bool)Common.SampleObject[i + 1]);
                        break;

                    case 'N':
                        writer.WriteNull();
                        break;
                    }
                }
            }
        }
Beispiel #14
0
        public void WriteValue(IValue Value, bool UseFormatWithExponent = false)
        {
            if (!IsOpen())
            {
                NotOpenException();
            }

            switch (Value.DataType)
            {
            case DataType.String:
                WriteStringValue(Value.AsString());
                break;

            case DataType.Number:
                decimal d = Value.AsNumber();
                if (d == Math.Round(d))
                {
                    Int64 i = Convert.ToInt64(d);
                    if (UseFormatWithExponent)
                    {
                        _writer.WriteRawValue(string.Format(Thread.CurrentThread.CurrentCulture, "{0:E}", i));
                    }
                    else
                    {
                        _writer.WriteValue(i);
                    }
                }

                else
                {
                    if (UseFormatWithExponent)
                    {
                        _writer.WriteRawValue(string.Format(string.Format(Thread.CurrentThread.CurrentCulture, "{0:E}", d)));
                    }
                    else
                    {
                        _writer.WriteValue(d);
                    }
                }

                break;

            case DataType.Date:
                _writer.WriteValue(Value.AsDate());
                break;

            case DataType.Boolean:
                _writer.WriteValue(Value.AsBoolean());
                break;

            case DataType.Undefined:
                _writer.WriteNull();
                break;

            default:
                throw new RuntimeException("Тип переданного значения не поддерживается.");
            }
        }
Beispiel #15
0
        public static void JsonTextWriterDemo()
        {
            Console.Clear();
            Console.WriteLine("*** JsonTextWriter Demo ***");
            // The JsonTextWriter is the opposite of the JsonTextReader method. It is one way only,
            // so it only writes, does not use reflections (so is higly performant) and it's not cacheable.
            // Like the JsonTextReader method, it is itended to be used with very large json documents that
            // need to squeeze every bit of performance
            // While the JsonTextReader takes a json document and produces a series of json tokens and values,
            // the JsonTextWriter takes a series of tokens and values and produces a json document.

            // In C# strings are immutable, so we need to use a StringWriter, which produces a StringBuilder
            // to build our string, else we might pay a pretty big performance penalty
            var sw     = new StringWriter();
            var writer = new JsonTextWriter(sw);

            // Before we start writing our json document, we need to configure any serialization formatters
            // we might want, because writing is done instantly.
            writer.Formatting = Formatting.Indented;

            writer.WriteStartObject();
            writer.WritePropertyName("name");
            writer.WriteValue("Alex Griciuc");
            writer.WritePropertyName("favorites");
            writer.WriteStartArray();
            writer.WriteValue(".NET Core");
            writer.WriteValue("JSON.Net");
            writer.WriteEndArray();
            writer.WritePropertyName("dateOfBirth");
            writer.WriteValue(new DateTime(1983, 11, 13));
            writer.WritePropertyName("happy");
            writer.WriteValue(true);
            writer.WritePropertyName("issues");
            writer.WriteNull();
            // Attention! Nested objects must start with a property name, else JSON.Net
            // will throw an exception
            writer.WritePropertyName("car");
            writer.WriteStartObject();
            writer.WritePropertyName("model");
            writer.WriteValue("Renault Symbol 16v");
            writer.WritePropertyName("year");
            writer.WriteValue(2008);
            // Close the nested object }
            writer.WriteEndObject();
            // Close the parent object }
            writer.WriteEndObject();
            // After we are done writing the json document we need to Flush the writer stream.
            writer.Flush();

            // Finally to be able to output the string we need to get the StringBuilder from
            // the StringWriter object
            string jsonText = sw.GetStringBuilder().ToString();

            Console.WriteLine(jsonText);
            Console.ReadLine();
        }
Beispiel #16
0
        public void EmitExpression(SyntaxBase syntax)
        {
            switch (syntax)
            {
            case BooleanLiteralSyntax boolSyntax:
                writer.WriteValue(boolSyntax.Value);
                break;

            case IntegerLiteralSyntax integerSyntax:
                writer.WriteValue(integerSyntax.Value);
                break;

            case NullLiteralSyntax _:
                writer.WriteNull();

                break;

            case ObjectSyntax objectSyntax:
                writer.WriteStartObject();
                EmitObjectProperties(objectSyntax);
                writer.WriteEndObject();

                break;

            case ArraySyntax arraySyntax:
                writer.WriteStartArray();

                foreach (ArrayItemSyntax itemSyntax in arraySyntax.Items)
                {
                    EmitExpression(itemSyntax.Value);
                }

                writer.WriteEndArray();

                break;

            case ParenthesizedExpressionSyntax _:
            case UnaryOperationSyntax _:
            case BinaryOperationSyntax _:
            case TernaryOperationSyntax _:
            case StringSyntax _:
            case InstanceFunctionCallSyntax _:
            case FunctionCallSyntax _:
            case ArrayAccessSyntax _:
            case PropertyAccessSyntax _:
            case ResourceAccessSyntax _:
            case VariableAccessSyntax _:
                EmitLanguageExpression(syntax);

                break;

            default:
                throw new NotImplementedException($"Cannot emit unexpected expression of type {syntax.GetType().Name}");
            }
        }
Beispiel #17
0
        public static void ShowJsonTextWriter()
        {
            Console.Clear();
            Console.WriteLine("*** JsonTextWriter Demo ***");
            //Final JSON

            /*
             *  {
             *  "name": "Xavier Morera",
             *  "courses": [
             *      "Solr",
             *      "dotTrace"],
             *  "since": "2014-01-14T00:00:00",
             *  "happy": true,
             *  "issues": null,
             *  "car": {
             *      "model": "Land Rover Series III",
             *      "year": 1976}
             *  }
             */

            StringWriter   sw     = new StringWriter();
            JsonTextWriter writer = new JsonTextWriter(sw);

            writer.Formatting = Formatting.Indented; //try at the beginning and at the end

            writer.WriteStartObject();
            writer.WritePropertyName("name");
            writer.WriteValue("Xavier Morera");
            writer.WritePropertyName("courses");
            writer.WriteStartArray();
            writer.WriteValue("Solr");
            writer.WriteValue("dotTrace");
            writer.WriteEndArray();
            writer.WritePropertyName("since");
            writer.WriteValue(new DateTime(2014, 01, 14));
            writer.WritePropertyName("happy");
            writer.WriteValue(true);
            writer.WritePropertyName("issues");
            writer.WriteNull();
            writer.WritePropertyName("car"); // what happens if you forget this one? Exception!
            writer.WriteStartObject();
            writer.WritePropertyName("model");
            writer.WriteValue("Land Rover Series III");
            writer.WritePropertyName("year");
            writer.WriteValue(1976);
            writer.WriteEndObject();
            writer.WriteEndObject();
            writer.Flush();

            string jsonText = sw.GetStringBuilder().ToString();

            Console.WriteLine(jsonText);
        }
Beispiel #18
0
 private void SerializeValue(object value, JsonTextWriter jsonWriter)
 {
     if (value != null)
     {
         string valueJson = JsonConvert.SerializeObject(value, this.serverConfig.Value.JsonSerializerSettings);
         jsonWriter.WriteRawValue(valueJson);
     }
     else
     {
         jsonWriter.WriteNull();
     }
 }
Beispiel #19
0
        public override void WriteJson(JsonTextWriter generator, WritingOptions writingOptions)
        {
            generator.WriteStartArray();

            // Marker
            generator.WriteNull();
            foreach (ArkByteValue bv in this)
            {
                generator.WriteValue(bv.NameValue.ToString());
            }

            generator.WriteEndArray();
        }
Beispiel #20
0
        public void PostMessage(JavascriptMessage param)
        {
            var sb     = new StringBuilder();
            var sw     = new StringWriter(sb);
            var writer = new JsonTextWriter(sw);

            writer.WriteStartObject();
            writer.WritePropertyName("functionName");
            writer.WriteValue(param.functionName);
            writer.WritePropertyName("args");

            if (param.args != null && param.args.Count > 0)
            {
                writer.WriteStartArray();
                foreach (var value in param.args)
                {
                    writer.WriteValue(value);
                }

                writer.WriteEndArray();
            }
            else
            {
                writer.WriteNull();
            }

            writer.WritePropertyName("callbackName");
            if (!string.IsNullOrEmpty(param.callbackName))
            {
                writer.WriteValue(param.callbackName);
            }
            else
            {
                writer.WriteNull();
            }

            writer.WriteEndObject();
            _context.SendEvent(JsCallbackEvent, sb.ToString());
        }
Beispiel #21
0
        private String serializeRoot()
        {
            StringWriter   sw     = new StringWriter();
            JsonTextWriter writer = new JsonTextWriter(sw);

            writer.WriteStartObject();

            writer.WritePropertyName("total");
            writer.WriteValue(serializationObjectsRoot.total);

            writer.WritePropertyName("result");
            writer.WriteStartArray();
            foreach (Result result in serializationObjectsRoot.result)
            {
                writer.WriteStartObject();

                writer.WritePropertyName("category");
                if (result.category != null)
                {
                    writer.WriteStartArray();
                    foreach (string category in result.category)
                    {
                        writer.WriteValue(category);
                    }
                    writer.WriteEndArray();
                }
                else
                {
                    writer.WriteNull();
                }

                writer.WritePropertyName("icon_url");
                writer.WriteValue(result.icon_url);

                writer.WritePropertyName("id");
                writer.WriteValue(result.id);

                writer.WritePropertyName("url");
                writer.WriteValue(result.url);

                writer.WritePropertyName("value");
                writer.WriteValue(result.value);

                writer.WriteEndObject();
            }
            writer.WriteEndArray();

            writer.WriteEndObject();

            return(sw.ToString());
        }
Beispiel #22
0
        /// <summary>
        /// Returns a <see cref="string"/> representation of the current instance that can be used in logs.
        /// Note: sensitive parameters like client secrets are automatically removed for security reasons.
        /// </summary>
        /// <returns>The indented JSON representation corresponding to this message.</returns>
        public override string ToString()
        {
            var builder = new StringBuilder();

            using (var writer = new JsonTextWriter(new StringWriter(builder, CultureInfo.InvariantCulture)))
            {
                writer.Formatting = Formatting.Indented;

                writer.WriteStartObject();

                foreach (var parameter in Parameters)
                {
                    writer.WritePropertyName(parameter.Key);

                    // Remove sensitive parameters from the generated payload.
                    switch (parameter.Key)
                    {
                    case OpenIdConnectConstants.Parameters.AccessToken:
                    case OpenIdConnectConstants.Parameters.Assertion:
                    case OpenIdConnectConstants.Parameters.ClientAssertion:
                    case OpenIdConnectConstants.Parameters.ClientSecret:
                    case OpenIdConnectConstants.Parameters.Code:
                    case OpenIdConnectConstants.Parameters.IdToken:
                    case OpenIdConnectConstants.Parameters.IdTokenHint:
                    case OpenIdConnectConstants.Parameters.Password:
                    case OpenIdConnectConstants.Parameters.RefreshToken:
                    case OpenIdConnectConstants.Parameters.Token:
                    {
                        writer.WriteValue("[removed for security reasons]");

                        continue;
                    }
                    }

                    var token = (JToken)parameter.Value;
                    if (token == null)
                    {
                        writer.WriteNull();

                        continue;
                    }

                    token.WriteTo(writer);
                }

                writer.WriteEndObject();
            }

            return(builder.ToString());
        }
        public static void WriteToken(BionReader reader, JsonTextWriter writer)
        {
            switch (reader.TokenType)
            {
            case BionToken.StartObject:
                writer.WriteStartObject();
                break;

            case BionToken.StartArray:
                writer.WriteStartArray();
                break;

            case BionToken.EndObject:
                writer.WriteEndObject();
                break;

            case BionToken.EndArray:
                writer.WriteEndArray();
                break;

            case BionToken.PropertyName:
                writer.WritePropertyName(reader.CurrentString());
                break;

            case BionToken.String:
                writer.WriteValue(reader.CurrentString());
                break;

            case BionToken.Integer:
                writer.WriteValue(reader.CurrentInteger());
                break;

            case BionToken.Float:
                writer.WriteValue(reader.CurrentFloat());
                break;

            case BionToken.True:
            case BionToken.False:
                writer.WriteValue(reader.CurrentBool());
                break;

            case BionToken.Null:
                writer.WriteNull();
                break;

            default:
                throw new NotImplementedException($"BionToJson not implemented for {reader.TokenType} @{reader.BytesRead}.");
            }
        }
Beispiel #24
0
 /// <summary>
 ///     Writes the optional property.
 /// </summary>
 /// <param name="writer">The writer.</param>
 /// <param name="name">The name.</param>
 /// <param name="value">The value.</param>
 public static void WriteOptionalProperty(this JsonTextWriter writer, string name, object value, bool forceNullDefault = false)
 {
     if (value != null || forceNullDefault)
     {
         writer.WritePropertyName(name);
         if (value != null)
         {
             writer.WriteValue(value);
         }
         else
         {
             writer.WriteNull();
         }
     }
 }
Beispiel #25
0
        public override void BeginWriteMessage(Request message)
        {
            writer = new JsonTextWriter();
            Body[] body = message.getResponseBodies();
            fault = (body.Length > 0 && body[0].ResponseDataObject is Exception);
            writer.WriteStartObject();

            // write out version
            string version = (string)message.Headers[1].headerValue.defaultAdapt();

            if (version == "1.1")
            {
                writer.WriteMember("version");
                writer.WriteString("1.1");
            }
            else if (version == "2.0")
            {
                writer.WriteMember("jsonrpc");
                writer.WriteString("2.0");
            }

            // if fault - modify error message to better comply JSON-RPC specification
            if (fault)
            {
                body[0].responseDataObject = ProcessExceptionStack(version, (Exception)body[0].responseDataObject);
            }

            // hack: modify body if 'inspection' is ON to avoid cyclic references in ServiceDescriptor
            //if( message.Headers.Length > 3 )
            //  body[ 0 ].responseDataObject = ((ServiceDescriptor) body[ 0 ].responseDataObject).functions;

            // write out id if was present
            if (message.getHeader("id").headerValue != null)
            {
                writer.WriteMember("id");
                object id = message.getHeader("id").headerValue.defaultAdapt();
                MessageWriter.writeObject(id, message.GetFormatter());
            }

            // only in version 1.0 was allowed to print out result:null on failure and error:null on successfull invocation
            if (version == "1.0")
            {
                writer.WriteMember(fault ? "result" : "error");
                writer.WriteNull();
            }

            writer.WriteMember(!fault ? "result" : "error");
        }
Beispiel #26
0
        private static void WriteClusterDocumentToSnapshot(JsonTextWriter jsonTextWriter, IStorageActionsAccessor accessor, string docName)
        {
            jsonTextWriter.WritePropertyName(docName);

            var doc = accessor.Documents.DocumentByKey(docName);

            if (doc != null)
            {
                var json = doc.ToJson();
                json.WriteTo(jsonTextWriter);
            }
            else
            {
                jsonTextWriter.WriteNull();
            }
        }
Beispiel #27
0
        public static void SerializeWriteRawObject(JsonTextWriter jsonTextWriter, string value)
        {
            JToken  jToken  = JToken.Parse(value);
            JObject jObject = jToken as JObject;
            JValue  jValue  = jToken as JValue;
            JArray  jArray  = jToken as JArray;

            if (jValue != null)
            {
                if (jValue.Value != null)
                {
                    jsonTextWriter.WriteValue(jValue.Value);
                }
                else
                {
                    jsonTextWriter.WriteNull();
                }
                return;
            }
            if (jArray != null)
            {
                jsonTextWriter.WriteStartArray();

                for (int i = 0; i < jArray.Count; i++)
                {
                    SerializeWriteRawObject(jsonTextWriter, jArray[i].ToString(Formatting.None));
                }

                jsonTextWriter.WriteEndArray();
                return;
            }
            if (jObject == null)
            {
                jsonTextWriter.WriteRawValue(value);
                return;
            }

            IList <string> keys = jObject.Properties().Select(p => p.Name).ToList();

            jsonTextWriter.WriteStartObject();
            foreach (string key in keys)
            {
                jsonTextWriter.WritePropertyName(key);
                SerializeWriteRawObject(jsonTextWriter, jObject[key].ToString(Formatting.None));
            }
            jsonTextWriter.WriteEndObject();
        }
Beispiel #28
0
            protected override Task SerializeToStreamAsync(Stream stream, TransportContext context)
            {
                var streamWriter = new StreamWriter(stream);
                var writer       = new JsonTextWriter(streamWriter);

                writer.WriteStartArray();

                foreach (var result in results)
                {
                    if (result == null)
                    {
                        writer.WriteNull();
                        continue;
                    }

                    writer.WriteStartObject();
                    writer.WritePropertyName("Status");
                    writer.WriteValue((int)result.StatusCode);
                    writer.WritePropertyName("Headers");
                    writer.WriteStartObject();

                    foreach (var header in result.Headers.Concat(result.Content.Headers))
                    {
                        foreach (var val in header.Value)
                        {
                            writer.WritePropertyName(header.Key);
                            writer.WriteValue(val);
                        }
                    }

                    writer.WriteEndObject();
                    writer.WritePropertyName("Result");

                    var jsonContent = (JsonContent)result.Content;

                    if (jsonContent.Data != null)
                    {
                        jsonContent.Data.WriteTo(writer, Default.Converters);
                    }

                    writer.WriteEndObject();
                }

                writer.WriteEndArray();
                writer.Flush();
                return(new CompletedTask());
            }
Beispiel #29
0
        private static string RowToJson(HashSet <string> columns, CsvTable.Row row, string doctype)
        {
            var buffer = new StringWriter();
            var writer = new JsonTextWriter(buffer);

            writer.WriteStartObject();
            if (doctype != null)
            {
                writer.WritePropertyName("doctype");
                writer.WriteValue(doctype);
            }
            var empty = true;

            for (var i = 0; i < row.Table.Headers.Length; ++i)
            {
                if ((columns != null) && !columns.Contains(row.Table.Headers[i]))
                {
                    continue;
                }
                empty = false;
                writer.WritePropertyName(row.Table.Headers[i]);
                var    value = row[i];
                double number;
                if (double.TryParse(value, out number))
                {
                    if (double.IsNaN(number) || double.IsInfinity(number))
                    {
                        writer.WriteNull();
                    }
                    else
                    {
                        writer.WriteRawValue(value);
                    }
                }
                else
                {
                    writer.WriteValue(value);
                }
            }
            if (empty)
            {
                return(null);
            }
            writer.WriteEndObject();
            return(buffer.ToString());
        }
Beispiel #30
0
 public static bool SerializeObjectNoPropertyName(JsonTextWriter jsonTextWriter, object value)
 {
     if (SerializeArrayNoPropertyName(jsonTextWriter, value))
     {
         return(true);
     }
     if (SerializePrimitiveNoPropertyName(jsonTextWriter, value))
     {
         return(true);
     }
     if (value == null)
     {
         jsonTextWriter.WriteNull();
         return(true);
     }
     SerializeFull(jsonTextWriter, value);
     return(true);
 }
Beispiel #31
0
        public static void SerializeMessage(JsonTextWriter writer, ServiceType type, object message)
        {
            Require.NotNull(writer, "writer");
            Require.NotNull(type, "type");
            Require.NotNull(message, "message");

            writer.WriteStartObject();

            foreach (var field in type.Fields.Values)
            {
                if (
                    field.ShouldSerializeMethod != null &&
                    !field.ShouldSerializeMethod(message)
                )
                    continue;

                writer.WritePropertyName(field.Tag.ToString(CultureInfo.InvariantCulture));

                object value = field.Getter(message);

                if (value == null)
                {
                    writer.WriteNull();
                }
                else if (field.CollectionType != null)
                {
                    writer.WriteStartArray();

                    foreach (object item in (IEnumerable)value)
                    {
                        if (field.ServiceType != null && !field.ServiceType.Type.IsEnum)
                            SerializeMessage(writer, field.ServiceType, item);
                        else
                            writer.WriteValue(item);
                    }

                    writer.WriteEndArray();
                }
                else 
                {
                    if (field.ServiceType != null && !field.ServiceType.Type.IsEnum)
                        SerializeMessage(writer, field.ServiceType, value);
                    else
                        writer.WriteValue(value);
                }
            }

            writer.WriteEndObject();
        }
Beispiel #32
0
 void SaveConfigInternal(JsonTextWriter writer, TimelineBase timelines)
 {
     foreach (object item in timelines.TimeLines) {
         writer.WriteStartObject ();
         writer.WriteKey ("type");
         TimelineInfo tl = item as TimelineInfo;
         TabInfo tb = item as TabInfo;
         if (tl != null) {
             if (tl.Search != null) {
                 writer.WriteString ("search");
                 writer.WriteKey ("keywords");
                 writer.WriteString (tl.Search.Keyword);
             } else if (tl.List != null) {
                 writer.WriteString ("list");
                 writer.WriteKey ("id");
                 writer.WriteNumber (tl.List.List.ID);
             } else {
                 writer.WriteString ("account");
                 writer.WriteKey ("subtype");
                 if (tl.Statuses == tl.RestAccount.HomeTimeline)
                     writer.WriteString ("home");
                 else if (tl.Statuses == tl.RestAccount.Mentions)
                     writer.WriteString ("mentions");
                 else if (tl.Statuses == tl.RestAccount.DirectMessages)
                     writer.WriteString ("directmessages");
                 writer.WriteKey ("name");
                 writer.WriteString (tl.RestAccount.ScreenName);
             }
         } else if (tb != null) {
             writer.WriteString ("tab");
             writer.WriteKey ("title");
             writer.WriteString (tb.Title);
             writer.WriteKey ("windows");
             writer.WriteStartArray ();
             SaveConfigInternal (writer, tb);
             writer.WriteEndArray ();
         } else {
             writer.WriteNull ();
         }
         writer.WriteEndObject ();
     }
 }
Beispiel #33
0
 void WriteAccount(JsonTextWriter writer, TwitterAccount account)
 {
     writer.WriteStartObject ();
     if (account.Credential is NetworkCredential) {
         NetworkCredential nc = account.Credential as NetworkCredential;
         writer.WriteKey ("username");
         writer.WriteString (nc.UserName);
         writer.WriteKey ("password");
         writer.WriteString (nc.Password);
     } else if (account.Credential is OAuthPasswordCache) {
         OAuthPasswordCache pc = account.Credential as OAuthPasswordCache;
         writer.WriteKey ("username");
         writer.WriteString (pc.UserName);
         writer.WriteKey ("password");
         writer.WriteString (pc.Password);
         writer.WriteKey ("token");
         writer.WriteString (pc.AccessToken);
         writer.WriteKey ("secret");
         writer.WriteString (pc.AccessSecret);
     }
     if (account.SelfUserID > 0) {
         writer.WriteKey ("id");
         writer.WriteNumber (account.SelfUserID);
     }
     writer.WriteKey ("rest");
     writer.WriteStartObject ();
     string[] rest_keys = new string[] {"home", "mentions", "dm"};
     TwitterAccount.RestUsage[] rests = new TwitterAccount.RestUsage[] {account.RestHome, account.RestMentions, account.RestDirectMessages};
     for (int i = 0; i < rest_keys.Length; i ++) {
         writer.WriteKey (rest_keys[i]);
         writer.WriteStartObject ();
         writer.WriteKey ("enable");
         writer.WriteBoolean (rests[i].IsEnabled);
         writer.WriteKey ("count");
         writer.WriteNumber (rests[i].Count);
         writer.WriteKey ("interval");
         writer.WriteNumber ((int)rests[i].Interval.TotalSeconds);
         writer.WriteEndObject ();
     }
     writer.WriteEndObject ();
     writer.WriteKey ("streaming");
     if (account.StreamingClient == null) {
         writer.WriteNull ();
     } else {
         writer.WriteStartObject ();
         writer.WriteKey ("mode");
         if (account.StreamingClient.Target is TwitterAccount) {
             writer.WriteString ("follow");
             writer.WriteKey ("username");
             writer.WriteString ((account.StreamingClient.Target as TwitterAccount).ScreenName);
         } else if (account.StreamingClient.Target is SearchStatuses) {
             writer.WriteString ("track");
             writer.WriteKey ("keywords");
             writer.WriteString (account.StreamingClient.SearchKeywords);
         } else if (account.StreamingClient.Target is ListStatuses) {
             writer.WriteString ("list");
             writer.WriteKey ("id");
             writer.WriteNumber ((account.StreamingClient.Target as ListStatuses).List.ID);
         }
         writer.WriteEndObject ();
     }
     writer.WriteEndObject ();
 }
        protected override void ProcessRequest()
        {
            string httpMethod = Request.RequestType;

            if (!CaselessString.Equals(httpMethod, "GET") &&
                !CaselessString.Equals(httpMethod, "HEAD"))
            {
                throw new JsonRpcException(string.Format("HTTP {0} is not supported for RPC execution. Use HTTP GET or HEAD only.", httpMethod));
            }

            //
            // Response will be plain text, though it would have been nice to 
            // be more specific, like text/json.
            //

            Response.ContentType = "text/plain";
            
            //
            // Convert the query string into a call object.
            //

            JsonWriter writer = new JsonTextWriter();
            
            writer.WriteStartObject();
            
            writer.WriteMember("id");
            writer.WriteNumber(0);
            
            writer.WriteMember("method");
            string methodName = Mask.NullString(Request.PathInfo);
            if (methodName.Length == 0)
                writer.WriteNull();
            else
                writer.WriteString(methodName.Substring(1));
            
            writer.WriteMember("params");
            writer.WriteStartObject();

            NameValueCollection query = Request.QueryString;
            
            if (query.HasKeys())
            {
                foreach (string name in query)
                {
                    if (Mask.NullString(name).Length == 0)
                        continue;
                
                    writer.WriteMember(name);

                    string[] values = query.GetValues(name);                    
                    
                    if (values.Length == 0)
                        writer.WriteNull();
                    else if (values.Length == 1)
                        writer.WriteString(values[0]);
                    else 
                        writer.WriteArray(values);
                }
            }
            
            writer.WriteEndObject();
            
            writer.WriteEndObject();
            
            //
            // Delegate rest of the work to JsonRpcDispatcher.
            //

            JsonRpcDispatcher dispatcher = new JsonRpcDispatcher(Service);
            
            if (HttpRequestSecurity.IsLocal(Request))
                dispatcher.SetLocalExecution();
            
            dispatcher.Process(new StringReader(writer.ToString()), Response.Output);
        }