Skip to content

Commit

Permalink
Асинхронный клиент и расширения
Browse files Browse the repository at this point in the history
  • Loading branch information
K1llMan committed May 9, 2023
1 parent 886e775 commit 7af762f
Show file tree
Hide file tree
Showing 38 changed files with 2,720 additions and 1,568 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# История изменений

# 1.4.0
* Удалена авторизация по логину и паролю, как устаревшая.
* Классы API для удобства разбиты на асинхронную и синхронную части.
* Добавлены асинхронные методы-расширения.
* Добавлен асинхронный клиент (требует тестирования).
# 1.3.6
* Добавлены асинхронные методы для получения ссылки на файл, для сохранения, получения массива байт и потока.
* Актуализированы модели.
Expand Down
2 changes: 0 additions & 2 deletions src/Yandex.Music.Api.Tests/Tests/API/UserAPITest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ public void Authorize_ValidData_True()
{
if (!string.IsNullOrEmpty(Fixture.AppSettings.Token))
Fixture.API.User.Authorize(Fixture.Storage, Fixture.AppSettings.Token);
else
Fixture.API.User.Authorize(Fixture.Storage, Fixture.AppSettings.Login, Fixture.AppSettings.Password);

Fixture.Storage.IsAuthorized.Should().BeTrue();
}
Expand Down
34 changes: 1 addition & 33 deletions src/Yandex.Music.Api/API/YAlbumAPI.cs
Original file line number Diff line number Diff line change
@@ -1,37 +1,18 @@
using System.Collections.Generic;
using System.Threading.Tasks;

using Yandex.Music.Api.Common;
using Yandex.Music.Api.Models.Album;
using Yandex.Music.Api.Models.Common;
using Yandex.Music.Api.Requests.Album;

namespace Yandex.Music.Api.API
{
/// <summary>
/// API для взаимодействия с альбомами
/// </summary>
public class YAlbumAPI : YCommonAPI
public partial class YAlbumAPI : YCommonAPI
{
#region Основные функции

public YAlbumAPI(YandexMusicApi yandex): base(yandex)
{
}

/// <summary>
/// Получение альбома
/// </summary>
/// <param name="storage">Хранилище</param>
/// <param name="albumId">Идентификатор</param>
/// <returns></returns>
public Task<YResponse<YAlbum>> GetAsync(AuthStorage storage, string albumId)
{
return new YGetAlbumBuilder(api, storage)
.Build(albumId)
.GetResponseAsync();
}

/// <summary>
/// Получение альбома
/// </summary>
Expand All @@ -42,19 +23,6 @@ public YResponse<YAlbum> Get(AuthStorage storage, string albumId)
return GetAsync(storage, albumId).GetAwaiter().GetResult();
}

/// <summary>
/// Получение альбомов по списку
/// </summary>
/// <param name="storage">Хранилище</param>
/// <param name="albumIds">Идентификаторы альбомов</param>
/// <returns></returns>
public Task<YResponse<List<YAlbum>>> GetAsync(AuthStorage storage, IEnumerable<string> albumIds)
{
return new YGetAlbumsBuilder(api, storage)
.Build(albumIds)
.GetResponseAsync();
}

/// <summary>
/// Получение альбомов по списку
/// </summary>
Expand Down
50 changes: 50 additions & 0 deletions src/Yandex.Music.Api/API/YAlbumAPIAsync.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
using System.Collections.Generic;
using System.Threading.Tasks;

using Yandex.Music.Api.Common;
using Yandex.Music.Api.Models.Album;
using Yandex.Music.Api.Models.Common;
using Yandex.Music.Api.Requests.Album;

namespace Yandex.Music.Api.API
{
/// <summary>
/// API для взаимодействия с альбомами
/// </summary>
public partial class YAlbumAPI : YCommonAPI
{
#region Основные функции

public YAlbumAPI(YandexMusicApi yandex): base(yandex)
{
}

/// <summary>
/// Получение альбома
/// </summary>
/// <param name="storage">Хранилище</param>
/// <param name="albumId">Идентификатор</param>
/// <returns></returns>
public Task<YResponse<YAlbum>> GetAsync(AuthStorage storage, string albumId)
{
return new YGetAlbumBuilder(api, storage)
.Build(albumId)
.GetResponseAsync();
}

/// <summary>
/// Получение альбомов по списку
/// </summary>
/// <param name="storage">Хранилище</param>
/// <param name="albumIds">Идентификаторы альбомов</param>
/// <returns></returns>
public Task<YResponse<List<YAlbum>>> GetAsync(AuthStorage storage, IEnumerable<string> albumIds)
{
return new YGetAlbumsBuilder(api, storage)
.Build(albumIds)
.GetResponseAsync();
}

#endregion Основные функции
}
}
34 changes: 1 addition & 33 deletions src/Yandex.Music.Api/API/YArtistAPI.cs
Original file line number Diff line number Diff line change
@@ -1,37 +1,18 @@
using System.Collections.Generic;
using System.Threading.Tasks;

using Yandex.Music.Api.Common;
using Yandex.Music.Api.Models.Artist;
using Yandex.Music.Api.Models.Common;
using Yandex.Music.Api.Requests.Artist;

namespace Yandex.Music.Api.API
{
/// <summary>
/// API для взаимодействия с исполнителями
/// </summary>
public class YArtistAPI : YCommonAPI
public partial class YArtistAPI : YCommonAPI
{
#region Основные функции

public YArtistAPI(YandexMusicApi yandex): base(yandex)
{
}

/// <summary>
/// Получение исполнителя
/// </summary>
/// <param name="storage">Хранилище</param>
/// <param name="artistId">Идентификатор</param>
/// <returns></returns>
public Task<YResponse<YArtistBriefInfo>> GetAsync(AuthStorage storage, string artistId)
{
return new YGetArtistBuilder(api, storage)
.Build(artistId)
.GetResponseAsync();
}

/// <summary>
/// Получение исполнителя
/// </summary>
Expand All @@ -42,19 +23,6 @@ public YResponse<YArtistBriefInfo> Get(AuthStorage storage, string artistId)
return GetAsync(storage, artistId).GetAwaiter().GetResult();
}

/// <summary>
/// Получение исполнителей
/// </summary>
/// <param name="storage">Хранилище</param>
/// <param name="artistIds">Идентификаторы</param>
/// <returns></returns>
public Task<YResponse<List<YArtist>>> GetAsync(AuthStorage storage, IEnumerable<string> artistIds)
{
return new YGetArtistsBuilder(api, storage)
.Build(artistIds)
.GetResponseAsync();
}

/// <summary>
/// Получение исполнителя
/// </summary>
Expand Down
50 changes: 50 additions & 0 deletions src/Yandex.Music.Api/API/YArtistAPIAsync.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
using System.Collections.Generic;
using System.Threading.Tasks;

using Yandex.Music.Api.Common;
using Yandex.Music.Api.Models.Artist;
using Yandex.Music.Api.Models.Common;
using Yandex.Music.Api.Requests.Artist;

namespace Yandex.Music.Api.API
{
/// <summary>
/// API для взаимодействия с исполнителями
/// </summary>
public partial class YArtistAPI : YCommonAPI
{
#region Основные функции

public YArtistAPI(YandexMusicApi yandex): base(yandex)
{
}

/// <summary>
/// Получение исполнителя
/// </summary>
/// <param name="storage">Хранилище</param>
/// <param name="artistId">Идентификатор</param>
/// <returns></returns>
public Task<YResponse<YArtistBriefInfo>> GetAsync(AuthStorage storage, string artistId)
{
return new YGetArtistBuilder(api, storage)
.Build(artistId)
.GetResponseAsync();
}

/// <summary>
/// Получение исполнителей
/// </summary>
/// <param name="storage">Хранилище</param>
/// <param name="artistIds">Идентификаторы</param>
/// <returns></returns>
public Task<YResponse<List<YArtist>>> GetAsync(AuthStorage storage, IEnumerable<string> artistIds)
{
return new YGetArtistsBuilder(api, storage)
.Build(artistIds)
.GetResponseAsync();
}

#endregion Основные функции
}
}
40 changes: 2 additions & 38 deletions src/Yandex.Music.Api/API/YLandingAPI.cs
Original file line number Diff line number Diff line change
@@ -1,41 +1,17 @@
using System.Threading.Tasks;

using Yandex.Music.Api.Common;
using Yandex.Music.Api.Common;
using Yandex.Music.Api.Models.Common;
using Yandex.Music.Api.Models.Feed;
using Yandex.Music.Api.Models.Landing;
using Yandex.Music.Api.Requests.Feed;
using Yandex.Music.Api.Requests.Landing;

namespace Yandex.Music.Api.API
{
/// <summary>
/// API для взаимодействия с главной страницей
/// </summary>
public class YLandingAPI: YCommonAPI
public partial class YLandingAPI: YCommonAPI
{
#region Основные функции

public YLandingAPI(YandexMusicApi yandex) : base(yandex)
{
}

/// <summary>
/// Получение персональных списков
/// </summary>
/// <param name="storage">Хранилище</param>
/// <param name="blocks">Типы запрашиваемых блоков</param>
/// <returns></returns>
public Task<YResponse<YLanding>> GetAsync(AuthStorage storage, params YLandingBlockType[] blocks)
{
if (blocks == null)
return null;

return new YGetLandingBuilder(api, storage)
.Build(blocks)
.GetResponseAsync();
}

/// <summary>
/// Получение персональных списков
/// </summary>
Expand All @@ -47,18 +23,6 @@ public YResponse<YLanding> Get(AuthStorage storage, params YLandingBlockType[] b
return GetAsync(storage, blocks).GetAwaiter().GetResult();
}

/// <summary>
/// Получение ленты
/// </summary>
/// <param name="storage">Хранилище</param>
/// <returns></returns>
public Task<YResponse<YFeed>> GetFeedAsync(AuthStorage storage)
{
return new YGetFeedBuilder(api, storage)
.Build(null)
.GetResponseAsync();
}

/// <summary>
/// Получение ленты
/// </summary>
Expand Down
53 changes: 53 additions & 0 deletions src/Yandex.Music.Api/API/YLandingAPIAsync.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
using System.Threading.Tasks;

using Yandex.Music.Api.Common;
using Yandex.Music.Api.Models.Common;
using Yandex.Music.Api.Models.Feed;
using Yandex.Music.Api.Models.Landing;
using Yandex.Music.Api.Requests.Feed;
using Yandex.Music.Api.Requests.Landing;

namespace Yandex.Music.Api.API
{
/// <summary>
/// API для взаимодействия с главной страницей
/// </summary>
public partial class YLandingAPI: YCommonAPI
{
#region Основные функции

public YLandingAPI(YandexMusicApi yandex) : base(yandex)
{
}

/// <summary>
/// Получение персональных списков
/// </summary>
/// <param name="storage">Хранилище</param>
/// <param name="blocks">Типы запрашиваемых блоков</param>
/// <returns></returns>
public Task<YResponse<YLanding>> GetAsync(AuthStorage storage, params YLandingBlockType[] blocks)
{
if (blocks == null)
return null;

return new YGetLandingBuilder(api, storage)
.Build(blocks)
.GetResponseAsync();
}

/// <summary>
/// Получение ленты
/// </summary>
/// <param name="storage">Хранилище</param>
/// <returns></returns>
public Task<YResponse<YFeed>> GetFeedAsync(AuthStorage storage)
{
return new YGetFeedBuilder(api, storage)
.Build(null)
.GetResponseAsync();
}

#endregion Основные функции
}
}

0 comments on commit 7af762f

Please sign in to comment.