OSDN Git Service

TwitterDataModel.Directmessage を TwitterDirectMessage に移行
authorKimura Youichi <kim.upsilon@bucyou.net>
Mon, 5 May 2014 15:50:38 +0000 (00:50 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Mon, 5 May 2014 17:20:50 +0000 (02:20 +0900)
OpenTween/Api/TwitterDataModel.cs
OpenTween/Api/TwitterStatus.cs
OpenTween/Twitter.cs

index 42fc4f4..6c41cc9 100644 (file)
@@ -56,22 +56,6 @@ namespace OpenTween.Api
         }
 
         [DataContract]
-        public class Directmessage
-        {
-            [DataMember(Name = "created_at")] public string CreatedAt;
-            [DataMember(Name = "sender_id")] public Int64 SenderId;
-            [DataMember(Name = "sender_screen_name")] public string SenderScreenName;
-            [DataMember(Name = "sender")] public TwitterUser Sender;
-            [DataMember(Name = "id_str")] public string IdStr;
-            [DataMember(Name = "recipient")] public TwitterUser Recipient;
-            [DataMember(Name = "recipient_screen_name")] public string RecipientScreenName;
-            [DataMember(Name = "recipient_id")] public Int64 RecipientId;
-            [DataMember(Name = "id")] public Int64 Id;
-            [DataMember(Name = "text")] public string Text;
-            [DataMember(Name = "entities", IsRequired = false)] public TwitterEntities Entities;
-        }
-
-        [DataContract]
         public class Friendsevent
         {
             [DataMember(Name = "friends")] public Int64[] Friends;
@@ -110,7 +94,7 @@ namespace OpenTween.Api
         [DataContract]
         public class DirectmessageEvent
         {
-            [DataMember(Name = "direct_message")] public Directmessage Directmessage;
+            [DataMember(Name = "direct_message")] public TwitterDirectMessage Directmessage;
         }
 
         [DataContract]
index c6b02a9..e064cf3 100644 (file)
@@ -139,4 +139,59 @@ namespace OpenTween.Api
             return MyCommon.CreateDataFromJson<TwitterStatus[]>(json);
         }
     }
+
+    [DataContract]
+    public class TwitterDirectMessage
+    {
+        [DataMember(Name = "entities", IsRequired = false)]
+        public TwitterEntities Entities { get; set; }
+
+        [DataMember(Name = "created_at")]
+        public string CreatedAt { get; set; }
+
+        [DataMember(Name = "id")]
+        public long Id { get; set; }
+
+        [DataMember(Name = "id_str")]
+        public string IdStr { get; set; }
+
+        [DataMember(Name = "text")]
+        public string Text { get; set; }
+
+        [DataMember(Name = "sender_id")]
+        public long SenderId { get; set; }
+
+        [DataMember(Name = "sender_id_str")]
+        public string SenderIdStr { get; set; }
+
+        [DataMember(Name = "sender_screen_name")]
+        public string SenderScreenName { get; set; }
+
+        [DataMember(Name = "sender", IsRequired = false)]
+        public TwitterUser Sender { get; set; }
+
+        [DataMember(Name = "recipient_id")]
+        public long RecipientId { get; set; }
+
+        [DataMember(Name = "recipient_id_str")]
+        public string RecipientIdStr { get; set; }
+
+        [DataMember(Name = "recipient_screen_name")]
+        public string RecipientScreenName { get; set; }
+
+        [DataMember(Name = "recipient", IsRequired = false)]
+        public TwitterUser Recipient { get; set; }
+
+        /// <exception cref="SerializationException"/>
+        public static TwitterDirectMessage ParseJson(string json)
+        {
+            return MyCommon.CreateDataFromJson<TwitterDirectMessage>(json);
+        }
+
+        /// <exception cref="SerializationException"/>
+        public static TwitterDirectMessage[] ParseJsonArray(string json)
+        {
+            return MyCommon.CreateDataFromJson<TwitterDirectMessage[]>(json);
+        }
+    }
 }
index e54aab3..a7dfabb 100644 (file)
@@ -591,10 +591,10 @@ namespace OpenTween
             var err = this.CheckStatusCode(res, content);
             if (err != null) return err;
 
-            TwitterDataModel.Directmessage status;
+            TwitterDirectMessage status;
             try
             {
-                status = MyCommon.CreateDataFromJson<TwitterDataModel.Directmessage>(content);
+                status = TwitterDirectMessage.ParseJson(content);
             }
             catch(SerializationException ex)
             {
@@ -1956,21 +1956,17 @@ namespace OpenTween
 
         private string CreateDirectMessagesFromJson(string content, MyCommon.WORKERTYPE gType, bool read)
         {
-            List<TwitterDataModel.Directmessage> item;
+            TwitterDirectMessage[] item;
             try
             {
                 if (gType == MyCommon.WORKERTYPE.UserStream)
                 {
                     var itm = MyCommon.CreateDataFromJson<List<TwitterDataModel.DirectmessageEvent>>(content);
-                    item = new List<TwitterDataModel.Directmessage>();
-                    foreach (var dat in itm)
-                    {
-                        item.Add(dat.Directmessage);
-                    }
+                    item = itm.Select(x => x.Directmessage).ToArray();
                 }
                 else
                 {
-                    item = MyCommon.CreateDataFromJson<List<TwitterDataModel.Directmessage>>(content);
+                    item = TwitterDirectMessage.ParseJsonArray(content);
                 }
             }
             catch(SerializationException ex)