public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var request = value as UpdateListItemsRequest;
            if (request == null)
            {
                writer.WriteNull();
                return;
            }
            /*
             "additems" : ["3","4","5"],
            "adduniqueitems" : ["1","6"],
            "removeitems": ["2","5"]
             */
            writer.WriteStartObject();
            writer.WritePropertyName(request.Property );
            writer.WriteStartObject();
            if (request.ItemsToAdd.Count > 0)
            {
                if (request.AddUniquely == true)
                    writer.WriteArray("adduniqueitems", request.ItemsToAdd);
                else
                    writer.WriteArray("additems", request.ItemsToAdd);
            }
            if (request.ItemsToRemove.Count > 0)
                writer.WriteArray("removeitems", request.ItemsToRemove);

            writer.WriteEndObject();
            writer.WriteEndObject();
        }
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var push = value as PushNotification;
            if (push == null)
            {
                writer.WriteNull();
                return;
            }

            writer.StartObject();
            // Write push type
            if (string.IsNullOrWhiteSpace(push.Query) == false)
                writer.WriteProperty("query", push.Query);
            else if( push.Channels.Count() > 0 )
                writer.WriteArray("channels", push.Channels);
            else if( push.DeviceIds.Count() > 0 )
                writer.WriteArray("deviceids", push.DeviceIds);
            else
                writer.WriteProperty("broadcast", true);
            // Write data
            WriteData(writer, push);
            // Write platform options
            WritePlatformOptions(writer, push.PlatformOptions);
            writer.EndObject();

        }
 private static void WriteProperties(JsonWriter writer, Entity entity, JsonSerializer serializer)
 {
     foreach (var property in entity.Properties)
     {
         if (property.Value is NullValue)
         {
             writer.WritePropertyName(property.Key);
             writer.WriteNull();
         }
         else if (property.Value is MultiValue)
         {
             var collection = property.Value.GetValues<string>();
             writer.WriteArray(property.Key, collection);
         }
         else
             writer.WriteProperty(property.Key, property.Value.GetValue<string>());
     }
 }
 private static void WriteTags(JsonWriter writer, Entity entity, JsonSerializer serializer)
 {
     if (entity.Tags.Count() > 0)
         writer.WriteArray("__tags", entity.Tags);
 }
        private static void WriteAcls(JsonWriter writer, List<Claim> allowed, List<Claim> denied, List<ResetRequest> reset)
        {
            var map = new Dictionary<SidTypeKey, ClaimGroup>();
            allowed.For(x =>
            {
                ClaimGroup group;
                var key = new SidTypeKey { Sid = x.Sid, Type = x.ClaimType };
                if (map.TryGetValue(key, out group) == false)
                    group = new ClaimGroup { Sid = x.Sid, Type = x.ClaimType };
                group.Allowed.Add(x.AccessType);
            });
            denied.For(x =>
            {
                ClaimGroup group;
                var key = new SidTypeKey { Sid = x.Sid, Type = x.ClaimType };
                if (map.TryGetValue(key, out group) == false)
                    group = new ClaimGroup { Sid = x.Sid, Type = x.ClaimType };
                group.Denied.Add(x.AccessType);
            });
            reset.For(x =>
            {
                ClaimGroup group;
                var key = new SidTypeKey { Sid = x.Sid, Type = x.Type };
                if (map.TryGetValue(key, out group) == false)
                    group = new ClaimGroup { Sid = x.Sid, Type = x.Type };
                group.Reset.Add(x.Access);
            });

            writer.WriteStartArray();
            map.Values.For(x =>
            {
                writer.WriteStartObject();
                writer.WriteProperty("sid", x.Sid);
                writer.WriteProperty("type", x.Type.ToString().ToLower());
                if (x.Allowed.Count > 0)
                    writer.WriteArray("allow", x.Allowed.Select(y => y.ToString().ToLower()));
                if (x.Denied.Count > 0)
                    writer.WriteArray("deny", x.Denied.Select(y => y.ToString().ToLower()));
                if (x.Reset.Count > 0)
                    writer.WriteArray("dontcare", x.Reset.Select(y => y.ToString().ToLower()));
                writer.WriteEndObject();
            });
            writer.WriteEndArray();
        }
Пример #6
0
        private string GenerateJsonSchema()
        {
            List<string> required = new List<string>();
            MemoryStream stream = new MemoryStream();
            JsonWriter writer = new JsonWriter(stream);
            writer.WriteObject();

            writer.WriteMember("$schema");
            writer.WriteValue("http://json-schema.org/draft-04/schema");

            writer.WriteMember("title");
            writer.WriteValue(Object.Name);

            writer.WriteMember("type");
            writer.WriteValue("object");

            writer.WriteMember("properties");

            AddJsonProperties(writer, Object.GetProperties(), false);

            if (required.Count > 0)
            {
                writer.WriteMember("required");
                writer.WriteArray();
                foreach (string requirement in required)
                {
                    writer.WriteValue(requirement);
                }
                writer.WriteEndArray();
            }

            writer.WriteEndObject();

            writer.Flush();
            stream.Position = 0;

            string unformattedJsonBody = new StreamReader(stream).ReadToEnd();
            object parsedJson = JsonConvert.DeserializeObject(unformattedJsonBody);
            return JsonConvert.SerializeObject(parsedJson, Newtonsoft.Json.Formatting.Indented);
        }
Пример #7
0
        public void Serialize(JsonWriter writer, object obj, JsonSerializer serializer)
        {
            if (obj == null) return;

            var issue = (Issue) obj;

            writer.WriteStartObject();
            writer.WriteValue(RedmineKeys.ISSUE);

            writer.WriteProperty(RedmineKeys.SUBJECT, issue.Subject);
            writer.WriteProperty(RedmineKeys.DESCRIPTION, issue.Description);
            writer.WriteProperty(RedmineKeys.NOTES, issue.Notes);

            if (issue.Id != 0)
            {
                writer.WriteProperty(RedmineKeys.PRIVATE_NOTES, issue.PrivateNotes);
            }

            writer.WriteProperty(RedmineKeys.IS_PRIVATE, issue.IsPrivate);

            writer.WriteIdIfNotNull(RedmineKeys.PROJECT_ID, issue.Project);
            writer.WriteIdIfNotNull(RedmineKeys.PRIORITY_ID, issue.Priority);
            writer.WriteIdIfNotNull(RedmineKeys.STATUS_ID, issue.Status);
            writer.WriteIdIfNotNull(RedmineKeys.CATEGORY_ID, issue.Category);
            writer.WriteIdIfNotNull(RedmineKeys.TRACKER_ID, issue.Tracker);
            writer.WriteIdIfNotNull(RedmineKeys.ASSIGNED_TO_ID, issue.AssignedTo);
            writer.WriteIdIfNotNull(RedmineKeys.FIXED_VERSION_ID, issue.FixedVersion);
            writer.WriteValueOrEmpty(RedmineKeys.ESTIMATED_HOURS, issue.EstimatedHours);

            writer.WriteIdOrEmpty(RedmineKeys.PARENT_ISSUE_ID, issue.ParentIssue);
            writer.WriteDateOrEmpty(RedmineKeys.START_DATE, issue.StartDate);
            writer.WriteDateOrEmpty(RedmineKeys.DUE_DATE, issue.DueDate);
            writer.WriteDateOrEmpty(RedmineKeys.UPDATED_ON, issue.DueDate);

            if (issue.DoneRatio != null)
                writer.WriteProperty(RedmineKeys.DONE_RATIO, issue.DoneRatio.Value.ToString(CultureInfo.InvariantCulture));

            if (issue.SpentHours != null)
                writer.WriteProperty(RedmineKeys.SPENT_HOURS, issue.SpentHours.Value.ToString(CultureInfo.InvariantCulture));

            writer.WriteArray(RedmineKeys.UPLOADS, issue.Uploads, new UploadConverter(), serializer);
            writer.WriteArray(RedmineKeys.CUSTOM_FIELDS, issue.CustomFields, new IssueCustomFieldConverter(), serializer);

            writer.WriteIdsArray(RedmineKeys.WATCHER_USER_IDS, issue.Watchers);

            writer.WriteEndObject();
        }