mirror of
https://github.com/Sarsoo/Spotify.NET.git
synced 2024-12-23 14:46:26 +00:00
Some smaller fixes and ignore case when parsing type of iplayableitem, fixes #604
This commit is contained in:
parent
d72235e42b
commit
16a831ad40
@ -51,7 +51,7 @@ namespace Example.CLI.PersistentConfig
|
|||||||
var json = await File.ReadAllTextAsync(CredentialsPath);
|
var json = await File.ReadAllTextAsync(CredentialsPath);
|
||||||
var token = JsonConvert.DeserializeObject<PKCETokenResponse>(json);
|
var token = JsonConvert.DeserializeObject<PKCETokenResponse>(json);
|
||||||
|
|
||||||
var authenticator = new PKCEAuthenticator(clientId!, token);
|
var authenticator = new PKCEAuthenticator(clientId!, token!);
|
||||||
authenticator.TokenRefreshed += (sender, token) => File.WriteAllText(CredentialsPath, JsonConvert.SerializeObject(token));
|
authenticator.TokenRefreshed += (sender, token) => File.WriteAllText(CredentialsPath, JsonConvert.SerializeObject(token));
|
||||||
|
|
||||||
var config = SpotifyClientConfig.CreateDefault()
|
var config = SpotifyClientConfig.CreateDefault()
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
|
||||||
@ -18,5 +20,23 @@ namespace SpotifyAPI.Web.Tests
|
|||||||
var serialized = JsonConvert.SerializeObject(context);
|
var serialized = JsonConvert.SerializeObject(context);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task PlayableItemConverter_Reserialize()
|
||||||
|
{
|
||||||
|
// This has lowercase field names since it's a spotify response
|
||||||
|
var fixture = await File.ReadAllTextAsync(
|
||||||
|
Path.Join(TestContext.CurrentContext.TestDirectory, "Fixtures/full_playlist_response.json")
|
||||||
|
);
|
||||||
|
|
||||||
|
var fullPlaylist = JsonConvert.DeserializeObject<FullPlaylist>(fixture);
|
||||||
|
// This whill have uppercase field names since we use default JsonConvert settings
|
||||||
|
var serialized = JsonConvert.SerializeObject(fullPlaylist);
|
||||||
|
|
||||||
|
Assert.DoesNotThrow(() =>
|
||||||
|
{
|
||||||
|
var deserialized = JsonConvert.DeserializeObject<FullPlaylist>(serialized);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net5.0;netcoreapp3.1;netcoreapp2.2</TargetFrameworks>
|
<TargetFrameworks>net5.0;netcoreapp3.1;netcoreapp2.2</TargetFrameworks>
|
||||||
|
<LangVersion>9.0</LangVersion>
|
||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
@ -18,4 +19,10 @@
|
|||||||
<ProjectReference Include="..\SpotifyAPI.Web.Auth\SpotifyAPI.Web.Auth.csproj" />
|
<ProjectReference Include="..\SpotifyAPI.Web.Auth\SpotifyAPI.Web.Auth.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Fixtures\*.*">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -46,9 +46,12 @@ namespace SpotifyAPI.Web
|
|||||||
{
|
{
|
||||||
JObject bodyObject = JObject.Parse(body!);
|
JObject bodyObject = JObject.Parse(body!);
|
||||||
|
|
||||||
|
|
||||||
var error = bodyObject.Value<JToken>("error");
|
var error = bodyObject.Value<JToken>("error");
|
||||||
if (error.Type == JTokenType.String)
|
if (error == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else if (error.Type == JTokenType.String)
|
||||||
{
|
{
|
||||||
return error.ToString();
|
return error.ToString();
|
||||||
}
|
}
|
||||||
|
@ -15,24 +15,23 @@ namespace SpotifyAPI.Web
|
|||||||
{
|
{
|
||||||
Ensure.ArgumentNotNull(serializer, nameof(serializer));
|
Ensure.ArgumentNotNull(serializer, nameof(serializer));
|
||||||
|
|
||||||
var token = JToken.ReadFrom(reader);
|
if (JToken.ReadFrom(reader) is not JObject obj)
|
||||||
if (token.Type == JTokenType.Null)
|
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var type = token["type"]?.Value<string>();
|
var type = obj.GetValue("type", StringComparison.OrdinalIgnoreCase)?.Value<string>();
|
||||||
if (type == "track")
|
if (string.Equals(type, "track", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
var obj = new FullTrack();
|
var track = new FullTrack();
|
||||||
serializer.Populate(token.CreateReader(), obj);
|
serializer.Populate(obj.CreateReader(), track);
|
||||||
return obj;
|
return track;
|
||||||
}
|
}
|
||||||
else if (type == "episode")
|
else if (string.Equals(type, "episode", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
var obj = new FullEpisode();
|
var episode = new FullEpisode();
|
||||||
serializer.Populate(token.CreateReader(), obj);
|
serializer.Populate(obj.CreateReader(), episode);
|
||||||
return obj;
|
return episode;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user