diff --git a/src/BukiVedi.App/Controllers/AuthController.cs b/src/BukiVedi.App/Controllers/AuthController.cs
index 404e591..e1bdc49 100644
--- a/src/BukiVedi.App/Controllers/AuthController.cs
+++ b/src/BukiVedi.App/Controllers/AuthController.cs
@@ -19,6 +19,11 @@ namespace BukiVedi.App.Controllers
}
+ ///
+ /// Аутентификация на сайте через логин пароль
+ ///
+ /// Логин/пароль
+ ///
[HttpPost("/api/auth")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
diff --git a/src/BukiVedi.App/Controllers/AuthorsController.cs b/src/BukiVedi.App/Controllers/AuthorsController.cs
new file mode 100644
index 0000000..1c649f5
--- /dev/null
+++ b/src/BukiVedi.App/Controllers/AuthorsController.cs
@@ -0,0 +1,59 @@
+using BukiVedi.App.Responces;
+using BukiVedi.App.Services.Mappers;
+using BukiVedi.Shared.Entities;
+using BukiVedi.Shared.Services;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using MongoDB.Driver;
+
+namespace BukiVedi.App.Controllers
+{
+ [Route("api/author")]
+ [ApiController]
+ [Authorize("authorized")]
+ public class AuthorsController
+ : BaseController
+ {
+ private readonly ILibrary _library;
+ public AuthorsController(ILibrary library)
+ : base()
+ {
+ _library = library;
+ }
+
+ ///
+ /// Поиск книг указанного автора
+ ///
+ /// Идентификатор автора
+ /// Список книг
+ [HttpPost("{id}/books")]
+ public async Task>> SearchByAuthor([FromRoute] string id)
+ {
+ var books = (await _library.SearchBooksByAuthor(id)).ToArray();
+ return Ok(books.Select(b => BookEntityMapper.Map(b)));
+ }
+
+ ///
+ /// Получить список всех авторов
+ ///
+ /// Список авторов
+ [HttpGet()]
+ public async Task>> GetAllAuthors()
+ {
+ var authors = (await Tables.Authors.GetAll()).Select(a => new AuthorInfo { Id = a.Id, Name = a.Name }).ToArray();
+ return Ok(authors);
+ }
+
+ ///
+ /// Получить список авторов, которых пользователь добавил в избранное
+ ///
+ /// Список авторов
+ [HttpGet("favorite")]
+ public async Task>> GetFavoriteAuthors()
+ {
+ var authorIds = (await Tables.FavoriteAuthors.Get(Builders.Filter.Eq(f => f.UserId, OperationContext.OperationInitiator.Id))).Select(f => f.AuthorId).ToHashSet();
+ var authors = (await Tables.Authors.Get(Builders.Filter.In(a => a.Id, authorIds))).Select(a => new AuthorInfo { Id = a.Id, Name = a.Name }).ToArray();
+ return Ok(authors);
+ }
+ }
+}
diff --git a/src/BukiVedi.App/Controllers/BooksController.cs b/src/BukiVedi.App/Controllers/BooksController.cs
index 2334cd2..c2f1d58 100644
--- a/src/BukiVedi.App/Controllers/BooksController.cs
+++ b/src/BukiVedi.App/Controllers/BooksController.cs
@@ -11,6 +11,7 @@ namespace BukiVedi.App.Controllers
{
[Authorize("authorized")]
[ApiController]
+ [Route("api/books")]
public class BooksController
: BaseController
{
@@ -21,24 +22,85 @@ namespace BukiVedi.App.Controllers
_library = library;
}
- [HttpPost("/api/books/search")]
+ #region SEARCH
+ ///
+ /// Поиск книг по запросу
+ ///
+ /// Поисковый запрос
+ /// Список найденных книг
+ [HttpPost("search")]
public async Task>> Search([FromBody] QueryRequest request)
{
- var books = (await _library.SearchBooks(request.Query)).ToArray();
- return Ok(books.Select(b => BookEntityMapper.Map(b)));
- }
+ if (string.IsNullOrWhiteSpace(request.Query) == false)
+ {
+ switch (request.Query.Trim().ToLowerInvariant())
+ {
+ case "@favorites":
+ {
+ var books = (await _library.SearchFavoritesBooks(OperationContext.OperationInitiator.Id)).ToArray();
+ return Ok(books.Select(b =>
+ {
+ var bu = BookEntityMapper.Map(b);
+ bu.IsFavorite = true; // TODO сделать проверкой по справочнику в кеше
+ return bu;
+ }));
+ }
+ case "@favoriteauthors":
+ {
+ var books = (await _library.SearchFavoriteAuthorsBooks(OperationContext.OperationInitiator.Id)).ToArray();
+ return Ok(books.Select(b =>
+ {
+ var bu = BookEntityMapper.Map(b);
+ bu.IsFavorite = true; // TODO сделать проверкой по справочнику в кеше
+ return bu;
+ }));
+ }
+ case "@tagged":
+ {
+ string tag = null;
+ if (Request.Query.TryGetValue("tag", out var sv))
+ {
+ tag = sv.ToString();
+ }
+ var books = (await _library.SearchTaggedBooks(OperationContext.OperationInitiator.Id, tag: tag!)).ToArray();
+ return Ok(books.Select(b => BookEntityMapper.Map(b)));
+ }
+
+ case "@blocked":
+ {
+ var books = (await _library.SearchBlockedBooks(OperationContext.OperationInitiator.Id)).ToArray();
+ return Ok(books.Select(b =>
+ {
+ var bu = BookEntityMapper.Map(b);
+ bu.IsBlocked = true; // TODO сделать проверкой по справочнику в кеше
+ return bu;
+ }));
+ }
+ case "@toread":
+ {
+ var books = (await _library.SearchToReadBooks(OperationContext.OperationInitiator.Id)).ToArray();
+ return Ok(books.Select(b => BookEntityMapper.Map(b)));
+ }
- [HttpPost("/api/books/search/author/{id}")]
- public async Task>> SearchByAuthor([FromRoute] string id)
- {
- var books = (await _library.SearchBooksByAuthor(id)).ToArray();
- return Ok(books.Select(b => BookEntityMapper.Map(b)));
+ default:
+ {
+ var books = (await _library.SearchBooks(request.Query)).ToArray();
+ return Ok(books.Select(b => BookEntityMapper.Map(b)));
+ }
+ }
+ }
+ return Ok(Enumerable.Empty());
}
-
- [HttpPost("/api/books/{id}/favorite")]
- public async Task>> AddToFavorite([FromRoute] string id)
+ #endregion
+ ///
+ /// Добавление книги в избранное
+ ///
+ /// Идентификатор книги
+ /// Ok
+ [HttpPost("{id}/favorite")]
+ public async Task AddToFavorite([FromRoute] string id)
{
if (await Tables.Books.ExistById(id))
{
@@ -59,8 +121,45 @@ namespace BukiVedi.App.Controllers
return Ok();
}
- [HttpPost("/api/books/{id}/block")]
- public async Task>> BlockBook([FromRoute] string id)
+ ///
+ /// Добавление авторов книги в избранное
+ ///
+ /// Идентификатор книги
+ /// Ok
+ [HttpPost("{id}/authors/favorite")]
+ public async Task AddAuthorsToFavorite([FromRoute] string id)
+ {
+ var book = await Tables.Books.GetById(id);
+ if (book != null)
+ {
+ var account_id = OperationContext.OperationInitiator.Id;
+ var authors = book.AuthorIds;
+ if (!string.IsNullOrEmpty(account_id) && authors?.Count > 0)
+ {
+ foreach (var author in authors)
+ {
+ var exists_fiter = Builders.Filter.And
+ (
+ Builders.Filter.Eq(f => f.UserId, account_id),
+ Builders.Filter.Eq(f => f.AuthorId, author)
+ );
+ if (await Tables.FavoriteAuthors.Exists(exists_fiter) == false)
+ {
+ await Tables.FavoriteAuthors.Write(new FavoriteAuthor { AuthorId = author, UserId = account_id });
+ }
+ }
+ }
+ }
+ return Ok();
+ }
+
+ ///
+ /// Добавление книги в игнор
+ ///
+ /// Идентификатор книги
+ /// Ok
+ [HttpPost("{id}/block")]
+ public async Task BlockBook([FromRoute] string id)
{
if (await Tables.Books.ExistById(id))
{
@@ -81,7 +180,12 @@ namespace BukiVedi.App.Controllers
return Ok();
}
- [HttpPost("/api/books/{id}/author/block")]
+ ///
+ /// Добавление авторов книги в игнор
+ ///
+ /// Идентификатор книги, чьих авторов нужно заблокировать
+ /// Ok
+ [HttpPost("{id}/author/block")]
public async Task>> BlockBookAuthor([FromRoute] string id)
{
var book = await Tables.Books.GetById(id);
@@ -108,8 +212,13 @@ namespace BukiVedi.App.Controllers
return Ok();
}
- [HttpPost("/api/books/{id}/read")]
- public async Task>> AddBookToReadingQueue([FromRoute] string id)
+ ///
+ /// Добавление книги в очередь на чтение
+ ///
+ /// Идентификатор книги
+ /// Ok
+ [HttpPost("{id}/read")]
+ public async Task AddBookToReadingQueue([FromRoute] string id)
{
if (await Tables.Books.ExistById(id))
{
@@ -130,15 +239,12 @@ namespace BukiVedi.App.Controllers
return Ok();
}
-
- [HttpPost("/api/books/author/{id}")]
- public async Task>> AiSearch([FromRoute] string id)
- {
- var books = (await _library.SearchBooksByAuthor(id)).ToArray();
- return Ok(books.Select(b => BookEntityMapper.Map(b)));
- }
-
- [HttpGet("/api/books/download/{id}")]
+ ///
+ /// Загрузка файла с книгой
+ ///
+ /// Идентификатор книги
+ /// Файл
+ [HttpGet("download/{id}")]
public async Task GetBlobDownload([FromRoute] string id)
{
var content = new System.IO.MemoryStream();
diff --git a/src/BukiVedi.App/Controllers/HintsController.cs b/src/BukiVedi.App/Controllers/HintsController.cs
new file mode 100644
index 0000000..fec03e3
--- /dev/null
+++ b/src/BukiVedi.App/Controllers/HintsController.cs
@@ -0,0 +1,32 @@
+using BukiVedi.Shared.Entities;
+using BukiVedi.Shared.Services;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using MongoDB.Driver;
+
+namespace BukiVedi.App.Controllers
+{
+ [Route("api/hints")]
+ [ApiController]
+ [Authorize("authorized")]
+ public class HintsController
+ : BaseController
+ {
+ private readonly ILibrary _library;
+ public HintsController(ILibrary library)
+ : base()
+ {
+ _library = library;
+ }
+
+ ///
+ /// Список пользовательских тегов
+ ///
+ ///
+ [HttpGet("tags")]
+ public async Task>> GetUserTags()
+ {
+ return Ok((await Tables.UserTag.Get(Builders.Filter.Eq(t => t.UserId, OperationContext.OperationInitiator.Id)))?.Select(t => t.Name));
+ }
+ }
+}
diff --git a/src/BukiVedi.App/Properties/PublishProfiles/FolderProfile.pubxml.user b/src/BukiVedi.App/Properties/PublishProfiles/FolderProfile.pubxml.user
index 1485b1f..9297392 100644
--- a/src/BukiVedi.App/Properties/PublishProfiles/FolderProfile.pubxml.user
+++ b/src/BukiVedi.App/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<_PublishTargetUrl>G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\publish\
- True|2024-04-05T01:52:06.7814045Z;True|2024-04-05T04:46:11.3960475+03:00;True|2024-04-04T16:59:14.8807703+03:00;True|2024-04-04T14:55:51.0062074+03:00;True|2024-04-04T14:01:53.0402462+03:00;True|2024-04-04T05:50:10.9326327+03:00;True|2024-04-04T05:23:22.3837261+03:00;True|2024-04-04T05:18:08.8436345+03:00;True|2024-04-04T05:13:03.4261357+03:00;True|2024-04-04T04:23:59.4217155+03:00;True|2024-04-04T04:12:10.2381826+03:00;True|2024-04-04T04:04:27.2386390+03:00;
+ True|2024-04-07T02:01:48.6765910Z;True|2024-04-07T05:01:36.8953339+03:00;True|2024-04-07T04:57:19.2521218+03:00;True|2024-04-06T21:11:57.8349210+03:00;True|2024-04-06T17:36:58.3428821+03:00;True|2024-04-05T04:52:06.7814045+03:00;True|2024-04-05T04:46:11.3960475+03:00;True|2024-04-04T16:59:14.8807703+03:00;True|2024-04-04T14:55:51.0062074+03:00;True|2024-04-04T14:01:53.0402462+03:00;True|2024-04-04T05:50:10.9326327+03:00;True|2024-04-04T05:23:22.3837261+03:00;True|2024-04-04T05:18:08.8436345+03:00;True|2024-04-04T05:13:03.4261357+03:00;True|2024-04-04T04:23:59.4217155+03:00;True|2024-04-04T04:12:10.2381826+03:00;True|2024-04-04T04:04:27.2386390+03:00;
\ No newline at end of file
diff --git a/src/BukiVedi.App/Responces/BookResponse.cs b/src/BukiVedi.App/Responces/BookResponse.cs
index e23ea8f..b0da5fa 100644
--- a/src/BukiVedi.App/Responces/BookResponse.cs
+++ b/src/BukiVedi.App/Responces/BookResponse.cs
@@ -67,12 +67,11 @@
/// Год издания
///
public int Year { get; set; }
- /*
- ///
- /// Форматы(массив объектов с полями id; имя формата)
- ///
- public FormatInfo[] Formats { get; set; }
- */
+
public string Format { get; set; }
+
+ public bool IsBlocked { get; set; }
+
+ public bool IsFavorite { get; set; }
}
}
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/BukiVedi.App.deps.json b/src/BukiVedi.App/bin/Debug/net8.0/BukiVedi.App.deps.json
deleted file mode 100644
index 628a123..0000000
--- a/src/BukiVedi.App/bin/Debug/net8.0/BukiVedi.App.deps.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{
- "runtimeTarget": {
- "name": ".NETCoreApp,Version=v8.0",
- "signature": ""
- },
- "compilationOptions": {},
- "targets": {
- ".NETCoreApp,Version=v8.0": {
- "BukiVedi.App/1.0.0": {
- "dependencies": {
- "BukiVedi.Shared": "1.0.0"
- },
- "runtime": {
- "BukiVedi.App.dll": {}
- }
- },
- "AWSSDK.Core/3.7.100.14": {
- "runtime": {
- "lib/netcoreapp3.1/AWSSDK.Core.dll": {
- "assemblyVersion": "3.3.0.0",
- "fileVersion": "3.7.100.14"
- }
- }
- },
- "AWSSDK.SecurityToken/3.7.100.14": {
- "dependencies": {
- "AWSSDK.Core": "3.7.100.14"
- },
- "runtime": {
- "lib/netcoreapp3.1/AWSSDK.SecurityToken.dll": {
- "assemblyVersion": "3.3.0.0",
- "fileVersion": "3.7.100.14"
- }
- }
- },
- "DnsClient/1.6.1": {
- "dependencies": {
- "Microsoft.Win32.Registry": "5.0.0"
- },
- "runtime": {
- "lib/net5.0/DnsClient.dll": {
- "assemblyVersion": "1.6.1.0",
- "fileVersion": "1.6.1.0"
- }
- }
- },
- "FB2Library/1.3.3": {
- "runtime": {
- "lib/net6.0/FB2Library.dll": {
- "assemblyVersion": "1.3.3.0",
- "fileVersion": "1.3.3.0"
- }
- }
- },
- "Microsoft.Extensions.Logging.Abstractions/2.0.0": {},
- "Microsoft.NETCore.Platforms/5.0.0": {},
- "Microsoft.Win32.Registry/5.0.0": {
- "dependencies": {
- "System.Security.AccessControl": "5.0.0",
- "System.Security.Principal.Windows": "5.0.0"
- }
- },
- "MongoDB.Bson/2.24.0": {
- "dependencies": {
- "System.Memory": "4.5.5",
- "System.Runtime.CompilerServices.Unsafe": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.1/MongoDB.Bson.dll": {
- "assemblyVersion": "2.24.0.0",
- "fileVersion": "2.24.0.0"
- }
- }
- },
- "MongoDB.Driver/2.24.0": {
- "dependencies": {
- "Microsoft.Extensions.Logging.Abstractions": "2.0.0",
- "MongoDB.Bson": "2.24.0",
- "MongoDB.Driver.Core": "2.24.0",
- "MongoDB.Libmongocrypt": "1.8.2"
- },
- "runtime": {
- "lib/netstandard2.1/MongoDB.Driver.dll": {
- "assemblyVersion": "2.24.0.0",
- "fileVersion": "2.24.0.0"
- }
- }
- },
- "MongoDB.Driver.Core/2.24.0": {
- "dependencies": {
- "AWSSDK.SecurityToken": "3.7.100.14",
- "DnsClient": "1.6.1",
- "Microsoft.Extensions.Logging.Abstractions": "2.0.0",
- "MongoDB.Bson": "2.24.0",
- "MongoDB.Libmongocrypt": "1.8.2",
- "SharpCompress": "0.30.1",
- "Snappier": "1.0.0",
- "System.Buffers": "4.5.1",
- "ZstdSharp.Port": "0.7.3"
- },
- "runtime": {
- "lib/netstandard2.1/MongoDB.Driver.Core.dll": {
- "assemblyVersion": "2.24.0.0",
- "fileVersion": "2.24.0.0"
- }
- }
- },
- "MongoDB.Libmongocrypt/1.8.2": {
- "runtime": {
- "lib/netstandard2.1/MongoDB.Libmongocrypt.dll": {
- "assemblyVersion": "1.8.2.0",
- "fileVersion": "1.8.2.0"
- }
- },
- "runtimeTargets": {
- "runtimes/linux/native/libmongocrypt.so": {
- "rid": "linux",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/osx/native/libmongocrypt.dylib": {
- "rid": "osx",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/win/native/mongocrypt.dll": {
- "rid": "win",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- }
- }
- },
- "SharpCompress/0.30.1": {
- "runtime": {
- "lib/net5.0/SharpCompress.dll": {
- "assemblyVersion": "0.30.1.0",
- "fileVersion": "0.30.1.0"
- }
- }
- },
- "Snappier/1.0.0": {
- "runtime": {
- "lib/net5.0/Snappier.dll": {
- "assemblyVersion": "1.0.0.0",
- "fileVersion": "1.0.0.0"
- }
- }
- },
- "System.Buffers/4.5.1": {},
- "System.Memory/4.5.5": {},
- "System.Runtime.CompilerServices.Unsafe/5.0.0": {},
- "System.Security.AccessControl/5.0.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "5.0.0",
- "System.Security.Principal.Windows": "5.0.0"
- }
- },
- "System.Security.Principal.Windows/5.0.0": {},
- "ZstdSharp.Port/0.7.3": {
- "runtime": {
- "lib/net7.0/ZstdSharp.dll": {
- "assemblyVersion": "0.7.3.0",
- "fileVersion": "0.7.3.0"
- }
- }
- },
- "BukiVedi.Shared/1.0.0": {
- "dependencies": {
- "FB2Library": "1.3.3",
- "LemmaSharp": "1.0.0",
- "LemmaSharpPrebuilt": "1.0.0",
- "LemmaSharpPrebuiltFull": "1.0.0",
- "MongoDB.Driver": "2.24.0",
- "Sleopok.Engine": "1.0.0",
- "ZeroLevel": "3.4.0.8"
- },
- "runtime": {
- "BukiVedi.Shared.dll": {}
- }
- },
- "LemmaSharp/1.0.0": {
- "runtime": {
- "LemmaSharp.dll": {}
- }
- },
- "LemmaSharpPrebuilt/1.0.0": {
- "dependencies": {
- "LemmaSharp": "1.0.0"
- },
- "runtime": {
- "LemmaSharpPrebuilt.dll": {}
- }
- },
- "LemmaSharpPrebuiltFull/1.0.0": {
- "dependencies": {
- "LemmaSharp": "1.0.0",
- "LemmaSharpPrebuilt": "1.0.0"
- },
- "runtime": {
- "LemmaSharpPrebuiltFull.dll": {}
- }
- },
- "Sleopok.Engine/1.0.0": {
- "dependencies": {
- "ZeroLevel": "3.4.0.8"
- },
- "runtime": {
- "Sleopok.Engine.dll": {}
- }
- },
- "ZeroLevel/3.4.0.8": {
- "runtime": {
- "ZeroLevel.dll": {}
- }
- },
- "Lzma#/4.12.3884.11200": {
- "runtime": {
- "Lzma#.dll": {
- "assemblyVersion": "4.12.3884.11200",
- "fileVersion": "4.12.3884.11200"
- }
- }
- }
- }
- },
- "libraries": {
- "BukiVedi.App/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "AWSSDK.Core/3.7.100.14": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-gnEgxBlk4PFEfdPE8Lkf4+D16MZFYSaW7/o6Wwe5e035QWUkTJX0Dn4LfTCdV5QSEL/fOFxu+yCAm55eIIBgog==",
- "path": "awssdk.core/3.7.100.14",
- "hashPath": "awssdk.core.3.7.100.14.nupkg.sha512"
- },
- "AWSSDK.SecurityToken/3.7.100.14": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-dGCVuVo0CFUKWW85W8YENO+aREf8sCBDjvGbnNvxJuNW4Ss+brEU9ltHhq2KfZze2VUNK1/wygbPG1bmbpyXEw==",
- "path": "awssdk.securitytoken/3.7.100.14",
- "hashPath": "awssdk.securitytoken.3.7.100.14.nupkg.sha512"
- },
- "DnsClient/1.6.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
- "path": "dnsclient/1.6.1",
- "hashPath": "dnsclient.1.6.1.nupkg.sha512"
- },
- "FB2Library/1.3.3": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-95eTqg5HBszY90+eZHcVLLFPWeHXV3S7gO6+VfrTdqq71uODj8+OaRRVXkTW7NPXxZ8QgJdZ7t4QaLZgoBES/A==",
- "path": "fb2library/1.3.3",
- "hashPath": "fb2library.1.3.3.nupkg.sha512"
- },
- "Microsoft.Extensions.Logging.Abstractions/2.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-6ZCllUYGFukkymSTx3Yr0G/ajRxoNJp7/FqSxSB4fGISST54ifBhgu4Nc0ItGi3i6DqwuNd8SUyObmiC++AO2Q==",
- "path": "microsoft.extensions.logging.abstractions/2.0.0",
- "hashPath": "microsoft.extensions.logging.abstractions.2.0.0.nupkg.sha512"
- },
- "Microsoft.NETCore.Platforms/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
- "path": "microsoft.netcore.platforms/5.0.0",
- "hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512"
- },
- "Microsoft.Win32.Registry/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
- "path": "microsoft.win32.registry/5.0.0",
- "hashPath": "microsoft.win32.registry.5.0.0.nupkg.sha512"
- },
- "MongoDB.Bson/2.24.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-n8CWaA4iTuoEQYv0+FSKNTX/hJozFQa5EgSILVNPhTGHcrbABHhpVrT1NwRRAAS6sUb8ZyhHmLPBa88LJemptA==",
- "path": "mongodb.bson/2.24.0",
- "hashPath": "mongodb.bson.2.24.0.nupkg.sha512"
- },
- "MongoDB.Driver/2.24.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-j1q11iMk3LN38ze6jgV1ATp+WKVVQbsGrhFkuOcHwRNtIk70TpLKjOD1Z3CCkyrzxCsUyhwk745tK2ASNOI4WA==",
- "path": "mongodb.driver/2.24.0",
- "hashPath": "mongodb.driver.2.24.0.nupkg.sha512"
- },
- "MongoDB.Driver.Core/2.24.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-UW0yadpMPi9+MtLHy6onpol3D9tXMRg61P0ROnij+h35EOr0vt/nxvlPrDcUjl3SvttvpsEXQKxb2lQShBA1dA==",
- "path": "mongodb.driver.core/2.24.0",
- "hashPath": "mongodb.driver.core.2.24.0.nupkg.sha512"
- },
- "MongoDB.Libmongocrypt/1.8.2": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-z/8JCULSHM1+mzkau0ivIkU9kIn8JEFFSkmYTSaMaWMMHt96JjUtMKuXxeGNGSnHZ5290ZPKIlQfjoWFk2sKog==",
- "path": "mongodb.libmongocrypt/1.8.2",
- "hashPath": "mongodb.libmongocrypt.1.8.2.nupkg.sha512"
- },
- "SharpCompress/0.30.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
- "path": "sharpcompress/0.30.1",
- "hashPath": "sharpcompress.0.30.1.nupkg.sha512"
- },
- "Snappier/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-rFtK2KEI9hIe8gtx3a0YDXdHOpedIf9wYCEYtBEmtlyiWVX3XlCNV03JrmmAi/Cdfn7dxK+k0sjjcLv4fpHnqA==",
- "path": "snappier/1.0.0",
- "hashPath": "snappier.1.0.0.nupkg.sha512"
- },
- "System.Buffers/4.5.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
- "path": "system.buffers/4.5.1",
- "hashPath": "system.buffers.4.5.1.nupkg.sha512"
- },
- "System.Memory/4.5.5": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
- "path": "system.memory/4.5.5",
- "hashPath": "system.memory.4.5.5.nupkg.sha512"
- },
- "System.Runtime.CompilerServices.Unsafe/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
- "path": "system.runtime.compilerservices.unsafe/5.0.0",
- "hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512"
- },
- "System.Security.AccessControl/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
- "path": "system.security.accesscontrol/5.0.0",
- "hashPath": "system.security.accesscontrol.5.0.0.nupkg.sha512"
- },
- "System.Security.Principal.Windows/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
- "path": "system.security.principal.windows/5.0.0",
- "hashPath": "system.security.principal.windows.5.0.0.nupkg.sha512"
- },
- "ZstdSharp.Port/0.7.3": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-U9Ix4l4cl58Kzz1rJzj5hoVTjmbx1qGMwzAcbv1j/d3NzrFaESIurQyg+ow4mivCgkE3S413y+U9k4WdnEIkRA==",
- "path": "zstdsharp.port/0.7.3",
- "hashPath": "zstdsharp.port.0.7.3.nupkg.sha512"
- },
- "BukiVedi.Shared/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "LemmaSharp/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "LemmaSharpPrebuilt/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "LemmaSharpPrebuiltFull/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "Sleopok.Engine/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "ZeroLevel/3.4.0.8": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "Lzma#/4.12.3884.11200": {
- "type": "reference",
- "serviceable": false,
- "sha512": ""
- }
- }
-}
\ No newline at end of file
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/BukiVedi.App.pdb b/src/BukiVedi.App/bin/Debug/net8.0/BukiVedi.App.pdb
deleted file mode 100644
index 9953ce2..0000000
Binary files a/src/BukiVedi.App/bin/Debug/net8.0/BukiVedi.App.pdb and /dev/null differ
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/BukiVedi.App.runtimeconfig.json b/src/BukiVedi.App/bin/Debug/net8.0/BukiVedi.App.runtimeconfig.json
deleted file mode 100644
index 5e604c7..0000000
--- a/src/BukiVedi.App/bin/Debug/net8.0/BukiVedi.App.runtimeconfig.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "runtimeOptions": {
- "tfm": "net8.0",
- "frameworks": [
- {
- "name": "Microsoft.NETCore.App",
- "version": "8.0.0"
- },
- {
- "name": "Microsoft.AspNetCore.App",
- "version": "8.0.0"
- }
- ],
- "configProperties": {
- "System.GC.Server": true,
- "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
- }
- }
-}
\ No newline at end of file
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/BukiVedi.Shared.pdb b/src/BukiVedi.App/bin/Debug/net8.0/BukiVedi.Shared.pdb
deleted file mode 100644
index 4520f05..0000000
Binary files a/src/BukiVedi.App/bin/Debug/net8.0/BukiVedi.Shared.pdb and /dev/null differ
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharp.dll.config b/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharp.dll.config
deleted file mode 100644
index 3e0e37c..0000000
--- a/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharp.dll.config
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharp.pdb b/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharp.pdb
deleted file mode 100644
index 0ceec7e..0000000
Binary files a/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharp.pdb and /dev/null differ
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharpPrebuilt.dll.config b/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharpPrebuilt.dll.config
deleted file mode 100644
index 3e0e37c..0000000
--- a/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharpPrebuilt.dll.config
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb b/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb
deleted file mode 100644
index 11f8b4e..0000000
Binary files a/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb and /dev/null differ
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharpPrebuiltFull.dll.config b/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharpPrebuiltFull.dll.config
deleted file mode 100644
index 3e0e37c..0000000
--- a/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharpPrebuiltFull.dll.config
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb b/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb
deleted file mode 100644
index cc8e779..0000000
Binary files a/src/BukiVedi.App/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb and /dev/null differ
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/ZeroLevel.pdb b/src/BukiVedi.App/bin/Debug/net8.0/ZeroLevel.pdb
deleted file mode 100644
index d343134..0000000
Binary files a/src/BukiVedi.App/bin/Debug/net8.0/ZeroLevel.pdb and /dev/null differ
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/appsettings.Development.json b/src/BukiVedi.App/bin/Debug/net8.0/appsettings.Development.json
deleted file mode 100644
index 0c208ae..0000000
--- a/src/BukiVedi.App/bin/Debug/net8.0/appsettings.Development.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft.AspNetCore": "Warning"
- }
- }
-}
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/appsettings.json b/src/BukiVedi.App/bin/Debug/net8.0/appsettings.json
deleted file mode 100644
index 24d74cf..0000000
--- a/src/BukiVedi.App/bin/Debug/net8.0/appsettings.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "Kestrel": {
- "Endpoints": {
- "MyHttpEndpoint": {
- "Url": "http://0.0.0.0:80"
- }
- }
- },
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft.AspNetCore": "Warning"
- }
- },
- "AllowedHosts": "*"
-}
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/config.ini b/src/BukiVedi.App/bin/Debug/net8.0/config.ini
deleted file mode 100644
index f89aa27..0000000
--- a/src/BukiVedi.App/bin/Debug/net8.0/config.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-login=ogoun
-password=A3n1g4e1l5#
-libraryPath=I:\Library\Flibusta.Net
-
-[MongoDB]
-ConnectionString="mongodb://192.168.0.222:27017"
-
-[Sleopok]
-path=H:\TEST
\ No newline at end of file
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-300.ttf b/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-300.ttf
deleted file mode 100644
index 219063a..0000000
Binary files a/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-300.ttf and /dev/null differ
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-300.woff b/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-300.woff
deleted file mode 100644
index b9e9918..0000000
Binary files a/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-300.woff and /dev/null differ
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-300.woff2 b/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-300.woff2
deleted file mode 100644
index ddbf4a9..0000000
Binary files a/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-300.woff2 and /dev/null differ
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-400.ttf b/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-400.ttf
deleted file mode 100644
index 2c97eea..0000000
Binary files a/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-400.ttf and /dev/null differ
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-400.woff b/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-400.woff
deleted file mode 100644
index 96c1986..0000000
Binary files a/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-400.woff and /dev/null differ
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-400.woff2 b/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-400.woff2
deleted file mode 100644
index 9a0064e..0000000
Binary files a/src/BukiVedi.App/bin/Debug/net8.0/web/css/fonts/Roboto-400.woff2 and /dev/null differ
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/web/index.html b/src/BukiVedi.App/bin/Debug/net8.0/web/index.html
deleted file mode 100644
index 6b20881..0000000
--- a/src/BukiVedi.App/bin/Debug/net8.0/web/index.html
+++ /dev/null
@@ -1,316 +0,0 @@
-
-
-
- BukiVedi
-
-
-
-
-
-
-
-
-
-
-
-
- BukiVedi
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/web/js/bukivedi-auth.js b/src/BukiVedi.App/bin/Debug/net8.0/web/js/bukivedi-auth.js
deleted file mode 100644
index 8b3e18d..0000000
--- a/src/BukiVedi.App/bin/Debug/net8.0/web/js/bukivedi-auth.js
+++ /dev/null
@@ -1,25 +0,0 @@
-class BukiVediAuth {
- static _token_name = "X-Token";
-
- static SignIn(login, password, success) {
- const info = { "Login": login, "Password": password };
- $.ajax({
- contentType: "application/json; charset=utf-8",
- dataType: "json",
- type: "POST",
- url: "../api/auth",
- data: JSON.stringify(info),
- success: function (data, textStatus, jqXHR) {
- success(data);
- },
- error: function (jqXHR, textStatus, errorThrown) {
- console.log(jqXHR.statusText);
- }
- });
- };
-
- static Logout() {
- localStorage.removeItem(this._token_name);
- window.location.replace("web/login.html");
- };
-}
\ No newline at end of file
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/web/js/bukivedi.js b/src/BukiVedi.App/bin/Debug/net8.0/web/js/bukivedi.js
deleted file mode 100644
index 0d1f211..0000000
--- a/src/BukiVedi.App/bin/Debug/net8.0/web/js/bukivedi.js
+++ /dev/null
@@ -1,95 +0,0 @@
-class BukiVedi {
-
- static SearchByAuthor(id, success) {
- $.ajax({
- contentType: "application/json; charset=utf-8",
- type: "POST",
- url: "../api/books/search/author/" + id,
- success: function (data, textStatus, jqXHR) {
- success(data);
- },
- error: function (jqXHR, textStatus, errorThrown) {
- console.log(jqXHR.statusText);
- }
- });
- }
-
- static Search(query, success) {
- const info = { "query": query };
- $.ajax({
- contentType: "application/json; charset=utf-8",
- dataType: "json",
- type: "POST",
- url: "../api/books/search",
- data: JSON.stringify(info),
- success: function (data, textStatus, jqXHR) {
- success(data);
- },
- error: function (jqXHR, textStatus, errorThrown) {
- console.log(jqXHR.statusText);
- }
- });
- };
-
- static Download(id) {
- window.location.href = "../api/books/download/" + id;
- }
-
- static AddToFavorite(id, success) {
- $.ajax({
- type: "POST",
- url: "../api/books/" + id + "/favorite",
- success: function (data, textStatus, jqXHR) {
- if (success)
- success();
- },
- error: function (jqXHR, textStatus, errorThrown) {
- console.log(jqXHR.statusText);
- }
- });
- }
- static ToReadingQueue(id) {
- $.ajax({
- type: "POST",
- url: "../api/books/" + id + "/read",
- success: function (data, textStatus, jqXHR) {
- if (success)
- success();
- },
- error: function (jqXHR, textStatus, errorThrown) {
- console.log(jqXHR.statusText);
- }
- });
- }
- static BookBlock(id) {
- $.ajax({
- type: "POST",
- url: "../api/books/" + id + "/block",
- success: function (data, textStatus, jqXHR) {
- if (success)
- success();
- },
- error: function (jqXHR, textStatus, errorThrown) {
- console.log(jqXHR.statusText);
- }
- });
- }
- static AuthorBlock(id) {
- $.ajax({
- type: "POST",
- url: "../api/books/" + id + "/author/block",
- success: function (data, textStatus, jqXHR) {
- if (success)
- success();
- },
- error: function (jqXHR, textStatus, errorThrown) {
- console.log(jqXHR.statusText);
- }
- });
- }
-
- static Logout() {
- localStorage.removeItem(this._token_name);
- window.location.replace("web/login.html");
- };
-}
\ No newline at end of file
diff --git a/src/BukiVedi.App/bin/Debug/net8.0/web/js/jquery.js b/src/BukiVedi.App/bin/Debug/net8.0/web/js/jquery.js
deleted file mode 100644
index b86de89..0000000
--- a/src/BukiVedi.App/bin/Debug/net8.0/web/js/jquery.js
+++ /dev/null
@@ -1,10993 +0,0 @@
-/*!
- * jQuery JavaScript Library v3.6.3
- * https://jquery.com/
- *
- * Includes Sizzle.js
- * https://sizzlejs.com/
- *
- * Copyright OpenJS Foundation and other contributors
- * Released under the MIT license
- * https://jquery.org/license
- *
- * Date: 2022-12-20T21:28Z
- */
-( function( global, factory ) {
-
- "use strict";
-
- if ( typeof module === "object" && typeof module.exports === "object" ) {
-
- // For CommonJS and CommonJS-like environments where a proper `window`
- // is present, execute the factory and get jQuery.
- // For environments that do not have a `window` with a `document`
- // (such as Node.js), expose a factory as module.exports.
- // This accentuates the need for the creation of a real `window`.
- // e.g. var jQuery = require("jquery")(window);
- // See ticket trac-14549 for more info.
- module.exports = global.document ?
- factory( global, true ) :
- function( w ) {
- if ( !w.document ) {
- throw new Error( "jQuery requires a window with a document" );
- }
- return factory( w );
- };
- } else {
- factory( global );
- }
-
-// Pass this if window is not defined yet
-} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
-
-// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
-// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
-// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
-// enough that all such attempts are guarded in a try block.
-"use strict";
-
-var arr = [];
-
-var getProto = Object.getPrototypeOf;
-
-var slice = arr.slice;
-
-var flat = arr.flat ? function( array ) {
- return arr.flat.call( array );
-} : function( array ) {
- return arr.concat.apply( [], array );
-};
-
-
-var push = arr.push;
-
-var indexOf = arr.indexOf;
-
-var class2type = {};
-
-var toString = class2type.toString;
-
-var hasOwn = class2type.hasOwnProperty;
-
-var fnToString = hasOwn.toString;
-
-var ObjectFunctionString = fnToString.call( Object );
-
-var support = {};
-
-var isFunction = function isFunction( obj ) {
-
- // Support: Chrome <=57, Firefox <=52
- // In some browsers, typeof returns "function" for HTML