From 794d03b42428bd2c98cbca2f396f9f2c18011fc5 Mon Sep 17 00:00:00 2001 From: Adam R Grey Date: Mon, 3 Apr 2023 16:47:24 -0400 Subject: [PATCH] hey adam... y'all ever heard of a generic object? --- ttrss/ApiClient.cs | 27 ++++++++++++----------- ttrss/messages/ApiResponse.cs | 7 ++---- ttrss/messages/CategoriesResponse.cs | 9 -------- ttrss/messages/CounterInfoResponse.cs | 9 -------- ttrss/messages/FeedsResponse.cs | 9 -------- ttrss/messages/HeadlinesHeaderResponse.cs | 6 +++-- ttrss/messages/HeadlinesResponse.cs | 9 -------- ttrss/messages/LoginResponse.cs | 15 ------------- ttrss/messages/LoginResponseContent.cs | 10 +++++++++ 9 files changed, 30 insertions(+), 71 deletions(-) delete mode 100644 ttrss/messages/CategoriesResponse.cs delete mode 100644 ttrss/messages/CounterInfoResponse.cs delete mode 100644 ttrss/messages/FeedsResponse.cs delete mode 100644 ttrss/messages/HeadlinesResponse.cs delete mode 100644 ttrss/messages/LoginResponse.cs create mode 100644 ttrss/messages/LoginResponseContent.cs diff --git a/ttrss/ApiClient.cs b/ttrss/ApiClient.cs index 7a94621..2994a2f 100644 --- a/ttrss/ApiClient.cs +++ b/ttrss/ApiClient.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.ComponentModel; using Newtonsoft.Json; using System.Net.Http.Json; +using ttrss_co_client.ttrss.messages; using ttrss_co_client.ttrss.datastructures; // https://tt-rss.org/wiki/ApiReference @@ -32,17 +33,17 @@ namespace ttrss_co_client.ttrss }; var content = JsonContent.Create(json); var response = await (await httpClient.PostAsync(BaseURI, content)).Content.ReadAsStringAsync(); - var loginResult = JsonConvert.DeserializeObject(response); + var loginResult = JsonConvert.DeserializeObject>(response); if (loginResult.status == 0) { - SessionId = loginResult.content.session_id; - if(loginResult.content.api_level == null) + SessionId = loginResult.Content.session_id; + if(loginResult.Content.api_level == null) { throw new NotImplementedException($"api doesn't report an api level - unsupported. api level 1 is version 1.5.8, so {BaseURI} might be extremely old. (or maybe this library is extremely old and ttrss changed again?)"); } else { - api_level = loginResult.content.api_level.Value; + api_level = loginResult.Content.api_level.Value; } Console.WriteLine(SessionId); @@ -104,8 +105,8 @@ namespace ttrss_co_client.ttrss output_mode = output_mode }); var response = await (await httpClient.PostAsync(BaseURI, json)).Content.ReadAsStringAsync(); - var apiResult = JsonConvert.DeserializeObject(response); - return apiResult.content; + var apiResult = JsonConvert.DeserializeObject>>(response); + return apiResult.Content; } ///0 for all ///skip this amount first @@ -135,8 +136,8 @@ namespace ttrss_co_client.ttrss offset = offset }); var response = await (await httpClient.PostAsync(BaseURI, json)).Content.ReadAsStringAsync(); - var apiResult = JsonConvert.DeserializeObject(response); - return apiResult.content; + var apiResult = JsonConvert.DeserializeObject>>(response); + return apiResult.Content; } ///nested mode (return only top level) public async Task> GetCategories(bool unread_only = false, bool enable_nested = false, bool include_empty = false) @@ -152,8 +153,8 @@ namespace ttrss_co_client.ttrss include_empty = include_empty }); var response = await (await httpClient.PostAsync(BaseURI, json)).Content.ReadAsStringAsync(); - var apiResult = JsonConvert.DeserializeObject(response); - return apiResult.content; + var apiResult = JsonConvert.DeserializeObject>>(response); + return apiResult.Content; } public enum VIEWMODE { All, Unread, Adaptive, Marked, Updated } @@ -296,8 +297,8 @@ namespace ttrss_co_client.ttrss private async Task> getHeadlines(JsonContent parameters) { var response = await (await httpClient.PostAsync(BaseURI, parameters)).Content.ReadAsStringAsync(); - var apiResult = JsonConvert.DeserializeObject(response); - return apiResult.content; + var apiResult = JsonConvert.DeserializeObject>>(response); + return apiResult.Content; } // public async Task GetHeadlinesAndHeader( // int feed_id, @@ -541,7 +542,7 @@ namespace ttrss_co_client.ttrss sid = this.SessionId }); var response = await (await httpClient.PostAsync(BaseURI, json)).Content.ReadAsStringAsync(); - var apiResult = JsonConvert.DeserializeObject(response); + var apiResult = JsonConvert.DeserializeObject>>(response); try { var converter = TypeDescriptor.GetConverter(typeof(T)); diff --git a/ttrss/messages/ApiResponse.cs b/ttrss/messages/ApiResponse.cs index 69bfdf3..1525488 100644 --- a/ttrss/messages/ApiResponse.cs +++ b/ttrss/messages/ApiResponse.cs @@ -2,13 +2,10 @@ using System.Collections.Generic; namespace ttrss_co_client.ttrss.messages { - public abstract class ApiResponse + public class ApiResponse { public int seq { get; set; } public int status { get; set; } - } - public class GenericApiResponse : ApiResponse - { - public Dictionary Content{get; set;} + public T Content {get; set;} } } \ No newline at end of file diff --git a/ttrss/messages/CategoriesResponse.cs b/ttrss/messages/CategoriesResponse.cs deleted file mode 100644 index b454e37..0000000 --- a/ttrss/messages/CategoriesResponse.cs +++ /dev/null @@ -1,9 +0,0 @@ -using ttrss_co_client.ttrss.datastructures; - -namespace ttrss_co_client.ttrss.messages -{ - public class CategoriesResponse : ApiResponse - { - public IEnumerable content { get; set; } - } -} \ No newline at end of file diff --git a/ttrss/messages/CounterInfoResponse.cs b/ttrss/messages/CounterInfoResponse.cs deleted file mode 100644 index fd06eaa..0000000 --- a/ttrss/messages/CounterInfoResponse.cs +++ /dev/null @@ -1,9 +0,0 @@ -using ttrss_co_client.ttrss.datastructures; - -namespace ttrss_co_client.ttrss.messages -{ - public class CounterInfoResponse : ApiResponse - { - public IEnumerable content { get; set; } - } -} \ No newline at end of file diff --git a/ttrss/messages/FeedsResponse.cs b/ttrss/messages/FeedsResponse.cs deleted file mode 100644 index ab59de5..0000000 --- a/ttrss/messages/FeedsResponse.cs +++ /dev/null @@ -1,9 +0,0 @@ -using ttrss_co_client.ttrss.datastructures; - -namespace ttrss_co_client.ttrss.messages -{ - public class FeedsResponse : ApiResponse - { - public IEnumerable content { get; set; } - } -} \ No newline at end of file diff --git a/ttrss/messages/HeadlinesHeaderResponse.cs b/ttrss/messages/HeadlinesHeaderResponse.cs index 1895544..d02ae4d 100644 --- a/ttrss/messages/HeadlinesHeaderResponse.cs +++ b/ttrss/messages/HeadlinesHeaderResponse.cs @@ -2,8 +2,10 @@ using ttrss_co_client.ttrss.datastructures; namespace ttrss_co_client.ttrss.messages { - public class HeadlinesHeaderResponse : ApiResponse + public class HeadlinesHeaderContent { - public IEnumerable content { get; set; } + public int id { get; set; } + public int first_id { get; set; } + public bool is_cat { get; set; } } } \ No newline at end of file diff --git a/ttrss/messages/HeadlinesResponse.cs b/ttrss/messages/HeadlinesResponse.cs deleted file mode 100644 index 86c626a..0000000 --- a/ttrss/messages/HeadlinesResponse.cs +++ /dev/null @@ -1,9 +0,0 @@ -using ttrss_co_client.ttrss.datastructures; - -namespace ttrss_co_client.ttrss.messages -{ - public class HeadlinesResponse : ApiResponse - { - public IEnumerable content { get; set; } - } -} \ No newline at end of file diff --git a/ttrss/messages/LoginResponse.cs b/ttrss/messages/LoginResponse.cs deleted file mode 100644 index 2db051d..0000000 --- a/ttrss/messages/LoginResponse.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace ttrss_co_client.ttrss.messages -{ - public class LoginResponse : ApiResponse - { - public Content content { get; set; } - - public class Content - { - public string session_id { get; set; } - public Configuration config { get; set; } - public int? api_level { get; set; } - public string error { get; set; } - } - } -} \ No newline at end of file diff --git a/ttrss/messages/LoginResponseContent.cs b/ttrss/messages/LoginResponseContent.cs new file mode 100644 index 0000000..352ffea --- /dev/null +++ b/ttrss/messages/LoginResponseContent.cs @@ -0,0 +1,10 @@ +namespace ttrss_co_client.ttrss.messages +{ + public class LoginResponseContent + { + public string session_id { get; set; } + public Configuration config { get; set; } + public int? api_level { get; set; } + public string error { get; set; } + } +} \ No newline at end of file