OSDN Git Service

Streaming APIのメソッドの返り値にIObservableを使用する
[opentween/open-tween.git] / OpenTween / Api / DataModel / TwitterStreamEvent.cs
1 // OpenTween - Client of Twitter
2 // Copyright (c) 2014 kim_upsilon (@kim_upsilon) <https://upsilo.net/~upsilon/>
3 // All rights reserved.
4 //
5 // This file is part of OpenTween.
6 //
7 // This program is free software; you can redistribute it and/or modify it
8 // under the terms of the GNU General Public License as published by the Free
9 // Software Foundation; either version 3 of the License, or (at your option)
10 // any later version.
11 //
12 // This program is distributed in the hope that it will be useful, but
13 // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 // for more details.
16 //
17 // You should have received a copy of the GNU General Public License along
18 // with this program. If not, see <http://www.gnu.org/licenses/>, or write to
19 // the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
20 // Boston, MA 02110-1301, USA.
21
22 using System;
23 using System.Collections.Generic;
24 using System.Linq;
25 using System.Runtime.Serialization;
26 using System.Text;
27 using System.Threading.Tasks;
28
29 namespace OpenTween.Api.DataModel
30 {
31     [DataContract]
32     public class TwitterStreamEvent
33     {
34         [DataMember(Name = "target")]
35         public TwitterUser Target { get; set; }
36
37         [DataMember(Name = "source")]
38         public TwitterUser Source { get; set; }
39
40         [DataMember(Name = "event")]
41         public string Event { get; set; }
42
43         [DataMember(Name = "created_at")]
44         public string CreatedAt { get; set; }
45
46         /// <exception cref="SerializationException"/>
47         public static TwitterStreamEvent ParseJson(string json)
48         {
49             return MyCommon.CreateDataFromJson<TwitterStreamEvent>(json);
50         }
51     }
52
53     [DataContract]
54     public class TwitterStreamEvent<T> : TwitterStreamEvent
55     {
56         [DataMember(Name = "target_object")]
57         public T TargetObject { get; set; }
58
59         /// <exception cref="SerializationException"/>
60         public static new TwitterStreamEvent<T> ParseJson(string json)
61         {
62             return MyCommon.CreateDataFromJson<TwitterStreamEvent<T>>(json);
63         }
64     }
65
66     [DataContract]
67     public class TwitterStreamEventDirectMessage
68     {
69         [DataMember(Name = "direct_message")]
70         public TwitterDirectMessage DirectMessage;
71
72         /// <exception cref="SerializationException"/>
73         public static TwitterStreamEventDirectMessage ParseJson(string json)
74         {
75             return MyCommon.CreateDataFromJson<TwitterStreamEventDirectMessage>(json);
76         }
77     }
78 }