|
@@ -1,32 +1,90 @@
|
|
using System.Net;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Net.Http;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json;
|
|
|
|
+using PixiEditor.Platform;
|
|
using PixiEditor.UpdateModule;
|
|
using PixiEditor.UpdateModule;
|
|
|
|
|
|
namespace PixiEditor.Models.Services.NewsFeed;
|
|
namespace PixiEditor.Models.Services.NewsFeed;
|
|
|
|
|
|
internal class NewsProvider
|
|
internal class NewsProvider
|
|
{
|
|
{
|
|
- private const int ProtocolVersion = 1;
|
|
|
|
private const string FeedUrl = "https://raw.githubusercontent.com/PixiEditor/news-feed/main/";
|
|
private const string FeedUrl = "https://raw.githubusercontent.com/PixiEditor/news-feed/main/";
|
|
public async Task<List<News>?> FetchNewsAsync()
|
|
public async Task<List<News>?> FetchNewsAsync()
|
|
|
|
+ {
|
|
|
|
+ List<News> allNews = new List<News>();
|
|
|
|
+ await FetchFrom(allNews, "shared.json");
|
|
|
|
+ await FetchFrom(allNews, $"{IPlatform.Current.Id}.json");
|
|
|
|
+
|
|
|
|
+ var test = new News()
|
|
|
|
+ {
|
|
|
|
+ Title = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, " +
|
|
|
|
+ "nisl eget ultricies ultrices, nisl nisl ultricies nisl, nec",
|
|
|
|
+ Date = DateTime.Now,
|
|
|
|
+ ShortDescription =
|
|
|
|
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, nisl eget ultricies ultrices, nisl nisl ultricies nisl, nec",
|
|
|
|
+ NewsType = NewsType.BlogPost
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ allNews.Add(test);
|
|
|
|
+ var test1 = new News()
|
|
|
|
+ {
|
|
|
|
+ Title = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, " +
|
|
|
|
+ "nisl eget ultricies ultrices, nisl nisl ultricies nisl, nec",
|
|
|
|
+ Date = DateTime.Now,
|
|
|
|
+ ShortDescription =
|
|
|
|
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, nisl eget ultricies ultrices, nisl nisl ultricies nisl, nec",
|
|
|
|
+ NewsType = NewsType.Misc
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ allNews.Add(test1);
|
|
|
|
+ var test2 = new News()
|
|
|
|
+ {
|
|
|
|
+ Title = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, " +
|
|
|
|
+ "nisl eget ultricies ultrices, nisl nisl ultricies nisl, nec",
|
|
|
|
+ Date = DateTime.Now,
|
|
|
|
+ ShortDescription =
|
|
|
|
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, nisl eget ultricies ultrices, nisl nisl ultricies nisl, nec",
|
|
|
|
+ NewsType = NewsType.YtVideo
|
|
|
|
+ };
|
|
|
|
+ allNews.Add(test2);
|
|
|
|
+
|
|
|
|
+ var test3 = new News()
|
|
|
|
+ {
|
|
|
|
+ Title = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, " +
|
|
|
|
+ "nisl eget ultricies ultrices, nisl nisl ultricies nisl, nec",
|
|
|
|
+ Date = DateTime.Now,
|
|
|
|
+ ShortDescription =
|
|
|
|
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, nisl eget ultricies ultrices, nisl nisl ultricies nisl, nec",
|
|
|
|
+ NewsType = NewsType.OfficialAnnouncement
|
|
|
|
+ };
|
|
|
|
+ allNews.Add(test3);
|
|
|
|
+ var test4 = new News()
|
|
|
|
+ {
|
|
|
|
+ Title = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, " +
|
|
|
|
+ "nisl eget ultricies ultrices, nisl nisl ultricies nisl, nec",
|
|
|
|
+ Date = DateTime.Now,
|
|
|
|
+ ShortDescription =
|
|
|
|
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, nisl eget ultricies ultrices, nisl nisl ultricies nisl, nec",
|
|
|
|
+ NewsType = NewsType.NewVersion
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ allNews.Add(test4);
|
|
|
|
+
|
|
|
|
+ return allNews.OrderByDescending(x => x.Date).Take(20).ToList();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static async Task FetchFrom(List<News> output, string fileName)
|
|
{
|
|
{
|
|
using HttpClient client = new HttpClient();
|
|
using HttpClient client = new HttpClient();
|
|
client.DefaultRequestHeaders.Add("User-Agent", "PixiEditor");
|
|
client.DefaultRequestHeaders.Add("User-Agent", "PixiEditor");
|
|
- HttpResponseMessage response = await client.GetAsync(FeedUrl + "shared.json");
|
|
|
|
|
|
+ HttpResponseMessage response = await client.GetAsync($"{FeedUrl}{fileName}");
|
|
if (response.StatusCode == HttpStatusCode.OK)
|
|
if (response.StatusCode == HttpStatusCode.OK)
|
|
{
|
|
{
|
|
string content = await response.Content.ReadAsStringAsync();
|
|
string content = await response.Content.ReadAsStringAsync();
|
|
var list = JsonConvert.DeserializeObject<List<News>>(content);
|
|
var list = JsonConvert.DeserializeObject<List<News>>(content);
|
|
- list.Add(new News(){ Title = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, " +
|
|
|
|
- "nisl eget ultricies ultrices, nisl nisl ultricies nisl, nec", Date = DateTime.Now,
|
|
|
|
- ShortDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, nisl eget ultricies ultrices, nisl nisl ultricies nisl, nec" ,
|
|
|
|
- CustomIconUrl = "https://raw.githubusercontent.com/PixiEditor/PixiEditor/master/src/PixiEditor/Images/SocialMedia/WebsiteIcon.png"
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- return list;
|
|
|
|
|
|
+ {
|
|
|
|
+ output.AddRange(list);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-
|
|
|
|
- return null;
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|