using System; using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; using Gallery.Illust; using Xamarin.Forms; namespace Gallery.Utils { public class IllustResponse { public bool error; public string message; public T body; } public class BookmarkResultData { public string last_bookmark_id; public string stacc_status_id; } public class Illust { public string illustId; public string illustTitle; public string id; public string title; public int illustType; public int xRestrict; public string url; public string description; public string[] tags; public string userId; public string userName; public int width; public int height; public int pageCount; public IllustBookmark bookmarkData; public string alt; public IllustUrls urls; public string seriesId; public string seriesTitle; public string profileImageUrl; public class IllustUrls { [JsonProperty("250x250")] public string x250; [JsonProperty("360x360")] public string x360; [JsonProperty("540x540")] public string x540; } public class IllustBookmark { public string id; [JsonProperty("private")] public bool isPrivate; } public IllustItem ConvertToItem(ImageSource image = null) { return new IllustItem { Id = illustId ?? id, BookmarkId = bookmarkData?.id, Title = illustTitle ?? title, IllustType = (IllustType)illustType, Image = image, ImageUrl = urls?.x360 ?? url, IsRestrict = xRestrict == 1, Tags = tags ?? new string[0], ProfileUrl = profileImageUrl, UserId = userId, UserName = userName, Width = width, Height = height, PageCount = pageCount }; } } public class User { public string userId; public string name; public string image; public string imageBig; public bool premium; public bool isFollowed; //public string background; public int partial; } public class IllustFavoriteData : IllustResponse { } public class IllustFavoriteBody { public int total; public Illust[] works; } public class IllustData : IllustResponse { } public class IllustBody { public Page page; public Thumbnail thumbnails; public User[] users; public class Page { public int[] follow; public Recommends recommend; public RecommendByTag[] recommendByTags; public Ranking ranking; public RecommendUser[] recommendUser; public EditorRecommend[] editorRecommend; public string[] newPost; public class Recommends { public string[] ids; } public class RecommendByTag { public string tag; public string[] ids; } public class Ranking { public RankingItem[] items; public string date; public class RankingItem { public string rank; public string id; } } public class RecommendUser { public int id; public string[] illustIds; } public class EditorRecommend { public string illustId; public string comment; } } public class Thumbnail { public Illust[] illust; } } public class IllustPreloadBody { public Dictionary illust; public Dictionary user; public class Illust { public string illustId; public string illustTitle; public string illustComment; public string id; public string title; public string description; public int illustType; public DateTime createDate; public DateTime uploadDate; public int xRestrict; public IllustUrls urls; public IllustTag tags; public string alt; public string userId; public string userName; public string userAccount; //public Dictionary userIllusts; public int width; public int height; public int pageCount; public int bookmarkCount; public int likeCount; public int commentCount; public int responseCount; public int viewCount; public bool isOriginal; public IllustBookmark bookmarkData; public IllustItem CopyToItem(IllustItem item) { item.BookmarkId = bookmarkData?.id; item.Title = illustTitle ?? title; item.IllustType = (IllustType)illustType; item.ImageUrl = urls?.regular; item.IsRestrict = xRestrict == 1; if (tags != null && tags.tags != null) { item.Tags = tags.tags.Where(t => t.locked).Select(t => t.tag).ToArray(); } else { item.Tags = new string[0]; } item.UserId = userId; item.UserName = userName; item.Width = width; item.Height = height; item.PageCount = pageCount; return item; } [JsonIgnore] public string Url => urls.regular; public class IllustBookmark { public string id; [JsonProperty("private")] public bool isPrivate; } public class IllustUrls { public string mini; public string thumb; public string small; public string regular; public string original; } public class IllustTag { public string authorId; public bool isLocked; public IllustTagItem[] tags; public bool writable; public class IllustTagItem { public string tag; public bool locked; public bool deletable; public string userId; public IllustTranslate translation; public string userName; public class IllustTranslate { public string en; } } } } } public class IllustPageData : IllustResponse { } public class IllustPageBody { public Urls urls; public int width; public int height; public class Urls { public string thumb_mini; public string small; public string regular; public string original; } } public class IllustRecommendsData : IllustResponse { } public class IllustRecommendsBody { public Illust[] illusts; public string[] nextIds; } public class IllustUserListData : IllustResponse { } public class IllustUserListBody { public Dictionary illusts; } public class IllustUserData : IllustResponse { } public class IllustUserBody { public Dictionary works; } public class IllustUgoiraData : IllustResponse { } public class IllustUgoiraBody { public string src; public string originalSrc; public string mime_type; public Frame[] frames; public class Frame { public string file; public int delay; public string FilePath; public bool Incompleted; public int First; public int Last; public int Offset; public int Length; } } }