Skip to content

Commit 3bdae25

Browse files
committed
✨ kitsu api wrapper wip
1 parent b9066ac commit 3bdae25

File tree

4 files changed

+109
-0
lines changed

4 files changed

+109
-0
lines changed

Biyori/API/Kitsu/Kitsu.cs

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
using RestSharp;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
8+
namespace Biyori.API.Kitsu
9+
{
10+
11+
public class Kitsu
12+
{
13+
private const string BaseURL = "https://kitsu.io/api/edge";
14+
private RestClient getClient()
15+
{
16+
var client = new RestClient(BaseURL);
17+
client
18+
.AddDefaultHeader("Accept", "application/vnd.api+json")
19+
.AddDefaultHeader("Content-Type", "application/vnd.api+json");
20+
return client;
21+
}
22+
23+
public Kitsu()
24+
{
25+
26+
}
27+
/// <summary>
28+
/// -
29+
/// </summary>
30+
/// <param name="loginUser">Email or Username</param>
31+
/// <param name="Password">Password or API Key</param>
32+
public void InitializeUserClient(string loginUser, string Password)
33+
{
34+
35+
}
36+
public async Task<KitsuPaginationModel<KitsuDataModel>> GetAnimeByBulkId(params int[] animeId)
37+
{
38+
if (animeId.Length == 0)
39+
{
40+
return null;
41+
}
42+
var rr = new RestRequest("anime", Method.GET)
43+
.AddQueryParameter("page[limit]", "20")
44+
.AddQueryParameter("filter[id]", string.Join(",", animeId.Distinct().Select(x => x.ToString())));
45+
var client = this.getClient();
46+
var response = await client.ExecuteTaskAsync<KitsuPaginationModel<KitsuDataModel>>(rr);
47+
return response.Data;
48+
}
49+
public async Task<KitsuDataModel> GetAnimeById(int animeId)
50+
{
51+
var rr = new RestRequest("anime", Method.GET)
52+
.AddQueryParameter("page[limit]", "1")
53+
.AddQueryParameter("filter[id]", animeId.ToString());
54+
var client = this.getClient();
55+
var response = await client.ExecuteTaskAsync<KitsuPaginationModel<KitsuDataModel>>(rr);
56+
return response.Data?.Data?.FirstOrDefault();
57+
}
58+
public async Task<KitsuPaginationModel<KitsuDataModel>> SearchByTitle(string searchQuery, int perPage = 10)
59+
{
60+
var rr = new RestRequest("anime", Method.GET)
61+
.AddQueryParameter("page[limit]", perPage.ToString())
62+
.AddQueryParameter("filter[text]", searchQuery);
63+
var client = this.getClient();
64+
var response = await client.ExecuteTaskAsync<KitsuPaginationModel<KitsuDataModel>>(rr);
65+
return response.Data;
66+
}
67+
}
68+
}
+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using Newtonsoft.Json;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
8+
namespace Biyori.API.Kitsu
9+
{
10+
public class KitsuPaginationModel<T> where T : KitsuDataModel
11+
{
12+
[JsonProperty("meta")]
13+
public KitsuMetaModel Meta { get; set; }
14+
[JsonProperty("data")]
15+
public IEnumerable<T> Data { get; set; } = new List<T>();
16+
[JsonProperty("links")]
17+
public KitsuLinkModel Links { get; set; }
18+
}
19+
public class KitsuDataModel { }
20+
public class KitsuMetaModel
21+
{
22+
[JsonProperty("count")]
23+
public int Count { get; set; } = 0;
24+
}
25+
public class KitsuLinkModel
26+
{
27+
[JsonProperty("first")]
28+
public string FirstPage { get; set; }
29+
[JsonProperty("previous")]
30+
public string PreviousPage { get; set; }
31+
[JsonProperty("next")]
32+
public string NextPage { get; set; }
33+
[JsonProperty("last")]
34+
public string LastPage { get; set; }
35+
}
36+
}

Biyori/Biyori.csproj

+4
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@
9696
<Reference Include="PropertyChanged, Version=3.0.1.0, Culture=neutral, PublicKeyToken=ee3ee20bcf148ddd, processorArchitecture=MSIL">
9797
<HintPath>..\packages\PropertyChanged.Fody.3.0.1\lib\net452\PropertyChanged.dll</HintPath>
9898
</Reference>
99+
<Reference Include="RestSharp, Version=106.6.10.0, Culture=neutral, PublicKeyToken=598062e77f915f75, processorArchitecture=MSIL">
100+
<HintPath>..\packages\RestSharp.106.6.10\lib\net452\RestSharp.dll</HintPath>
101+
</Reference>
99102
<Reference Include="System" />
100103
<Reference Include="System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
101104
<HintPath>..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll</HintPath>
@@ -196,6 +199,7 @@
196199
<Generator>MSBuild:Compile</Generator>
197200
<SubType>Designer</SubType>
198201
</ApplicationDefinition>
202+
<Compile Include="API\Kitsu\Kitsu.cs" />
199203
<Compile Include="Components\LeftNavigation\LeftNavigationControl.xaml.cs">
200204
<DependentUpon>LeftNavigationControl.xaml</DependentUpon>
201205
</Compile>

Biyori/packages.config

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<package id="Nito.Collections.Deque" version="1.0.4" targetFramework="net472" />
2121
<package id="Nito.Disposables" version="2.0.0" targetFramework="net472" />
2222
<package id="PropertyChanged.Fody" version="3.0.1" targetFramework="net472" />
23+
<package id="RestSharp" version="106.6.10" targetFramework="net472" />
2324
<package id="System.Buffers" version="4.4.0" targetFramework="net472" />
2425
<package id="System.Collections.Immutable" version="1.5.0" targetFramework="net472" />
2526
<package id="System.ComponentModel.Annotations" version="4.5.0" targetFramework="net472" />

0 commit comments

Comments
 (0)