1
0
This repository has been archived on 2025-12-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
PocketRSSSync/PocketRSSSync/Models/PocketItem.cs
2022-02-04 15:41:54 -07:00

75 lines
2.6 KiB
C#

namespace PocketRSSSync.Models
{
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System.Collections.Generic;
using System.Dynamic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Net.Http.Json;
using System.Threading.Tasks;
internal class PocketItem
{
public string Url { get; set; }
public string Title { get; set; }
public static async Task<List<PocketItem>> GetPocketItemsAsync(Auth auth, HttpClient client)
{
var request = new HttpRequestMessage(HttpMethod.Post, "https://getpocket.com/v3/get");
request.Headers.Add("X-Accept", "application/json");
request.Content = JsonContent.Create(
new
{
consumer_key = auth.ConsumerKey,
access_token = auth.AccessToken,
detailType = "complete",
state = "all"
});
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Converters.Add(new ExpandoObjectConverter());
jsonSettings.Converters.Add(new StringEnumConverter());
dynamic dynConfig = JsonConvert.DeserializeObject<ExpandoObject>(await response.Content.ReadAsStringAsync(), jsonSettings);
var items = new List<PocketItem>();
foreach (var listItem in dynConfig.list)
{
items.Add(new PocketItem()
{
Title = listItem.Value.given_title,
Url = listItem.Value.given_url
});
}
return items;
}
public static async Task AddPocketItem(Auth auth, HttpClient client, PocketItem item)
{
var request = new HttpRequestMessage(HttpMethod.Post, "https://getpocket.com/v3/add");
request.Headers.Add("X-Accept", "application/json");
request.Content = JsonContent.Create(
new
{
consumer_key = auth.ConsumerKey,
access_token = auth.AccessToken,
url = item.Url,
title = item.Title
});
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
}
}
}