OSDN Git Service

TwitterEntitiesを最新のスキーマに更新
authorKimura Youichi <kim.upsilon@bucyou.net>
Sat, 12 May 2018 10:39:30 +0000 (19:39 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sat, 12 May 2018 11:46:44 +0000 (20:46 +0900)
OpenTween/Api/DataModel/TwitterEntity.cs
OpenTween/Api/DataModel/TwitterStatus.cs

index c3ad676..0fede74 100644 (file)
@@ -29,7 +29,7 @@ using System.Threading.Tasks;
 
 namespace OpenTween.Api.DataModel
 {
-    // 参照: https://dev.twitter.com/docs/platform-objects/entities
+    // 参照: https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/entities-object
 
     [DataContract]
     public class TwitterEntities : IEnumerable<TwitterEntity>
@@ -40,6 +40,9 @@ namespace OpenTween.Api.DataModel
         [DataMember(Name = "media", IsRequired = false)]
         public TwitterEntityMedia[] Media { get; set; }
 
+        [DataMember(Name = "symbols", IsRequired = false)]
+        public TwitterEntitySymbol[] Symbols { get; set; }
+
         [DataMember(Name = "urls", IsRequired = false)]
         public TwitterEntityUrl[] Urls { get; set; }
 
@@ -52,10 +55,16 @@ namespace OpenTween.Api.DataModel
 
             if (this.Hashtags != null)
                 entities = entities.Concat(this.Hashtags);
+
             if (this.Media != null)
                 entities = entities.Concat(this.Media);
+
+            if (this.Symbols != null)
+                entities = entities.Concat(this.Symbols);
+
             if (this.Urls != null)
                 entities = entities.Concat(this.Urls);
+
             if (this.UserMentions != null)
                 entities = entities.Concat(this.UserMentions);
 
@@ -63,9 +72,7 @@ namespace OpenTween.Api.DataModel
         }
 
         IEnumerator IEnumerable.GetEnumerator()
-        {
-            return this.GetEnumerator();
-        }
+            => this.GetEnumerator();
     }
 
     [DataContract]
@@ -85,6 +92,9 @@ namespace OpenTween.Api.DataModel
     [DataContract]
     public class TwitterEntityMedia : TwitterEntityUrl
     {
+        [DataMember(Name = "additional_media_info", IsRequired = false)]
+        public TwitterMediaAdditionalInfo AdditionalMediaInfo { get; set; }
+
         [DataMember(Name = "id")]
         public long Id { get; set; }
 
@@ -172,6 +182,29 @@ namespace OpenTween.Api.DataModel
     }
 
     [DataContract]
+    public class TwitterMediaAdditionalInfo
+    {
+        [DataMember(Name = "title")]
+        public string Title { get; set; }
+
+        [DataMember(Name = "description")]
+        public string Description { get; set; }
+
+        [DataMember(Name = "embeddable")]
+        public bool Embeddable { get; set; }
+
+        [DataMember(Name = "monetizable")]
+        public bool Monetizable { get; set; }
+    }
+
+    [DataContract]
+    public class TwitterEntitySymbol : TwitterEntity
+    {
+        [DataMember(Name = "text")]
+        public string Text { get; set; }
+    }
+
+    [DataContract]
     public class TwitterEntityUrl : TwitterEntity
     {
         [DataMember(Name = "display_url")]
index 1d972d0..27ee966 100644 (file)
@@ -151,10 +151,11 @@ namespace OpenTween.Api.DataModel
 
                 return new TwitterEntities
                 {
-                    Hashtags = this.ExtendedEntities.Hashtags ?? this.Entities.Hashtags,
+                    Hashtags = this.Entities.Hashtags,
                     Media = this.ExtendedEntities.Media ?? this.Entities.Media,
-                    Urls = this.ExtendedEntities.Urls ?? this.Entities.Urls,
-                    UserMentions = this.ExtendedEntities.UserMentions ?? this.Entities.UserMentions,
+                    Symbols = this.Entities.Symbols,
+                    Urls = this.Entities.Urls,
+                    UserMentions = this.Entities.UserMentions,
                 };
             }
         }