public static ItemBase ItemFactory(EJsonDataObjectType jsonDataObjectType, string data) { switch (jsonDataObjectType) { case EJsonDataObjectType.User: return(new ItemUser(new JavaScriptSerializer().Deserialize <UserData>(data))); case EJsonDataObjectType.Subjects: return(new ItemSubject(new JavaScriptSerializer().Deserialize <SubjectData>(data))); case EJsonDataObjectType.Assignments: return(new ItemAssignment(new JavaScriptSerializer().Deserialize <AssignmentData>(data))); case EJsonDataObjectType.ReviewStatistics: return(new ItemReviewStatistics(new JavaScriptSerializer().Deserialize <ReviewStatisticData>(data))); case EJsonDataObjectType.StudyMaterials: return(new ItemStudyMaterial(new JavaScriptSerializer().Deserialize <StudyMaterialData>(data))); case EJsonDataObjectType.Summary: return(new ItemSummary(new JavaScriptSerializer().Deserialize <SummaryData>(data))); case EJsonDataObjectType.Reviews: return(new ItemReview(new JavaScriptSerializer().Deserialize <ReviewData>(data))); case EJsonDataObjectType.LevelProgressions: return(new ItemLevelProgression(new JavaScriptSerializer().Deserialize <LevelProgressionData>(data))); case EJsonDataObjectType.Resets: return(new ItemReset(new JavaScriptSerializer().Deserialize <ResetData>(data))); default: throw new ArgumentOutOfRangeException(nameof(jsonDataObjectType), jsonDataObjectType, null); } }
public ItemCollection MakeCollectionRequest(EJsonDataObjectType jsonDataObjectType) { string endPoint = this.GetEndPoint(jsonDataObjectType); string data = this.MakeRequest("https://www.wanikani.com/api/v2/" + endPoint); return(data == string.Empty ? default(ItemCollection) : ItemCollection.CollectionFactory(jsonDataObjectType, data)); }
public ItemBase MakeResourceRequest(EJsonDataObjectType jsonDataObjectType) { string endPoint = this.GetEndPoint(jsonDataObjectType); string data = this.MakeRequest("https://www.wanikani.com/api/v2/" + endPoint); return(data == string.Empty ? default(ItemBase) : ItemBase.ItemFactory(jsonDataObjectType, data)); }
private string GetEndPoint(EJsonDataObjectType jsonDataObjectType) { switch (jsonDataObjectType) { case EJsonDataObjectType.User: return(RequestEndPoint.User); case EJsonDataObjectType.Subjects: return(RequestEndPoint.Subjects); case EJsonDataObjectType.Assignments: return(RequestEndPoint.Assignments); case EJsonDataObjectType.ReviewStatistics: return(RequestEndPoint.ReviewStatistics); case EJsonDataObjectType.StudyMaterials: return(RequestEndPoint.StudyMaterials); case EJsonDataObjectType.Summary: return(RequestEndPoint.Summary); case EJsonDataObjectType.Reviews: return(RequestEndPoint.Reviews); case EJsonDataObjectType.LevelProgressions: return(RequestEndPoint.LevelProgressions); case EJsonDataObjectType.Resets: return(RequestEndPoint.Resets); default: throw new ArgumentOutOfRangeException(nameof(jsonDataObjectType), jsonDataObjectType, null); } }
public static ItemCollection CollectionFactory(EJsonDataObjectType jsonDataObjectType, string data) { switch (jsonDataObjectType) { case EJsonDataObjectType.Subjects: return(new ItemCollection(new JavaScriptSerializer().Deserialize <SubjectCollectionData>(data), jsonDataObjectType)); case EJsonDataObjectType.Assignments: return(new ItemCollection(new JavaScriptSerializer().Deserialize <AssignmentCollectionData>(data), jsonDataObjectType)); case EJsonDataObjectType.ReviewStatistics: return(new ItemCollection(new JavaScriptSerializer().Deserialize <ReviewStatisticCollectionData>(data), jsonDataObjectType)); case EJsonDataObjectType.StudyMaterials: return(new ItemCollection(new JavaScriptSerializer().Deserialize <StudyMaterialCollectionData>(data), jsonDataObjectType)); case EJsonDataObjectType.Reviews: return(new ItemCollection(new JavaScriptSerializer().Deserialize <ReviewCollectionData>(data), jsonDataObjectType)); case EJsonDataObjectType.LevelProgressions: return(new ItemCollection(new JavaScriptSerializer().Deserialize <LevelProgressionCollectionData>(data), jsonDataObjectType)); case EJsonDataObjectType.Resets: return(new ItemCollection(new JavaScriptSerializer().Deserialize <ResetCollectionData>(data), jsonDataObjectType)); default: throw new ArgumentOutOfRangeException(nameof(jsonDataObjectType), jsonDataObjectType, null); } }
public ItemCollection(CollectionData collection, EJsonDataObjectType jsonDataObjectType) { this.collection = collection; switch (jsonDataObjectType) { case EJsonDataObjectType.Subjects: { SubjectCollectionData subjectCollection = (SubjectCollectionData)collection; this.datas = new ItemBase[subjectCollection.data.Length]; for (int i = 0; i < this.datas.Length; ++i) { this.datas[i] = new ItemSubject(subjectCollection.data[i]); } } break; case EJsonDataObjectType.Assignments: { AssignmentCollectionData assignmentCollection = (AssignmentCollectionData)collection; this.datas = new ItemBase[assignmentCollection.data.Length]; for (int i = 0; i < this.datas.Length; ++i) { this.datas[i] = new ItemAssignment(assignmentCollection.data[i]); } } break; case EJsonDataObjectType.ReviewStatistics: { ReviewStatisticCollectionData reviewStatisticCollection = (ReviewStatisticCollectionData)collection; this.datas = new ItemBase[reviewStatisticCollection.data.Length]; for (int i = 0; i < this.datas.Length; ++i) { this.datas[i] = new ItemReviewStatistics(reviewStatisticCollection.data[i]); } } break; case EJsonDataObjectType.StudyMaterials: { StudyMaterialCollectionData studyMaterialCollection = (StudyMaterialCollectionData)collection; this.datas = new ItemBase[studyMaterialCollection.data.Length]; for (int i = 0; i < this.datas.Length; ++i) { this.datas[i] = new ItemStudyMaterial(studyMaterialCollection.data[i]); } } break; case EJsonDataObjectType.Reviews: { ReviewCollectionData reviewCollection = (ReviewCollectionData)collection; this.datas = new ItemBase[reviewCollection.data.Length]; for (int i = 0; i < this.datas.Length; ++i) { this.datas[i] = new ItemReview(reviewCollection.data[i]); } } break; case EJsonDataObjectType.LevelProgressions: { LevelProgressionCollectionData levelProgressionCollection = (LevelProgressionCollectionData)collection; this.datas = new ItemBase[levelProgressionCollection.data.Length]; for (int i = 0; i < this.datas.Length; ++i) { this.datas[i] = new ItemLevelProgression(levelProgressionCollection.data[i]); } } break; case EJsonDataObjectType.Resets: { ResetCollectionData resetCollection = (ResetCollectionData)collection; this.datas = new ItemBase[resetCollection.data.Length]; for (int i = 0; i < this.datas.Length; ++i) { this.datas[i] = new ItemReset(resetCollection.data[i]); } } break; default: throw new ArgumentOutOfRangeException(nameof(jsonDataObjectType), jsonDataObjectType, null); } }
public T MakeResourceRequest <T>(EJsonDataObjectType jsonDataObjectType) where T : ItemBase { return((T)this.MakeResourceRequest(jsonDataObjectType)); }
public ItemBase MakeFullUrlResourceRequest(string url, EJsonDataObjectType jsonDataObjectType) { string data = this.MakeRequest(url); return(data == string.Empty ? default(ItemBase) : ItemBase.ItemFactory(jsonDataObjectType, data)); }
public T MakeFullUrlResourceRequest <T>(string url, EJsonDataObjectType jsonDataObjectType) where T : ItemBase { return((T)this.MakeFullUrlResourceRequest(url, jsonDataObjectType)); }
public ItemCollection MakeFullUrlCollectionRequest(string url, EJsonDataObjectType jsonDataObjectType) { string data = this.MakeRequest(url); return(data == string.Empty ? default(ItemCollection) : ItemCollection.CollectionFactory(jsonDataObjectType, data)); }