~ubuntu-branches/ubuntu/trusty/smuxi/trusty-proposed

« back to all changes in this revision

Viewing changes to lib/Twitterizer/Twitterizer2/Methods/Tweets/Entities/TwitterEntityCollection.cs

  • Committer: Package Import Robot
  • Author(s): Mirco Bauer
  • Date: 2013-05-25 22:11:31 UTC
  • mfrom: (1.2.12)
  • Revision ID: package-import@ubuntu.com-20130525221131-nd2mc0kzubuwyx20
Tags: 0.8.11-1
* [22d13d5] Imported Upstream version 0.8.11
* [6d2b95a] Refreshed patches
* [89eb66e] Added ServiceStack libraries to smuxi-engine package
* [848ab10] Enable Campfire engine
* [c6dbdc7] Always build db4o for predictable build result
* [13ec489] Exclude OS X specific libraries from dh_clideps

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
// <summary>The twitter entity collection class</summary>
33
33
//-----------------------------------------------------------------------
34
34
 
 
35
using System.Collections.Generic;
 
36
 
35
37
namespace Twitterizer.Entities
36
38
{
37
39
    using System;
90
92
                TwitterEntity entity = null;
91
93
                try
92
94
                {
93
 
                    while (reader.Read() && reader.Depth >= startDepth)
 
95
                    if (reader.TokenType == JsonToken.StartArray)
 
96
                        reader.Read();
 
97
 
 
98
                    while (reader.Read() && reader.Depth > startDepth)
94
99
                    {
95
100
                        if (reader.TokenType == JsonToken.PropertyName && reader.Depth == startDepth + 1)
96
101
                        {
104
109
                                if (reader.TokenType == JsonToken.StartObject)
105
110
                                    entity = new TwitterUrlEntity();
106
111
 
107
 
                                ReadFieldValue(reader, "url", entity, () => ((TwitterUrlEntity)entity).Url);
108
 
                                ReadFieldValue(reader, "display_url", entity, () => ((TwitterUrlEntity)entity).DisplayUrl);
109
 
                                ReadFieldValue(reader, "expanded_url", entity, () => ((TwitterUrlEntity)entity).ExpandedUrl);
110
 
 
 
112
                                TwitterUrlEntity tue = entity as TwitterUrlEntity;
 
113
                                if (tue != null)
 
114
                                {
 
115
                                    ReadFieldValue(reader, "url", entity, () => tue.Url);
 
116
                                    ReadFieldValue(reader, "display_url", entity, () => tue.DisplayUrl);
 
117
                                    ReadFieldValue(reader, "expanded_url", entity, () => tue.ExpandedUrl);
 
118
                                }
111
119
                                break;
112
120
 
113
121
                            case "user_mentions":
114
122
                                if (reader.TokenType == JsonToken.StartObject)
115
123
                                    entity = new TwitterMentionEntity();
116
124
 
117
 
                                ReadFieldValue(reader, "screen_name", entity, () => ((TwitterMentionEntity)entity).ScreenName);
118
 
                                ReadFieldValue(reader, "name", entity, () => ((TwitterMentionEntity)entity).Name);
119
 
                                ReadFieldValue(reader, "id", entity, () => ((TwitterMentionEntity)entity).UserId);
120
 
 
 
125
                                TwitterMentionEntity tme = entity as TwitterMentionEntity;
 
126
                                if (tme != null)
 
127
                                {
 
128
                                    ReadFieldValue(reader, "screen_name", entity, () => tme.ScreenName);
 
129
                                    ReadFieldValue(reader, "name", entity, () => tme.Name);
 
130
                                    ReadFieldValue(reader, "id", entity, () => tme.UserId);
 
131
                                }
121
132
                                break;
122
133
 
123
134
                            case "hashtags":
124
135
                                if (reader.TokenType == JsonToken.StartObject)
125
136
                                    entity = new TwitterHashTagEntity();
126
137
 
127
 
                                ReadFieldValue(reader, "text", entity, () => ((TwitterHashTagEntity)entity).Text);
128
 
 
 
138
                                TwitterHashTagEntity the = entity as TwitterHashTagEntity;
 
139
                                if (the != null)
 
140
                                {
 
141
                                    ReadFieldValue(reader, "text", entity, () => the.Text);
 
142
                                }
129
143
                                break;
130
144
 
131
145
                            case "media":
134
148
                                entity = parseMediaEntity(reader);
135
149
 
136
150
                                break;
137
 
 
138
 
                            default:
139
 
                                break;
140
151
                        }
141
152
 
142
153
                        // Read the indicies (for all entities except Media)
283
294
            /// <param name="entities">The entities.</param>
284
295
            /// <param name="entityName">Name of the entity.</param>
285
296
            /// <param name="detailsAction">The details action.</param>
286
 
            private static void WriteEntity<T>(JsonWriter writer, System.Collections.Generic.IList<T> entities, string entityName, Action<JsonWriter, T> detailsAction)
 
297
            private static void WriteEntity<T>(JsonWriter writer, IEnumerable<T> entities, string entityName, Action<JsonWriter, T> detailsAction)
287
298
                where T : TwitterEntity
288
299
            {
289
300
                // Note to people reading this code: Extra brackets exist to group code by json hierarchy. You're welcome.
352
363
                                break;
353
364
 
354
365
                            case "sizes":
355
 
                                entity.Sizes = new System.Collections.Generic.List<TwitterMediaEntity.MediaSize>();
 
366
                                entity.Sizes = new List<TwitterMediaEntity.MediaSize>();
356
367
                                break;
357
368
 
358
369
                            case "large":
470
481
                }
471
482
            }
472
483
 
473
 
            private bool ReadFieldValue<TSource, TProperty>(JsonReader reader, string fieldName, TSource source, Expression<Func<TProperty>> property)
 
484
            private void ReadFieldValue<TSource, TProperty>(JsonReader reader, string fieldName, TSource source, Expression<Func<TProperty>> property)
 
485
                where TSource : class
474
486
            {
475
487
                try
476
488
                {
477
489
                    if (reader == null || source == null)
478
490
                    {
479
 
                        return false;
 
491
                        return /*false*/;
480
492
                    }
481
493
 
482
494
                    var expr = (MemberExpression)property.Body;
483
495
                    var prop = (PropertyInfo)expr.Member;
484
496
 
485
497
                    TProperty value = (TProperty)prop.GetValue(source, null);
486
 
                    if (ReadFieldValue<TProperty>(reader, fieldName, ref value))
 
498
                    if (ReadFieldValue(reader, fieldName, ref value))
487
499
                    {
488
500
                        prop.SetValue(source, value, null);
489
 
                        return true;
 
501
                        return /*true*/;
490
502
                    }
491
503
 
492
 
                    return false;
 
504
                    return /*false*/;
493
505
                }
494
506
                catch
495
507
                {
496
 
                    return false;
 
508
                    return /*false*/;
497
509
                }
498
510
            }
499
511
        }