OSDN Git Service

TwitterDataModel.Relationship を TwitterFriendship に移行
authorKimura Youichi <kim.upsilon@bucyou.net>
Mon, 5 May 2014 16:29:20 +0000 (01:29 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Mon, 5 May 2014 17:20:56 +0000 (02:20 +0900)
OpenTween/Api/TwitterDataModel.cs
OpenTween/Api/TwitterFriendship.cs [new file with mode: 0644]
OpenTween/OpenTween.csproj
OpenTween/Twitter.cs

index 2685503..c2da0e3 100644 (file)
@@ -139,26 +139,6 @@ namespace OpenTween.Api
         }
 
         [DataContract]
-        public class RelationshipResult
-        {
-            [DataMember(Name = "followed_by")] public bool FollowedBy;
-            [DataMember(Name = "following")] public bool Following;
-        }
-
-        [DataContract]
-        public class RelationshipUsers
-        {
-            [DataMember(Name = "target")] public RelationshipResult Target;
-            [DataMember(Name = "source")] public RelationshipResult Source;
-        }
-
-        [DataContract]
-        public class Relationship
-        {
-            [DataMember(Name = "relationship")] public RelationshipUsers relationship;
-        }
-
-        [DataContract]
         public class RateLimitStatus
         {
             [DataMember(Name = "reset_time_in_seconds")] public int ResetTimeInSeconds;
diff --git a/OpenTween/Api/TwitterFriendship.cs b/OpenTween/Api/TwitterFriendship.cs
new file mode 100644 (file)
index 0000000..b69fa7b
--- /dev/null
@@ -0,0 +1,106 @@
+// OpenTween - Client of Twitter
+// Copyright (c) 2014 kim_upsilon (@kim_upsilon) <https://upsilo.net/~upsilon/>
+// All rights reserved.
+//
+// This file is part of OpenTween.
+//
+// This program is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 3 of the License, or (at your option)
+// any later version.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program. If not, see <http://www.gnu.org/licenses/>, or write to
+// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+// Boston, MA 02110-1301, USA.
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OpenTween.Api
+{
+    [DataContract]
+    public class TwitterFriendship
+    {
+        [DataMember(Name = "relationship")]
+        public TwitterFriendship.RelationshipItem Relationship { get; set; }
+
+        [DataContract]
+        public class RelationshipItem
+        {
+            [DataMember(Name = "target")]
+            public TwitterFriendship.RelationshipTarget Target { get; set; }
+
+            [DataMember(Name = "source")]
+            public TwitterFriendship.RelationshipSource Source { get; set; }
+        }
+
+        [DataContract]
+        public class RelationshipTarget
+        {
+            [DataMember(Name = "id")]
+            public long Id { get; set; }
+
+            [DataMember(Name = "id_str")]
+            public string IdStr { get; set; }
+
+            [DataMember(Name = "screen_name")]
+            public string ScreenName { get; set; }
+
+            [DataMember(Name = "following")]
+            public bool Following { get; set; }
+
+            [DataMember(Name = "followed_by")]
+            public bool FollowedBy { get; set; }
+        }
+
+        [DataContract]
+        public class RelationshipSource
+        {
+            [DataMember(Name = "id")]
+            public long Id { get; set; }
+
+            [DataMember(Name = "id_str")]
+            public string IdStr { get; set; }
+
+            [DataMember(Name = "screen_name")]
+            public string ScreenName { get; set; }
+
+            [DataMember(Name = "following")]
+            public bool Following { get; set; }
+
+            [DataMember(Name = "followed_by")]
+            public bool FollowedBy { get; set; }
+
+            [DataMember(Name = "marked_spam")]
+            public bool? MarkedSpam { get; set; }
+
+            [DataMember(Name = "all_replies")]
+            public bool? AllReplies { get; set; }
+
+            [DataMember(Name = "want_retweets")]
+            public bool? WantRetweets { get; set; }
+
+            [DataMember(Name = "can_dm")]
+            public bool CanDm { get; set; }
+
+            [DataMember(Name = "blocking")]
+            public bool? Blocking { get; set; }
+        }
+
+        /// <exception cref="SerializationException"/>
+        public static TwitterFriendship ParseJson(string json)
+        {
+            return MyCommon.CreateDataFromJson<TwitterFriendship>(json);
+        }
+    }
+}
index 8a1d014..e492e1d 100644 (file)
@@ -66,6 +66,7 @@
     <Compile Include="Api\TwitterConfiguration.cs" />
     <Compile Include="Api\TwitterEntity.cs" />
     <Compile Include="Api\TwitterError.cs" />
+    <Compile Include="Api\TwitterFriendship.cs" />
     <Compile Include="Api\TwitterList.cs" />
     <Compile Include="Api\TwitterPageable.cs">
       <SubType>Code</SubType>
index ef3e5ae..376f893 100644 (file)
@@ -855,9 +855,9 @@ namespace OpenTween
 
             try
             {
-                var relation = MyCommon.CreateDataFromJson<TwitterDataModel.Relationship>(content);
-                isFollowing = relation.relationship.Source.Following;
-                isFollowed = relation.relationship.Source.FollowedBy;
+                var friendship = TwitterFriendship.ParseJson(content);
+                isFollowing = friendship.Relationship.Source.Following;
+                isFollowed = friendship.Relationship.Source.FollowedBy;
                 return "";
             }
             catch(SerializationException ex)