mirror of
https://github.com/Sarsoo/IF.Lastfm.git
synced 2024-10-17 07:13:09 +01:00
Moving stuff to commands
This commit is contained in:
parent
e6cc245905
commit
6ee13480cc
@ -4,6 +4,7 @@
|
|||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using IF.Lastfm.Core.Api.Commands.AlbumApi;
|
||||||
using IF.Lastfm.Core.Api.Enums;
|
using IF.Lastfm.Core.Api.Enums;
|
||||||
using IF.Lastfm.Core.Api.Helpers;
|
using IF.Lastfm.Core.Api.Helpers;
|
||||||
using IF.Lastfm.Core.Objects;
|
using IF.Lastfm.Core.Objects;
|
||||||
@ -25,33 +26,12 @@ public AlbumApi(IAuth auth)
|
|||||||
|
|
||||||
public async Task<LastResponse<Album>> GetAlbumInfoAsync(string artistname, string albumname, bool autocorrect = false)
|
public async Task<LastResponse<Album>> GetAlbumInfoAsync(string artistname, string albumname, bool autocorrect = false)
|
||||||
{
|
{
|
||||||
const string apiMethod = "album.getInfo";
|
var command = new GetAlbumInfoCommand(Auth, artistname, albumname)
|
||||||
|
{
|
||||||
|
Autocorrect = autocorrect
|
||||||
|
};
|
||||||
|
|
||||||
var parameters = new Dictionary<string, string>
|
return await command.ExecuteAsync();
|
||||||
{
|
|
||||||
{"artist", artistname},
|
|
||||||
{"album", albumname},
|
|
||||||
{"autocorrect", Convert.ToInt32(autocorrect).ToString()}
|
|
||||||
};
|
|
||||||
|
|
||||||
var httpClient = new HttpClient();
|
|
||||||
var apiUrl = LastFm.FormatApiUrl(apiMethod, Auth.ApiKey, parameters);
|
|
||||||
var lastResponse = await httpClient.GetAsync(apiUrl);
|
|
||||||
var json = await lastResponse.Content.ReadAsStringAsync();
|
|
||||||
|
|
||||||
LastFmApiError error;
|
|
||||||
if (LastFm.IsResponseValid(json, out error) && lastResponse.IsSuccessStatusCode)
|
|
||||||
{
|
|
||||||
var jtoken = JsonConvert.DeserializeObject<JToken>(json);
|
|
||||||
|
|
||||||
var album = Album.ParseJToken(jtoken.SelectToken("album"));
|
|
||||||
|
|
||||||
return LastResponse<Album>.CreateSuccessResponse(album);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return LastResponse<Album>.CreateErrorResponse(error);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<LastResponse<Album>> GetAlbumInfoWithMbidAsync(string mbid, bool autocorrect = false)
|
public Task<LastResponse<Album>> GetAlbumInfoWithMbidAsync(string mbid, bool autocorrect = false)
|
||||||
|
63
IF.Lastfm.Core/Api/Commands/AlbumApi/GetAbumInfoCommand.cs
Normal file
63
IF.Lastfm.Core/Api/Commands/AlbumApi/GetAbumInfoCommand.cs
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using IF.Lastfm.Core.Api.Enums;
|
||||||
|
using IF.Lastfm.Core.Api.Helpers;
|
||||||
|
using IF.Lastfm.Core.Objects;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
namespace IF.Lastfm.Core.Api.Commands.AlbumApi
|
||||||
|
{
|
||||||
|
internal class GetAlbumInfoCommand : GetAsyncCommandBase<LastResponse<Album>>
|
||||||
|
{
|
||||||
|
public string ArtistName { get; private set; }
|
||||||
|
public string AlbumName { get; private set; }
|
||||||
|
public bool Autocorrect { get; set; }
|
||||||
|
|
||||||
|
public GetAlbumInfoCommand(IAuth auth, string artistname, string albumname) : base(auth)
|
||||||
|
{
|
||||||
|
Method = "album.getInfo";
|
||||||
|
ArtistName = artistname;
|
||||||
|
AlbumName = albumname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async override Task<LastResponse<Album>> ExecuteAsync()
|
||||||
|
{
|
||||||
|
var parameters = new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
{"artist", ArtistName},
|
||||||
|
{"album", AlbumName},
|
||||||
|
{"autocorrect", Convert.ToInt32(Autocorrect).ToString()}
|
||||||
|
};
|
||||||
|
|
||||||
|
var apiUrl = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
||||||
|
Url = new Uri(apiUrl, UriKind.Absolute);
|
||||||
|
|
||||||
|
return await ExecuteInternal();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async override Task<LastResponse<Album>> HandleResponse(HttpResponseMessage response)
|
||||||
|
{
|
||||||
|
string json = await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
|
LastFmApiError error;
|
||||||
|
if (LastFm.IsResponseValid(json, out error) && response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
var jtoken = JsonConvert.DeserializeObject<JToken>(json);
|
||||||
|
|
||||||
|
var album = Album.ParseJToken(jtoken.SelectToken("album"));
|
||||||
|
|
||||||
|
return LastResponse<Album>.CreateSuccessResponse(album);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return LastResponse<Album>.CreateErrorResponse(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
39
IF.Lastfm.Core/Api/Commands/GetAsyncCommandBase.cs
Normal file
39
IF.Lastfm.Core/Api/Commands/GetAsyncCommandBase.cs
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IF.Lastfm.Core.Api.Commands
|
||||||
|
{
|
||||||
|
internal abstract class GetAsyncCommandBase<T> : IAsyncLastCommand<T>
|
||||||
|
{
|
||||||
|
public string Method { get; protected set; }
|
||||||
|
public Uri Url { get; protected set; }
|
||||||
|
public IAuth Auth { get; protected set; }
|
||||||
|
|
||||||
|
public int Page { get; set; }
|
||||||
|
public int Count { get; set; }
|
||||||
|
|
||||||
|
protected GetAsyncCommandBase(IAuth auth)
|
||||||
|
{
|
||||||
|
Auth = auth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract Task<T> ExecuteAsync();
|
||||||
|
|
||||||
|
protected async Task<T> ExecuteInternal()
|
||||||
|
{
|
||||||
|
var httpClient = new HttpClient();
|
||||||
|
var response = await httpClient.GetAsync(Url);
|
||||||
|
return await HandleResponse(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract Task<T> HandleResponse(HttpResponseMessage response);
|
||||||
|
|
||||||
|
protected void AddPagingParameters(Dictionary<string, string> parameters)
|
||||||
|
{
|
||||||
|
parameters.Add("page", Page.ToString());
|
||||||
|
parameters.Add("limit", Count.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
13
IF.Lastfm.Core/Api/Commands/IAsyncLastCommand.cs
Normal file
13
IF.Lastfm.Core/Api/Commands/IAsyncLastCommand.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IF.Lastfm.Core.Api.Commands
|
||||||
|
{
|
||||||
|
internal interface IAsyncLastCommand
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
internal interface IAsyncLastCommand<T>
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,76 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using IF.Lastfm.Core.Api.Enums;
|
||||||
|
using IF.Lastfm.Core.Api.Helpers;
|
||||||
|
using IF.Lastfm.Core.Objects;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
namespace IF.Lastfm.Core.Api.Commands.UserApi
|
||||||
|
{
|
||||||
|
internal class GetRecentScrobblesCommand : GetAsyncCommandBase<PageResponse<Track>>
|
||||||
|
{
|
||||||
|
public string Username { get; private set; }
|
||||||
|
public DateTime From { get; private set; }
|
||||||
|
|
||||||
|
public GetRecentScrobblesCommand(IAuth auth, string username, DateTime from) : base(auth)
|
||||||
|
{
|
||||||
|
Method = "user.getRecentTracks";
|
||||||
|
Username = username;
|
||||||
|
From = from;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async override Task<PageResponse<Track>> ExecuteAsync()
|
||||||
|
{
|
||||||
|
var parameters = new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
{"user", Username},
|
||||||
|
{"from", From.ToUnixTimestamp().ToString()}
|
||||||
|
};
|
||||||
|
|
||||||
|
base.AddPagingParameters(parameters);
|
||||||
|
|
||||||
|
var uristring = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
||||||
|
Url = new Uri(uristring, UriKind.Absolute);
|
||||||
|
|
||||||
|
return await ExecuteInternal();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async override Task<PageResponse<Track>> HandleResponse(HttpResponseMessage response)
|
||||||
|
{
|
||||||
|
var json = await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
|
LastFmApiError error;
|
||||||
|
if (LastFm.IsResponseValid(json, out error) && response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
JToken jtoken = JsonConvert.DeserializeObject<JToken>(json).SelectToken("recenttracks");
|
||||||
|
|
||||||
|
var tracksToken = jtoken.SelectToken("track");
|
||||||
|
|
||||||
|
var tracks = new List<Track>();
|
||||||
|
foreach (var track in tracksToken.Children())
|
||||||
|
{
|
||||||
|
var t = Track.ParseJToken(track);
|
||||||
|
var date = track.SelectToken("date");
|
||||||
|
var stamp = date.Value<double>("uts");
|
||||||
|
t.TimePlayed = stamp.ToDateTimeUtc();
|
||||||
|
|
||||||
|
tracks.Add(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
var pageresponse = PageResponse<Track>.CreateSuccessResponse(tracks);
|
||||||
|
|
||||||
|
var attrToken = jtoken.SelectToken("@attr");
|
||||||
|
pageresponse.AddPageInfoFromJToken(attrToken);
|
||||||
|
|
||||||
|
return pageresponse;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return PageResponse<Track>.CreateErrorResponse(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
63
IF.Lastfm.Core/Api/Commands/UserApi/GetTopAlbumsCommand.cs
Normal file
63
IF.Lastfm.Core/Api/Commands/UserApi/GetTopAlbumsCommand.cs
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using IF.Lastfm.Core.Api.Enums;
|
||||||
|
using IF.Lastfm.Core.Api.Helpers;
|
||||||
|
using IF.Lastfm.Core.Objects;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
namespace IF.Lastfm.Core.Api.Commands.UserApi
|
||||||
|
{
|
||||||
|
internal class GetTopAlbumsCommand : GetAsyncCommandBase<PageResponse<Album>>
|
||||||
|
{
|
||||||
|
public string Username { get; set; }
|
||||||
|
public LastStatsTimeSpan TimeSpan { get; set; }
|
||||||
|
|
||||||
|
public GetTopAlbumsCommand(IAuth auth, string username, LastStatsTimeSpan span) : base(auth)
|
||||||
|
{
|
||||||
|
Method = "user.getTopAlbums";
|
||||||
|
Username = username;
|
||||||
|
TimeSpan = span;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async override Task<PageResponse<Album>> ExecuteAsync()
|
||||||
|
{
|
||||||
|
var parameters = new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
{"username", Username},
|
||||||
|
{"period", TimeSpan.GetApiName()}
|
||||||
|
};
|
||||||
|
|
||||||
|
base.AddPagingParameters(parameters);
|
||||||
|
|
||||||
|
var uristring = LastFm.FormatApiUrl(Method, Auth.ApiKey, parameters);
|
||||||
|
Url = new Uri(uristring, UriKind.Absolute);
|
||||||
|
|
||||||
|
return await ExecuteInternal();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async override Task<PageResponse<Album>> HandleResponse(HttpResponseMessage response)
|
||||||
|
{
|
||||||
|
string json = await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
|
LastFmApiError error;
|
||||||
|
if (LastFm.IsResponseValid(json, out error) && response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
JToken jtoken = JsonConvert.DeserializeObject<JToken>(json);
|
||||||
|
|
||||||
|
var albumsToken = jtoken.SelectToken("topalbums").SelectToken("album");
|
||||||
|
|
||||||
|
var albums = albumsToken.Children().Select(Album.ParseJToken);
|
||||||
|
|
||||||
|
return PageResponse<Album>.CreateSuccessResponse(albums);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return PageResponse<Album>.CreateErrorResponse(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -3,6 +3,7 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using IF.Lastfm.Core.Api.Commands.UserApi;
|
||||||
using IF.Lastfm.Core.Api.Enums;
|
using IF.Lastfm.Core.Api.Enums;
|
||||||
using IF.Lastfm.Core.Api.Helpers;
|
using IF.Lastfm.Core.Api.Helpers;
|
||||||
using IF.Lastfm.Core.Objects;
|
using IF.Lastfm.Core.Objects;
|
||||||
@ -27,37 +28,15 @@ public UserApi(IAuth auth)
|
|||||||
/// <param name="startIndex"></param>
|
/// <param name="startIndex"></param>
|
||||||
/// <param name="amount"></param>
|
/// <param name="amount"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<PageResponse<Album>> GetTopAlbums(LastStatsTimeSpan span, int startIndex = 0, int amount = LastFm.DefaultPageLength)
|
public async Task<PageResponse<Album>> GetTopAlbums(LastStatsTimeSpan span, int pagenumber = 0, int count = LastFm.DefaultPageLength)
|
||||||
{
|
{
|
||||||
const string apiMethod = "user.getTopAlbums";
|
var command = new GetTopAlbumsCommand(Auth, Auth.User.Username, span)
|
||||||
|
{
|
||||||
|
Page = pagenumber,
|
||||||
|
Count = count
|
||||||
|
};
|
||||||
|
|
||||||
var parameters = new Dictionary<string, string>
|
return await command.ExecuteAsync();
|
||||||
{
|
|
||||||
{"user", Auth.User.Username},
|
|
||||||
{"period", span.GetApiName()}
|
|
||||||
};
|
|
||||||
|
|
||||||
var apiUrl = LastFm.FormatApiUrl(apiMethod, Auth.ApiKey, parameters);
|
|
||||||
|
|
||||||
var httpClient = new HttpClient();
|
|
||||||
var lastResponse = await httpClient.GetAsync(apiUrl);
|
|
||||||
var json = await lastResponse.Content.ReadAsStringAsync();
|
|
||||||
|
|
||||||
LastFmApiError error;
|
|
||||||
if (LastFm.IsResponseValid(json, out error) && lastResponse.IsSuccessStatusCode)
|
|
||||||
{
|
|
||||||
var jtoken = JsonConvert.DeserializeObject<JToken>(json);
|
|
||||||
|
|
||||||
var albumsToken = jtoken.SelectToken("topalbums").SelectToken("album");
|
|
||||||
|
|
||||||
var albums = albumsToken.Children().Select(Album.ParseJToken);
|
|
||||||
|
|
||||||
return PageResponse<Album>.CreateSuccessResponse(albums);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return PageResponse<Album>.CreateErrorResponse(error);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -68,56 +47,18 @@ public async Task<PageResponse<Album>> GetTopAlbums(LastStatsTimeSpan span, int
|
|||||||
/// <param name="pagenumber"></param>
|
/// <param name="pagenumber"></param>
|
||||||
/// <param name="endIndex"></param>
|
/// <param name="endIndex"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<PageResponse<Track>> GetRecentScrobbles(string username, DateTime since, int pagenumber, int count = LastFm.DefaultPageLength)
|
public async Task<PageResponse<Track>> GetRecentScrobbles(string username, DateTime since, int pagenumber = 0, int count = LastFm.DefaultPageLength)
|
||||||
{
|
{
|
||||||
const string apiMethod = "user.getRecentTracks";
|
var command = new GetRecentScrobblesCommand(Auth, username, since)
|
||||||
|
{
|
||||||
|
Page = pagenumber,
|
||||||
|
Count = count
|
||||||
|
};
|
||||||
|
|
||||||
var parameters = new Dictionary<string, string>
|
return await command.ExecuteAsync();
|
||||||
{
|
|
||||||
{"user", Auth.User.Username},
|
|
||||||
{"from", since.ToUnixTimestamp().ToString()},
|
|
||||||
{"page", pagenumber.ToString()},
|
|
||||||
{"limit", count.ToString()}
|
|
||||||
};
|
|
||||||
|
|
||||||
var apiUrl = LastFm.FormatApiUrl(apiMethod, Auth.ApiKey, parameters);
|
|
||||||
|
|
||||||
var httpClient = new HttpClient();
|
|
||||||
var lastResponse = await httpClient.GetAsync(apiUrl);
|
|
||||||
var json = await lastResponse.Content.ReadAsStringAsync();
|
|
||||||
|
|
||||||
LastFmApiError error;
|
|
||||||
if (LastFm.IsResponseValid(json, out error) && lastResponse.IsSuccessStatusCode)
|
|
||||||
{
|
|
||||||
var jtoken = JsonConvert.DeserializeObject<JToken>(json).SelectToken("recenttracks");
|
|
||||||
|
|
||||||
var tracksToken = jtoken.SelectToken("track");
|
|
||||||
|
|
||||||
var tracks = new List<Track>();
|
|
||||||
foreach (var track in tracksToken.Children())
|
|
||||||
{
|
|
||||||
var t = Track.ParseJToken(track);
|
|
||||||
var date = track.SelectToken("date");
|
|
||||||
var stamp = date.Value<double>("uts");
|
|
||||||
t.TimePlayed = stamp.ToDateTimeUtc();
|
|
||||||
|
|
||||||
tracks.Add(t);
|
|
||||||
}
|
|
||||||
|
|
||||||
var pageresponse = PageResponse<Track>.CreateSuccessResponse(tracks);
|
|
||||||
|
|
||||||
var attrToken = jtoken.SelectToken("@attr");
|
|
||||||
pageresponse.AddPageInfoFromJToken(attrToken);
|
|
||||||
|
|
||||||
return pageresponse;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return PageResponse<Track>.CreateErrorResponse(error);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<PageResponse<Station>> GetRecentStations(int pagenumber, int count = LastFm.DefaultPageLength)
|
public async Task<PageResponse<Station>> GetRecentStations(int pagenumber = 0, int count = LastFm.DefaultPageLength)
|
||||||
{
|
{
|
||||||
const string apiMethod = "user.getRecentStations";
|
const string apiMethod = "user.getRecentStations";
|
||||||
|
|
||||||
|
@ -40,9 +40,14 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Api\AlbumApi.cs" />
|
<Compile Include="Api\AlbumApi.cs" />
|
||||||
|
<Compile Include="Api\Commands\AlbumApi\GetAbumInfoCommand.cs" />
|
||||||
|
<Compile Include="Api\Commands\GetAsyncCommandBase.cs" />
|
||||||
|
<Compile Include="Api\Commands\UserApi\GetRecentScrobblesCommand.cs" />
|
||||||
|
<Compile Include="Api\Commands\UserApi\GetTopAlbumsCommand.cs" />
|
||||||
<Compile Include="Api\Helpers\ApiExtensions.cs" />
|
<Compile Include="Api\Helpers\ApiExtensions.cs" />
|
||||||
<Compile Include="Api\Helpers\ApiNameAttribute.cs" />
|
<Compile Include="Api\Helpers\ApiNameAttribute.cs" />
|
||||||
<Compile Include="Api\Auth.cs" />
|
<Compile Include="Api\Auth.cs" />
|
||||||
|
<Compile Include="Api\Commands\IAsyncLastCommand.cs" />
|
||||||
<Compile Include="Api\Helpers\LastResponse.cs" />
|
<Compile Include="Api\Helpers\LastResponse.cs" />
|
||||||
<Compile Include="Api\Helpers\PageResponse.cs" />
|
<Compile Include="Api\Helpers\PageResponse.cs" />
|
||||||
<Compile Include="Api\IAlbumApi.cs" />
|
<Compile Include="Api\IAlbumApi.cs" />
|
||||||
@ -100,6 +105,10 @@
|
|||||||
<HintPath>..\lib\xBrainLab.Security.Cryptography.dll</HintPath>
|
<HintPath>..\lib\xBrainLab.Security.Cryptography.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Api\Commands\ArtistApi\" />
|
||||||
|
<Folder Include="Api\Commands\TrackApi\" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
|
||||||
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
|
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
|
||||||
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.7\tools\Microsoft.Bcl.Build.targets" />
|
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.7\tools\Microsoft.Bcl.Build.targets" />
|
||||||
|
Loading…
Reference in New Issue
Block a user