mirror of
https://github.com/Sarsoo/Spotify.NET.git
synced 2024-12-24 23:16:28 +00:00
Replaced all occurances of checking whether a string is empty via str == "" with String.IsNullOrEmpty(str)
sealed StringAttribute because it is only contains text as attribute sealed SpotifyWebAPI class as it implements IDisposable Changed Exception catching where the Exception is not used to ignore the Exception object Removed Console.WriteLine("Exception: " + e.Message) int HttpProcessor.Process as it is a library function which might not be used in a console application
This commit is contained in:
parent
861f4e5969
commit
10c8944e05
@ -125,7 +125,7 @@ namespace SpotifyAPI.Local.Models
|
|||||||
{
|
{
|
||||||
wc.Proxy = null;
|
wc.Proxy = null;
|
||||||
String url = GetAlbumArtUrl(size);
|
String url = GetAlbumArtUrl(size);
|
||||||
if (url == "")
|
if (String.IsNullOrEmpty(url))
|
||||||
return null;
|
return null;
|
||||||
var data = wc.DownloadData(url);
|
var data = wc.DownloadData(url);
|
||||||
using (MemoryStream ms = new MemoryStream(data))
|
using (MemoryStream ms = new MemoryStream(data))
|
||||||
@ -146,7 +146,7 @@ namespace SpotifyAPI.Local.Models
|
|||||||
{
|
{
|
||||||
wc.Proxy = null;
|
wc.Proxy = null;
|
||||||
String url = GetAlbumArtUrl(size);
|
String url = GetAlbumArtUrl(size);
|
||||||
if (url == "")
|
if (String.IsNullOrEmpty(url))
|
||||||
return null;
|
return null;
|
||||||
return wc.DownloadData(url);
|
return wc.DownloadData(url);
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ namespace SpotifyAPI.Local
|
|||||||
{
|
{
|
||||||
OauthKey = GetOAuthKey();
|
OauthKey = GetOAuthKey();
|
||||||
CfidKey = GetCfid();
|
CfidKey = GetCfid();
|
||||||
return CfidKey != "";
|
return !String.IsNullOrEmpty(CfidKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal async void SendPauseRequest()
|
internal async void SendPauseRequest()
|
||||||
@ -46,7 +46,7 @@ namespace SpotifyAPI.Local
|
|||||||
internal StatusResponse GetNewStatus()
|
internal StatusResponse GetNewStatus()
|
||||||
{
|
{
|
||||||
String response = Query("remote/status.json", true, true, -1);
|
String response = Query("remote/status.json", true, true, -1);
|
||||||
if (response == "")
|
if (String.IsNullOrEmpty(response))
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -77,7 +77,7 @@ namespace SpotifyAPI.Local
|
|||||||
if (cfidList == null)
|
if (cfidList == null)
|
||||||
return "";
|
return "";
|
||||||
if (cfidList.Count != 1)
|
if (cfidList.Count != 1)
|
||||||
throw new Exception("CFID couldn't be loaded");
|
throw new Exception("CFID could not be loaded");
|
||||||
return cfidList[0].Error == null ? cfidList[0].Token : "";
|
return cfidList[0].Error == null ? cfidList[0].Token : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,9 +114,9 @@ namespace SpotifyAPI.Local
|
|||||||
response = "[ " + wc.DownloadString(address) + " ]";
|
response = "[ " + wc.DownloadString(address) + " ]";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch
|
||||||
{
|
{
|
||||||
return "";
|
return String.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
@ -155,9 +155,9 @@ namespace SpotifyAPI.Local
|
|||||||
response = "[ " + await wc.DownloadStringTaskAsync(new Uri(address)) + " ]";
|
response = "[ " + await wc.DownloadStringTaskAsync(new Uri(address)) + " ]";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch
|
||||||
{
|
{
|
||||||
return "";
|
return String.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
|
@ -12,7 +12,7 @@ namespace SpotifyAPI.Local
|
|||||||
{
|
{
|
||||||
[DllImport("user32.dll")]
|
[DllImport("user32.dll")]
|
||||||
private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
|
private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
|
||||||
[DllImport("nircmd.dll")]
|
[DllImport("nircmd.dll", CharSet = CharSet.Auto)]
|
||||||
private static extern bool DoNirCmd(String nirCmdStr);
|
private static extern bool DoNirCmd(String nirCmdStr);
|
||||||
|
|
||||||
private bool _listenForEvents;
|
private bool _listenForEvents;
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<DocumentationFile>bin\Debug\SpotifyAPI.XML</DocumentationFile>
|
<DocumentationFile>bin\Debug\SpotifyAPI.XML</DocumentationFile>
|
||||||
<NoWarn>1591</NoWarn>
|
<NoWarn>1591</NoWarn>
|
||||||
|
<CodeAnalysisRuleSet>..\..\..\My Data\Dokumente\Visual Studio 2015\Projects\BackupAudioRecorder\AudioRecordTest\MAXRULES.ruleset</CodeAnalysisRuleSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
|
@ -79,15 +79,13 @@ namespace SpotifyAPI.Web
|
|||||||
HandlePostRequest();
|
HandlePostRequest();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch
|
||||||
{
|
{
|
||||||
Console.WriteLine("Exception: " + e);
|
|
||||||
WriteFailure();
|
WriteFailure();
|
||||||
}
|
}
|
||||||
OutputStream.Flush();
|
OutputStream.Flush();
|
||||||
// bs.Flush(); // flush any remaining output
|
|
||||||
_inputStream = null;
|
_inputStream = null;
|
||||||
OutputStream = null; // bs = null;
|
OutputStream = null;
|
||||||
_socket.Close();
|
_socket.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,7 +95,7 @@ namespace SpotifyAPI.Web
|
|||||||
string[] tokens = request.Split(' ');
|
string[] tokens = request.Split(' ');
|
||||||
if (tokens.Length < 2)
|
if (tokens.Length < 2)
|
||||||
{
|
{
|
||||||
throw new Exception("invalid http request line");
|
throw new Exception("Invalid HTTP request line");
|
||||||
}
|
}
|
||||||
HttpMethod = tokens[0].ToUpper();
|
HttpMethod = tokens[0].ToUpper();
|
||||||
HttpUrl = tokens[1];
|
HttpUrl = tokens[1];
|
||||||
@ -108,7 +106,7 @@ namespace SpotifyAPI.Web
|
|||||||
String line;
|
String line;
|
||||||
while ((line = StreamReadLine(_inputStream)) != null)
|
while ((line = StreamReadLine(_inputStream)) != null)
|
||||||
{
|
{
|
||||||
if (line.Equals(""))
|
if (String.IsNullOrEmpty(line))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -116,7 +114,7 @@ namespace SpotifyAPI.Web
|
|||||||
int separator = line.IndexOf(':');
|
int separator = line.IndexOf(':');
|
||||||
if (separator == -1)
|
if (separator == -1)
|
||||||
{
|
{
|
||||||
throw new Exception("invalid http header line: " + line);
|
throw new Exception("Invalid HTTP header line: " + line);
|
||||||
}
|
}
|
||||||
String name = line.Substring(0, separator);
|
String name = line.Substring(0, separator);
|
||||||
int pos = separator + 1;
|
int pos = separator + 1;
|
||||||
@ -149,9 +147,7 @@ namespace SpotifyAPI.Web
|
|||||||
var contentLen = Convert.ToInt32(HttpHeaders["Content-Length"]);
|
var contentLen = Convert.ToInt32(HttpHeaders["Content-Length"]);
|
||||||
if (contentLen > MaxPostSize)
|
if (contentLen > MaxPostSize)
|
||||||
{
|
{
|
||||||
throw new Exception(
|
throw new Exception(String.Format("POST Content-Length({0}) too big for this simple server", contentLen));
|
||||||
String.Format("POST Content-Length({0}) too big for this simple server",
|
|
||||||
contentLen));
|
|
||||||
}
|
}
|
||||||
byte[] buf = new byte[BufSize];
|
byte[] buf = new byte[BufSize];
|
||||||
int toRead = contentLen;
|
int toRead = contentLen;
|
||||||
@ -164,7 +160,7 @@ namespace SpotifyAPI.Web
|
|||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
throw new Exception("client disconnected during post");
|
throw new Exception("Client disconnected during post");
|
||||||
}
|
}
|
||||||
toRead -= numread;
|
toRead -= numread;
|
||||||
ms.Write(buf, 0, numread);
|
ms.Write(buf, 0, numread);
|
||||||
@ -207,6 +203,8 @@ namespace SpotifyAPI.Web
|
|||||||
{
|
{
|
||||||
IsActive = false;
|
IsActive = false;
|
||||||
_listener.Stop();
|
_listener.Stop();
|
||||||
|
Dispose();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Listen()
|
public void Listen()
|
||||||
@ -276,7 +274,6 @@ namespace SpotifyAPI.Web
|
|||||||
p.OutputStream.WriteLine("<html><body><h1>Spotify Auth canceled!</h1></body></html>");
|
p.OutputStream.WriteLine("<html><body><h1>Spotify Auth canceled!</h1></body></html>");
|
||||||
t = new Thread(o =>
|
t = new Thread(o =>
|
||||||
{
|
{
|
||||||
//_funcOne(null, col.Get(1), col.Get(0));
|
|
||||||
if(OnAuth != null)
|
if(OnAuth != null)
|
||||||
OnAuth(new AuthEventArgs()
|
OnAuth(new AuthEventArgs()
|
||||||
{
|
{
|
||||||
|
@ -9,7 +9,7 @@ using SpotifyAPI.Web.Models;
|
|||||||
|
|
||||||
namespace SpotifyAPI.Web
|
namespace SpotifyAPI.Web
|
||||||
{
|
{
|
||||||
public class SpotifyWebAPI : IDisposable
|
public sealed class SpotifyWebAPI : IDisposable
|
||||||
{
|
{
|
||||||
public const String APIBase = "https://api.spotify.com/v1";
|
public const String APIBase = "https://api.spotify.com/v1";
|
||||||
|
|
||||||
@ -35,6 +35,7 @@ namespace SpotifyAPI.Web
|
|||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
WebClient.Dispose();
|
WebClient.Dispose();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Search
|
#region Search
|
||||||
@ -56,7 +57,7 @@ namespace SpotifyAPI.Web
|
|||||||
builder.Append("&type=" + type.GetStringAttribute(","));
|
builder.Append("&type=" + type.GetStringAttribute(","));
|
||||||
builder.Append("&limit=" + limit);
|
builder.Append("&limit=" + limit);
|
||||||
builder.Append("&offset=" + offset);
|
builder.Append("&offset=" + offset);
|
||||||
if (market != "")
|
if (!String.IsNullOrEmpty(market))
|
||||||
builder.Append("&market=" + market);
|
builder.Append("&market=" + market);
|
||||||
return DownloadData<SearchItem>(builder.ToString());
|
return DownloadData<SearchItem>(builder.ToString());
|
||||||
}
|
}
|
||||||
@ -80,7 +81,7 @@ namespace SpotifyAPI.Web
|
|||||||
StringBuilder builder = new StringBuilder(APIBase + "/albums/" + id + "/tracks");
|
StringBuilder builder = new StringBuilder(APIBase + "/albums/" + id + "/tracks");
|
||||||
builder.Append("?limit=" + limit);
|
builder.Append("?limit=" + limit);
|
||||||
builder.Append("&offset=" + offset);
|
builder.Append("&offset=" + offset);
|
||||||
if (market != "")
|
if (!String.IsNullOrEmpty(market))
|
||||||
builder.Append("&market=" + market);
|
builder.Append("&market=" + market);
|
||||||
return DownloadData<Paging<SimpleTrack>>(builder.ToString());
|
return DownloadData<Paging<SimpleTrack>>(builder.ToString());
|
||||||
}
|
}
|
||||||
@ -93,7 +94,7 @@ namespace SpotifyAPI.Web
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public FullAlbum GetAlbum(String id, String market = "")
|
public FullAlbum GetAlbum(String id, String market = "")
|
||||||
{
|
{
|
||||||
if (market == "")
|
if (String.IsNullOrEmpty(market))
|
||||||
return DownloadData<FullAlbum>(APIBase + "/albums/" + id);
|
return DownloadData<FullAlbum>(APIBase + "/albums/" + id);
|
||||||
return DownloadData<FullAlbum>(APIBase + "/albums/" + id + "?market=" + market);
|
return DownloadData<FullAlbum>(APIBase + "/albums/" + id + "?market=" + market);
|
||||||
}
|
}
|
||||||
@ -106,7 +107,7 @@ namespace SpotifyAPI.Web
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public SeveralAlbums GetSeveralAlbums(List<String> ids, String market = "")
|
public SeveralAlbums GetSeveralAlbums(List<String> ids, String market = "")
|
||||||
{
|
{
|
||||||
if (market == "")
|
if (String.IsNullOrEmpty(market))
|
||||||
return DownloadData<SeveralAlbums>(APIBase + "/albums?ids=" + string.Join(",", ids.Take(20)));
|
return DownloadData<SeveralAlbums>(APIBase + "/albums?ids=" + string.Join(",", ids.Take(20)));
|
||||||
return DownloadData<SeveralAlbums>(APIBase + "/albums?market=" + market + "&ids=" + string.Join(",", ids.Take(20)));
|
return DownloadData<SeveralAlbums>(APIBase + "/albums?market=" + market + "&ids=" + string.Join(",", ids.Take(20)));
|
||||||
}
|
}
|
||||||
@ -170,7 +171,7 @@ namespace SpotifyAPI.Web
|
|||||||
builder.Append("?type=" + type.GetStringAttribute(","));
|
builder.Append("?type=" + type.GetStringAttribute(","));
|
||||||
builder.Append("&limit=" + limit);
|
builder.Append("&limit=" + limit);
|
||||||
builder.Append("&offset=" + offset);
|
builder.Append("&offset=" + offset);
|
||||||
if (market != "")
|
if (!String.IsNullOrEmpty(market))
|
||||||
builder.Append("&market=" + market);
|
builder.Append("&market=" + market);
|
||||||
return DownloadData<Paging<SimpleAlbum>>(builder.ToString());
|
return DownloadData<Paging<SimpleAlbum>>(builder.ToString());
|
||||||
}
|
}
|
||||||
@ -209,9 +210,9 @@ namespace SpotifyAPI.Web
|
|||||||
StringBuilder builder = new StringBuilder(APIBase + "/browse/featured-playlists");
|
StringBuilder builder = new StringBuilder(APIBase + "/browse/featured-playlists");
|
||||||
builder.Append("?limit=" + limit);
|
builder.Append("?limit=" + limit);
|
||||||
builder.Append("&offset=" + offset);
|
builder.Append("&offset=" + offset);
|
||||||
if (locale != "")
|
if (!String.IsNullOrEmpty(locale))
|
||||||
builder.Append("&locale=" + locale);
|
builder.Append("&locale=" + locale);
|
||||||
if (country != "")
|
if (!String.IsNullOrEmpty(country))
|
||||||
builder.Append("&country=" + country);
|
builder.Append("&country=" + country);
|
||||||
if (timestamp != default(DateTime))
|
if (timestamp != default(DateTime))
|
||||||
builder.Append("×tamp=" + timestamp.ToString("yyyy-MM-ddTHH:mm:ss"));
|
builder.Append("×tamp=" + timestamp.ToString("yyyy-MM-ddTHH:mm:ss"));
|
||||||
@ -234,7 +235,7 @@ namespace SpotifyAPI.Web
|
|||||||
StringBuilder builder = new StringBuilder(APIBase + "/browse/new-releases");
|
StringBuilder builder = new StringBuilder(APIBase + "/browse/new-releases");
|
||||||
builder.Append("?limit=" + limit);
|
builder.Append("?limit=" + limit);
|
||||||
builder.Append("&offset=" + offset);
|
builder.Append("&offset=" + offset);
|
||||||
if (country != "")
|
if (!String.IsNullOrEmpty(country))
|
||||||
builder.Append("&country=" + country);
|
builder.Append("&country=" + country);
|
||||||
return DownloadData<NewAlbumReleases>(builder.ToString());
|
return DownloadData<NewAlbumReleases>(builder.ToString());
|
||||||
}
|
}
|
||||||
@ -262,9 +263,9 @@ namespace SpotifyAPI.Web
|
|||||||
StringBuilder builder = new StringBuilder(APIBase + "/browse/categories");
|
StringBuilder builder = new StringBuilder(APIBase + "/browse/categories");
|
||||||
builder.Append("?limit=" + limit);
|
builder.Append("?limit=" + limit);
|
||||||
builder.Append("&offset=" + offset);
|
builder.Append("&offset=" + offset);
|
||||||
if (country != "")
|
if (!String.IsNullOrEmpty(country))
|
||||||
builder.Append("&country=" + country);
|
builder.Append("&country=" + country);
|
||||||
if (locale != "")
|
if (!String.IsNullOrEmpty(locale))
|
||||||
builder.Append("&locale=" + locale);
|
builder.Append("&locale=" + locale);
|
||||||
return DownloadData<CategoryList>(builder.ToString());
|
return DownloadData<CategoryList>(builder.ToString());
|
||||||
}
|
}
|
||||||
@ -286,9 +287,9 @@ namespace SpotifyAPI.Web
|
|||||||
public Category GetCategory(String categoryId, String country = "", String locale = "")
|
public Category GetCategory(String categoryId, String country = "", String locale = "")
|
||||||
{
|
{
|
||||||
StringBuilder builder = new StringBuilder(APIBase + "/browse/categories/" + categoryId);
|
StringBuilder builder = new StringBuilder(APIBase + "/browse/categories/" + categoryId);
|
||||||
if (country != "")
|
if (!String.IsNullOrEmpty(country))
|
||||||
builder.Append("?country=" + country);
|
builder.Append("?country=" + country);
|
||||||
if (locale != "")
|
if (!String.IsNullOrEmpty(locale))
|
||||||
builder.Append((country == "" ? "?locale=" : "&locale=") + locale);
|
builder.Append((country == "" ? "?locale=" : "&locale=") + locale);
|
||||||
return DownloadData<Category>(builder.ToString());
|
return DownloadData<Category>(builder.ToString());
|
||||||
}
|
}
|
||||||
@ -308,7 +309,7 @@ namespace SpotifyAPI.Web
|
|||||||
StringBuilder builder = new StringBuilder(APIBase + "/browse/categories/" + categoryId + "/playlists");
|
StringBuilder builder = new StringBuilder(APIBase + "/browse/categories/" + categoryId + "/playlists");
|
||||||
builder.Append("?limit=" + limit);
|
builder.Append("?limit=" + limit);
|
||||||
builder.Append("&offset=" + offset);
|
builder.Append("&offset=" + offset);
|
||||||
if (country != "")
|
if (!String.IsNullOrEmpty(country))
|
||||||
builder.Append("&country=" + country);
|
builder.Append("&country=" + country);
|
||||||
return DownloadData<CategoryPlaylist>(builder.ToString());
|
return DownloadData<CategoryPlaylist>(builder.ToString());
|
||||||
}
|
}
|
||||||
@ -332,7 +333,7 @@ namespace SpotifyAPI.Web
|
|||||||
const FollowType followType = FollowType.Artist; //currently only artist is supported.
|
const FollowType followType = FollowType.Artist; //currently only artist is supported.
|
||||||
StringBuilder builder = new StringBuilder(APIBase + "/me/following?type=" + followType.GetStringAttribute(""));
|
StringBuilder builder = new StringBuilder(APIBase + "/me/following?type=" + followType.GetStringAttribute(""));
|
||||||
builder.Append("&limit=" + limit);
|
builder.Append("&limit=" + limit);
|
||||||
if (after != "")
|
if (!String.IsNullOrEmpty(after))
|
||||||
builder.Append("&after=" + after);
|
builder.Append("&after=" + after);
|
||||||
return DownloadData<FollowedArtists>(builder.ToString());
|
return DownloadData<FollowedArtists>(builder.ToString());
|
||||||
}
|
}
|
||||||
@ -531,7 +532,7 @@ namespace SpotifyAPI.Web
|
|||||||
StringBuilder builder = new StringBuilder(APIBase + "/me/tracks");
|
StringBuilder builder = new StringBuilder(APIBase + "/me/tracks");
|
||||||
builder.Append("?limit=" + limit);
|
builder.Append("?limit=" + limit);
|
||||||
builder.Append("&offset=" + offset);
|
builder.Append("&offset=" + offset);
|
||||||
if (market != "")
|
if (!String.IsNullOrEmpty(market))
|
||||||
builder.Append("&market=" + market);
|
builder.Append("&market=" + market);
|
||||||
return DownloadData<Paging<SavedTrack>>(builder.ToString());
|
return DownloadData<Paging<SavedTrack>>(builder.ToString());
|
||||||
}
|
}
|
||||||
@ -605,7 +606,7 @@ namespace SpotifyAPI.Web
|
|||||||
throw new InvalidOperationException("Auth is required for GetPlaylist");
|
throw new InvalidOperationException("Auth is required for GetPlaylist");
|
||||||
StringBuilder builder = new StringBuilder(APIBase + "/users/" + userId + "/playlists/" + playlistId);
|
StringBuilder builder = new StringBuilder(APIBase + "/users/" + userId + "/playlists/" + playlistId);
|
||||||
builder.Append("?fields=" + fields);
|
builder.Append("?fields=" + fields);
|
||||||
if (market != "")
|
if (!String.IsNullOrEmpty(market))
|
||||||
builder.Append("&market=" + market);
|
builder.Append("&market=" + market);
|
||||||
return DownloadData<FullPlaylist>(builder.ToString());
|
return DownloadData<FullPlaylist>(builder.ToString());
|
||||||
}
|
}
|
||||||
@ -633,7 +634,7 @@ namespace SpotifyAPI.Web
|
|||||||
builder.Append("?fields=" + fields);
|
builder.Append("?fields=" + fields);
|
||||||
builder.Append("&limit=" + limit);
|
builder.Append("&limit=" + limit);
|
||||||
builder.Append("&offset=" + offset);
|
builder.Append("&offset=" + offset);
|
||||||
if (market != "")
|
if (!String.IsNullOrEmpty(market))
|
||||||
builder.Append("&market=" + market);
|
builder.Append("&market=" + market);
|
||||||
return DownloadData<Paging<PlaylistTrack>>(builder.ToString());
|
return DownloadData<Paging<PlaylistTrack>>(builder.ToString());
|
||||||
}
|
}
|
||||||
@ -785,7 +786,7 @@ namespace SpotifyAPI.Web
|
|||||||
{"range_length", rangeLength},
|
{"range_length", rangeLength},
|
||||||
{"insert_before", insertBefore}
|
{"insert_before", insertBefore}
|
||||||
};
|
};
|
||||||
if (snapshotId != "")
|
if (!String.IsNullOrEmpty(snapshotId))
|
||||||
body.Add("snapshot_id", snapshotId);
|
body.Add("snapshot_id", snapshotId);
|
||||||
return UploadData<Snapshot>(APIBase + "/users/" + userId + "/playlists/" + playlistId + "/tracks", body.ToString(Formatting.None), "PUT");
|
return UploadData<Snapshot>(APIBase + "/users/" + userId + "/playlists/" + playlistId + "/tracks", body.ToString(Formatting.None), "PUT");
|
||||||
}
|
}
|
||||||
@ -828,7 +829,7 @@ namespace SpotifyAPI.Web
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public SeveralTracks GetSeveralTracks(List<String> ids, String market = "")
|
public SeveralTracks GetSeveralTracks(List<String> ids, String market = "")
|
||||||
{
|
{
|
||||||
if (market == "")
|
if (String.IsNullOrEmpty(market))
|
||||||
return DownloadData<SeveralTracks>(APIBase + "/tracks?ids=" + string.Join(",", ids.Take(50)));
|
return DownloadData<SeveralTracks>(APIBase + "/tracks?ids=" + string.Join(",", ids.Take(50)));
|
||||||
return DownloadData<SeveralTracks>(APIBase + "/tracks?market=" + market + "&ids=" + string.Join(",", ids.Take(50)));
|
return DownloadData<SeveralTracks>(APIBase + "/tracks?market=" + market + "&ids=" + string.Join(",", ids.Take(50)));
|
||||||
}
|
}
|
||||||
@ -841,7 +842,7 @@ namespace SpotifyAPI.Web
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public FullTrack GetTrack(String id, String market = "")
|
public FullTrack GetTrack(String id, String market = "")
|
||||||
{
|
{
|
||||||
if (market == "")
|
if (String.IsNullOrEmpty(market))
|
||||||
return DownloadData<FullTrack>(APIBase + "/tracks/" + id);
|
return DownloadData<FullTrack>(APIBase + "/tracks/" + id);
|
||||||
return DownloadData<FullTrack>(APIBase + "/tracks/" + id + "?market=" + market);
|
return DownloadData<FullTrack>(APIBase + "/tracks/" + id + "?market=" + market);
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ namespace SpotifyAPI.Web
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class StringAttribute : Attribute
|
public sealed class StringAttribute : Attribute
|
||||||
{
|
{
|
||||||
public String Text { get; set; }
|
public String Text { get; set; }
|
||||||
public StringAttribute(String text)
|
public StringAttribute(String text)
|
||||||
|
Loading…
Reference in New Issue
Block a user