mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-07-09 03:04:20 -04:00
PublicUrl: Using an Uri instead of a string to fix / handling
This commit is contained in:
parent
1ccb30ad26
commit
53a9085727
@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
@ -12,17 +13,17 @@ namespace Kyoo.Models
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The link of the current page.
|
/// The link of the current page.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string This { get; }
|
public Uri This { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The link of the first page.
|
/// The link of the first page.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string First { get; }
|
public Uri First { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The link of the next page.
|
/// The link of the next page.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Next { get; }
|
public Uri Next { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The number of items in the current page.
|
/// The number of items in the current page.
|
||||||
@ -42,7 +43,7 @@ namespace Kyoo.Models
|
|||||||
/// <param name="this">The link of the current page.</param>
|
/// <param name="this">The link of the current page.</param>
|
||||||
/// <param name="next">The link of the next page.</param>
|
/// <param name="next">The link of the next page.</param>
|
||||||
/// <param name="first">The link of the first page.</param>
|
/// <param name="first">The link of the first page.</param>
|
||||||
public Page(ICollection<T> items, string @this, string next, string first)
|
public Page(ICollection<T> items, Uri @this, Uri next, Uri first)
|
||||||
{
|
{
|
||||||
Items = items;
|
Items = items;
|
||||||
This = @this;
|
This = @this;
|
||||||
@ -58,21 +59,21 @@ namespace Kyoo.Models
|
|||||||
/// <param name="query">The list of query strings of the current page</param>
|
/// <param name="query">The list of query strings of the current page</param>
|
||||||
/// <param name="limit">The number of items requested for the current page.</param>
|
/// <param name="limit">The number of items requested for the current page.</param>
|
||||||
public Page(ICollection<T> items,
|
public Page(ICollection<T> items,
|
||||||
string url,
|
Uri url,
|
||||||
Dictionary<string, string> query,
|
Dictionary<string, string> query,
|
||||||
int limit)
|
int limit)
|
||||||
{
|
{
|
||||||
Items = items;
|
Items = items;
|
||||||
This = url + query.ToQueryString();
|
This = new Uri(url + query.ToQueryString());
|
||||||
|
|
||||||
if (items.Count == limit && limit > 0)
|
if (items.Count == limit && limit > 0)
|
||||||
{
|
{
|
||||||
query["afterID"] = items.Last().ID.ToString();
|
query["afterID"] = items.Last().ID.ToString();
|
||||||
Next = url + query.ToQueryString();
|
Next = new Uri(url + query.ToQueryString());
|
||||||
}
|
}
|
||||||
|
|
||||||
query.Remove("afterID");
|
query.Remove("afterID");
|
||||||
First = url + query.ToQueryString();
|
First = new Uri(url + query.ToQueryString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -15,9 +15,9 @@ namespace Kyoo.CommonApi
|
|||||||
public class CrudApi<T> : ControllerBase where T : class, IResource
|
public class CrudApi<T> : ControllerBase where T : class, IResource
|
||||||
{
|
{
|
||||||
private readonly IRepository<T> _repository;
|
private readonly IRepository<T> _repository;
|
||||||
protected readonly string BaseURL;
|
protected readonly Uri BaseURL;
|
||||||
|
|
||||||
public CrudApi(IRepository<T> repository, string baseURL)
|
public CrudApi(IRepository<T> repository, Uri baseURL)
|
||||||
{
|
{
|
||||||
_repository = repository;
|
_repository = repository;
|
||||||
BaseURL = baseURL;
|
BaseURL = baseURL;
|
||||||
@ -82,8 +82,8 @@ namespace Kyoo.CommonApi
|
|||||||
protected Page<TResult> Page<TResult>(ICollection<TResult> resources, int limit)
|
protected Page<TResult> Page<TResult>(ICollection<TResult> resources, int limit)
|
||||||
where TResult : IResource
|
where TResult : IResource
|
||||||
{
|
{
|
||||||
return new(resources,
|
return new Page<TResult>(resources,
|
||||||
BaseURL + Request.Path,
|
new Uri(BaseURL, Request.Path),
|
||||||
Request.Query.ToDictionary(x => x.Key, x => x.Value.ToString(), StringComparer.InvariantCultureIgnoreCase),
|
Request.Query.ToDictionary(x => x.Key, x => x.Value.ToString(), StringComparer.InvariantCultureIgnoreCase),
|
||||||
limit);
|
limit);
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
namespace Kyoo.Models.Options
|
namespace Kyoo.Models.Options
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -11,14 +13,14 @@ namespace Kyoo.Models.Options
|
|||||||
public const string Path = "Basics";
|
public const string Path = "Basics";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The internal url where the server will listen
|
/// The internal url where the server will listen. It supports globing.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Url { get; set; } = "http://*:5000";
|
public string Url { get; set; } = new("http://*:5000");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The public url that will be used in items response and in authentication server host.
|
/// The public url that will be used in items response and in authentication server host.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string PublicUrl { get; set; } = "http://localhost:5000/";
|
public Uri PublicUrl { get; set; } = new("http://localhost:5000");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The path of the plugin directory.
|
/// The path of the plugin directory.
|
||||||
|
@ -20,7 +20,7 @@ namespace Kyoo.Api
|
|||||||
public class LibraryItemApi : ControllerBase
|
public class LibraryItemApi : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly ILibraryItemRepository _libraryItems;
|
private readonly ILibraryItemRepository _libraryItems;
|
||||||
private readonly string _baseURL;
|
private readonly Uri _baseURL;
|
||||||
|
|
||||||
|
|
||||||
public LibraryItemApi(ILibraryItemRepository libraryItems, IOptions<BasicOptions> options)
|
public LibraryItemApi(ILibraryItemRepository libraryItems, IOptions<BasicOptions> options)
|
||||||
@ -44,7 +44,7 @@ namespace Kyoo.Api
|
|||||||
new Pagination(limit, afterID));
|
new Pagination(limit, afterID));
|
||||||
|
|
||||||
return new Page<LibraryItem>(resources,
|
return new Page<LibraryItem>(resources,
|
||||||
_baseURL + Request.Path,
|
new Uri(_baseURL + Request.Path),
|
||||||
Request.Query.ToDictionary(x => x.Key, x => x.Value.ToString(), StringComparer.InvariantCultureIgnoreCase),
|
Request.Query.ToDictionary(x => x.Key, x => x.Value.ToString(), StringComparer.InvariantCultureIgnoreCase),
|
||||||
limit);
|
limit);
|
||||||
}
|
}
|
||||||
|
@ -386,7 +386,7 @@ namespace Kyoo.Api
|
|||||||
string path = _files.Combine(await _files.GetExtraDirectory(show), "Attachments");
|
string path = _files.Combine(await _files.GetExtraDirectory(show), "Attachments");
|
||||||
return (await _files.ListFiles(path))
|
return (await _files.ListFiles(path))
|
||||||
.ToDictionary(Path.GetFileNameWithoutExtension,
|
.ToDictionary(Path.GetFileNameWithoutExtension,
|
||||||
x => $"{BaseURL}/api/shows/{slug}/fonts/{Path.GetFileName(x)}");
|
x => $"{BaseURL}api/shows/{slug}/fonts/{Path.GetFileName(x)}");
|
||||||
}
|
}
|
||||||
catch (ItemNotFoundException)
|
catch (ItemNotFoundException)
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"basics": {
|
"basics": {
|
||||||
"url": "http://*:5000",
|
"url": "http://*:5000",
|
||||||
"publicUrl": "http://localhost:5000/",
|
"publicUrl": "http://localhost:5000",
|
||||||
"pluginsPath": "plugins/",
|
"pluginsPath": "plugins/",
|
||||||
"transmuxPath": "cached/transmux",
|
"transmuxPath": "cached/transmux",
|
||||||
"transcodePath": "cached/transcode",
|
"transcodePath": "cached/transcode",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user