}
[DataContract]
- public class Ids
- {
- [DataMember(Name = "ids")] public long[] Id;
- [DataMember(Name = "next_cursor")] public long NextCursor;
- [DataMember(Name = "previous_cursor")] public long PreviousCursor;
- }
-
- [DataContract]
public class RateLimitStatus
{
[DataMember(Name = "reset_time_in_seconds")] public int ResetTimeInSeconds;
}
[DataContract]
- public class Lists
- {
- [DataMember(Name = "lists")] public TwitterList[] lists;
- [DataMember(Name = "next_cursor")] public long NextCursor;
- [DataMember(Name = "previous_cursor")] public long PreviousCursor;
- }
-
- [DataContract]
- public class Users
- {
- [DataMember(Name = "users")] public TwitterUser[] users;
- [DataMember(Name = "next_cursor")] public long NextCursor;
- [DataMember(Name = "previous_cursor")] public long PreviousCursor;
- }
-
- [DataContract]
public class ErrorResponse
{
[DataMember(Name = "errors")] public ErrorItem[] Errors;
--- /dev/null
+// 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 abstract class TwitterPageable<T>
+ {
+ public abstract T[] Items { get; }
+
+ [DataMember(Name = "next_cursor")]
+ public long NextCursor { get; set; }
+
+ [DataMember(Name = "next_cursor_str")]
+ public string NextCursorStr { get; set; }
+
+ [DataMember(Name = "previous_cursor")]
+ public long PreviousCursor { get; set; }
+
+ [DataMember(Name = "previous_cursor_str")]
+ public string PreviousCursorStr { get; set; }
+ }
+
+ [DataContract]
+ public class TwitterIds : TwitterPageable<long>
+ {
+ [DataMember(Name = "ids")]
+ public long[] Ids { get; set; }
+
+ [IgnoreDataMember]
+ public override long[] Items
+ {
+ get { return this.Ids; }
+ }
+
+ /// <exception cref="SerializationException"/>
+ public static TwitterIds ParseJson(string json)
+ {
+ return MyCommon.CreateDataFromJson<TwitterIds>(json);
+ }
+ }
+
+ [DataContract]
+ public class TwitterUsers : TwitterPageable<TwitterUser>
+ {
+ [DataMember(Name = "users")]
+ public TwitterUser[] Users { get; set; }
+
+ [IgnoreDataMember]
+ public override TwitterUser[] Items
+ {
+ get { return this.Users; }
+ }
+
+ /// <exception cref="SerializationException"/>
+ public static TwitterUsers ParseJson(string json)
+ {
+ return MyCommon.CreateDataFromJson<TwitterUsers>(json);
+ }
+ }
+
+ [DataContract]
+ public class TwitterLists : TwitterPageable<TwitterList>
+ {
+ [DataMember(Name = "lists")]
+ public TwitterList[] Lists { get; set; }
+
+ [IgnoreDataMember]
+ public override TwitterList[] Items
+ {
+ get { return this.Lists; }
+ }
+
+ /// <exception cref="SerializationException"/>
+ public static TwitterLists ParseJson(string json)
+ {
+ return MyCommon.CreateDataFromJson<TwitterLists>(json);
+ }
+ }
+}
do
{
var ret = this.GetFollowerIdsApi(ref cursor);
- newFollowerIds.AddRange(ret.Id);
+ newFollowerIds.AddRange(ret.Ids);
cursor = ret.NextCursor;
} while (cursor != 0);
}
}
- private TwitterDataModel.Ids GetFollowerIdsApi(ref long cursor)
+ private TwitterIds GetFollowerIdsApi(ref long cursor)
{
if (Twitter.AccountState != MyCommon.ACCOUNT_STATE.Valid)
throw new WebApiException("AccountState invalid");
try
{
- var ret = MyCommon.CreateDataFromJson<TwitterDataModel.Ids>(content);
+ var ret = TwitterIds.ParseJson(content);
- if (ret.Id == null)
+ if (ret.Ids == null)
{
var ex = new WebApiException("Err: ret.id == null (GetFollowerIdsApi)", content);
MyCommon.ExceptionOut(ex);
try
{
- var users = MyCommon.CreateDataFromJson<TwitterDataModel.Users>(content);
+ var users = TwitterUsers.ParseJson(content);
Array.ForEach<TwitterUser>(
- users.users,
+ users.Users,
u => lists.Add(new UserInfo(u)));
cursor = users.NextCursor;
return "";
do
{
var ret = this.GetBlockIdsApi(cursor);
- newBlockIds.AddRange(ret.Id);
+ newBlockIds.AddRange(ret.Ids);
cursor = ret.NextCursor;
} while (cursor != 0);
TabInformations.GetInstance().BlockIds = newBlockIds;
}
- public TwitterDataModel.Ids GetBlockIdsApi(long cursor)
+ public TwitterIds GetBlockIdsApi(long cursor)
{
if (Twitter.AccountState != MyCommon.ACCOUNT_STATE.Valid)
throw new WebApiException("AccountState invalid");
try
{
- return MyCommon.CreateDataFromJson<TwitterDataModel.Ids>(content);
+ return TwitterIds.ParseJson(content);
}
catch(SerializationException e)
{