mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-06-06 23:24:14 -04:00
Merge pull request #33 from AnonymusRaccoon/fix
Fixing public url with double '/'
This commit is contained in:
commit
1d114cc91f
@ -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; } = "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);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user