Skip to content

Commit f7ba9c6

Browse files
committed
Only parse JSON when content-type is set to JSON
1 parent e3705f0 commit f7ba9c6

File tree

4 files changed

+29
-20
lines changed

4 files changed

+29
-20
lines changed

SpotifyAPI.Web/Clients/FollowClient.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public async Task<bool> Follow(FollowRequest request, CancellationToken cancel =
3333
var statusCode = await API
3434
.Put(URLs.CurrentUserFollower(), request.BuildQueryParams(), request.BuildBodyParams(), cancel)
3535
.ConfigureAwait(false);
36-
return statusCode == HttpStatusCode.NoContent;
36+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
3737
}
3838

3939
public async Task<bool> FollowPlaylist(string playlistId, CancellationToken cancel = default)
@@ -78,7 +78,7 @@ public async Task<bool> Unfollow(UnfollowRequest request, CancellationToken canc
7878
var statusCode = await API
7979
.Delete(URLs.CurrentUserFollower(), request.BuildQueryParams(), request.BuildBodyParams(), cancel)
8080
.ConfigureAwait(false);
81-
return statusCode == HttpStatusCode.NoContent;
81+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
8282
}
8383

8484
public async Task<bool> UnfollowPlaylist(string playlistId, CancellationToken cancel = default)

SpotifyAPI.Web/Clients/PlayerClient.cs

+14-14
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public async Task<bool> AddToQueue(PlayerAddToQueueRequest request, Cancellation
1515
Ensure.ArgumentNotNull(request, nameof(request));
1616

1717
HttpStatusCode statusCode = await API.Post(URLs.PlayerQueue(), request.BuildQueryParams(), null, cancel).ConfigureAwait(false);
18-
return statusCode == HttpStatusCode.NoContent;
18+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
1919
}
2020

2121
public Task<QueueResponse> GetQueue(CancellationToken cancel = default)
@@ -62,21 +62,21 @@ public Task<CursorPaging<PlayHistoryItem>> GetRecentlyPlayed(PlayerRecentlyPlaye
6262
public async Task<bool> PausePlayback(CancellationToken cancel = default)
6363
{
6464
HttpStatusCode statusCode = await API.Put(URLs.PlayerPause(), null, null, cancel).ConfigureAwait(false);
65-
return statusCode == HttpStatusCode.NoContent;
65+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
6666
}
6767

6868
public async Task<bool> PausePlayback(PlayerPausePlaybackRequest request, CancellationToken cancel = default)
6969
{
7070
Ensure.ArgumentNotNull(request, nameof(request));
7171

7272
HttpStatusCode statusCode = await API.Put(URLs.PlayerPause(), request.BuildQueryParams(), null, cancel).ConfigureAwait(false);
73-
return statusCode == HttpStatusCode.NoContent;
73+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
7474
}
7575

7676
public async Task<bool> ResumePlayback(CancellationToken cancel = default)
7777
{
7878
HttpStatusCode statusCode = await API.Put(URLs.PlayerResume(), null, null, cancel).ConfigureAwait(false);
79-
return statusCode == HttpStatusCode.NoContent;
79+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
8080
}
8181

8282
public async Task<bool> ResumePlayback(PlayerResumePlaybackRequest request, CancellationToken cancel = default)
@@ -86,75 +86,75 @@ public async Task<bool> ResumePlayback(PlayerResumePlaybackRequest request, Canc
8686
HttpStatusCode statusCode = await API
8787
.Put(URLs.PlayerResume(), request.BuildQueryParams(), request.BuildBodyParams(), cancel)
8888
.ConfigureAwait(false);
89-
return statusCode == HttpStatusCode.NoContent;
89+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
9090
}
9191

9292
public async Task<bool> SeekTo(PlayerSeekToRequest request, CancellationToken cancel = default)
9393
{
9494
Ensure.ArgumentNotNull(request, nameof(request));
9595

9696
HttpStatusCode statusCode = await API.Put(URLs.PlayerSeek(), request.BuildQueryParams(), null, cancel).ConfigureAwait(false);
97-
return statusCode == HttpStatusCode.NoContent;
97+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
9898
}
9999

100100
public async Task<bool> SetRepeat(PlayerSetRepeatRequest request, CancellationToken cancel = default)
101101
{
102102
Ensure.ArgumentNotNull(request, nameof(request));
103103

104104
HttpStatusCode statusCode = await API.Put(URLs.PlayerRepeat(), request.BuildQueryParams(), null, cancel).ConfigureAwait(false);
105-
return statusCode == HttpStatusCode.NoContent;
105+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
106106
}
107107

108108
public async Task<bool> SetShuffle(PlayerShuffleRequest request, CancellationToken cancel = default)
109109
{
110110
Ensure.ArgumentNotNull(request, nameof(request));
111111

112112
HttpStatusCode statusCode = await API.Put(URLs.PlayerShuffle(), request.BuildQueryParams(), null, cancel).ConfigureAwait(false);
113-
return statusCode == HttpStatusCode.NoContent;
113+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
114114
}
115115

116116
public async Task<bool> SetVolume(PlayerVolumeRequest request, CancellationToken cancel = default)
117117
{
118118
Ensure.ArgumentNotNull(request, nameof(request));
119119

120120
HttpStatusCode statusCode = await API.Put(URLs.PlayerVolume(), request.BuildQueryParams(), null, cancel).ConfigureAwait(false);
121-
return statusCode == HttpStatusCode.NoContent;
121+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
122122
}
123123

124124
public async Task<bool> SkipNext(CancellationToken cancel = default)
125125
{
126126
HttpStatusCode statusCode = await API.Post(URLs.PlayerNext(), null, null, cancel).ConfigureAwait(false);
127-
return statusCode == HttpStatusCode.NoContent;
127+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
128128
}
129129

130130
public async Task<bool> SkipNext(PlayerSkipNextRequest request, CancellationToken cancel = default)
131131
{
132132
Ensure.ArgumentNotNull(request, nameof(request));
133133

134134
HttpStatusCode statusCode = await API.Post(URLs.PlayerNext(), request.BuildQueryParams(), null, cancel).ConfigureAwait(false);
135-
return statusCode == HttpStatusCode.NoContent;
135+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
136136
}
137137

138138
public async Task<bool> SkipPrevious(CancellationToken cancel = default)
139139
{
140140
HttpStatusCode statusCode = await API.Post(URLs.PlayerPrevious(), null, null, cancel).ConfigureAwait(false);
141-
return statusCode == HttpStatusCode.NoContent;
141+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
142142
}
143143

144144
public async Task<bool> SkipPrevious(PlayerSkipPreviousRequest request, CancellationToken cancel = default)
145145
{
146146
Ensure.ArgumentNotNull(request, nameof(request));
147147

148148
HttpStatusCode statusCode = await API.Post(URLs.PlayerPrevious(), request.BuildQueryParams(), null, cancel).ConfigureAwait(false);
149-
return statusCode == HttpStatusCode.NoContent;
149+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
150150
}
151151

152152
public async Task<bool> TransferPlayback(PlayerTransferPlaybackRequest request, CancellationToken cancel = default)
153153
{
154154
Ensure.ArgumentNotNull(request, nameof(request));
155155

156156
HttpStatusCode statusCode = await API.Put(URLs.Player(), null, request.BuildBodyParams(), cancel).ConfigureAwait(false);
157-
return statusCode == HttpStatusCode.NoContent;
157+
return HTTPUtil.StatusCodeIsSuccess(statusCode);
158158
}
159159
}
160160
}

SpotifyAPI.Web/Http/NewtonsoftJSONSerializer.cs

+1-4
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,7 @@ public IAPIResponse<T> DeserializeResponse<T>(IResponse response)
3030
{
3131
Ensure.ArgumentNotNull(response, nameof(response));
3232

33-
if (
34-
(
35-
response.ContentType?.Equals("application/json", StringComparison.Ordinal) is true || response.ContentType == null
36-
))
33+
if (response.ContentType?.Equals("application/json", StringComparison.OrdinalIgnoreCase) is true)
3734
{
3835
var body = JsonConvert.DeserializeObject<T>(response.Body as string ?? "", _serializerSettings);
3936
return new APIResponse<T>(response, body!);

SpotifyAPI.Web/Util/HTTP.cs

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System.Net;
2+
3+
namespace SpotifyAPI.Web
4+
{
5+
internal static class HTTPUtil
6+
{
7+
public static bool StatusCodeIsSuccess(HttpStatusCode statusCode)
8+
{
9+
return ((int)statusCode >= 200) && ((int)statusCode <= 299);
10+
}
11+
}
12+
}

0 commit comments

Comments
 (0)