Полностью переписанное api
All checks were successful
Release / pack-and-publish (release) Successful in 36s
All checks were successful
Release / pack-and-publish (release) Successful in 36s
This commit is contained in:
@@ -1,32 +1,24 @@
|
||||
using System.Collections.Specialized;
|
||||
using System.Globalization;
|
||||
using System.Net;
|
||||
|
||||
using YandexMusic.API.Common;
|
||||
using YandexMusic.API.Models.Playlist;
|
||||
using YandexMusic.API.Models.Ugc;
|
||||
using YandexMusic.API.Requests.Common;
|
||||
using YandexMusic.API.Requests.Common.Attributes;
|
||||
|
||||
namespace YandexMusic.API.Requests.Ugc;
|
||||
|
||||
[YWebApiRequest(WebRequestMethods.Http.Get, "handlers/ugc-upload.jsx")]
|
||||
public class YUgcGetUploadLinkBuilder : YRequestBuilder<YUgcUpload, (YPlaylist playlist, string fileName)>
|
||||
public class YUgcGetUploadLinkBuilder : YMusicRequestBuilder<YUgcUpload?, (YPlaylist playlist, string fileName)>
|
||||
{
|
||||
private static readonly Lazy<Random> Random = new(() => new Random());
|
||||
|
||||
public YUgcGetUploadLinkBuilder(YandexMusicApi yandex, AuthStorage auth) : base(yandex, auth)
|
||||
{
|
||||
}
|
||||
|
||||
private static readonly Random _random = new();
|
||||
public YUgcGetUploadLinkBuilder(YandexMusicApi api) : base(api) { }
|
||||
protected override string Method => WebRequestMethods.Http.Get;
|
||||
protected override string PathTemplate => "handlers/ugc-upload.jsx";
|
||||
protected override NameValueCollection GetQueryParams((YPlaylist playlist, string fileName) tuple)
|
||||
{
|
||||
return new NameValueCollection {
|
||||
=> new()
|
||||
{
|
||||
{ "filename", tuple.fileName },
|
||||
{ "kind", tuple.playlist.Kind },
|
||||
{ "visibility", "private" },
|
||||
{ "external-domain", "music.yandex.ru" },
|
||||
{ "ncrnd", Random.Value.NextDouble().ToString(CultureInfo.InvariantCulture) }
|
||||
{ "ncrnd", _random.NextDouble().ToString(CultureInfo.InvariantCulture) }
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,31 +1,21 @@
|
||||
using System.Net;
|
||||
|
||||
using YandexMusic.API.Common;
|
||||
using YandexMusic.API.Models.Common;
|
||||
using YandexMusic.API.Requests.Common;
|
||||
using YandexMusic.API.Requests.Common.Attributes;
|
||||
|
||||
namespace YandexMusic.API.Requests.Ugc;
|
||||
|
||||
[YRequest(WebRequestMethods.Http.Post, "{postTargetLink}")]
|
||||
public class YUgcUploadBuilder : YRequestBuilder<YResponse<string>, (string postTargetLink, byte[] fileBytes)>
|
||||
/// <summary>Загрузка трека – специальный запрос на произвольный URL.</summary>
|
||||
public class YUgcUploadBuilder : YJsonRequestBuilder<YResponse<string>?, (string postTargetLink, byte[] fileBytes)>
|
||||
{
|
||||
public YUgcUploadBuilder(YandexMusicApi yandex, AuthStorage auth) : base(yandex, auth)
|
||||
{
|
||||
}
|
||||
public YUgcUploadBuilder(YandexMusicApi api) : base(api) { }
|
||||
protected override string BaseUrl => "";
|
||||
|
||||
protected override string Method => WebRequestMethods.Http.Post;
|
||||
|
||||
protected override string PathTemplate => "{postTargetLink}";
|
||||
|
||||
protected override Dictionary<string, string> GetSubstitutions((string postTargetLink, byte[] fileBytes) tuple)
|
||||
{
|
||||
return new Dictionary<string, string> {
|
||||
{ "postTargetLink", tuple.postTargetLink }
|
||||
};
|
||||
}
|
||||
|
||||
protected override HttpContent GetContent((string postTargetLink, byte[] fileBytes) tuple)
|
||||
{
|
||||
return new MultipartFormDataContent {
|
||||
{ new ByteArrayContent(tuple.fileBytes), "file" }
|
||||
};
|
||||
}
|
||||
|
||||
=> new() { { "postTargetLink", tuple.postTargetLink } };
|
||||
protected override HttpContent? GetContent((string postTargetLink, byte[] fileBytes) tuple)
|
||||
=> new MultipartFormDataContent { { new ByteArrayContent(tuple.fileBytes), "file" } };
|
||||
}
|
||||
Reference in New Issue
Block a user