mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-12-11 03:23:03 +03:00
Merge pull request #11220 from Shadowghost/add-playlist-acl-api
Add playlist ACL endpoints
This commit is contained in:
@@ -519,7 +519,7 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||
|
||||
private void FetchFromSharesNode(XmlReader reader, IHasShares item)
|
||||
{
|
||||
var list = new List<Share>();
|
||||
var list = new List<PlaylistUserPermissions>();
|
||||
|
||||
reader.MoveToContent();
|
||||
reader.Read();
|
||||
@@ -565,7 +565,7 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||
}
|
||||
}
|
||||
|
||||
item.Shares = list.ToArray();
|
||||
item.Shares = [.. list];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -830,12 +830,12 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||
/// </summary>
|
||||
/// <param name="reader">The xml reader.</param>
|
||||
/// <returns>The share.</returns>
|
||||
protected Share? GetShare(XmlReader reader)
|
||||
protected PlaylistUserPermissions? GetShare(XmlReader reader)
|
||||
{
|
||||
var item = new Share();
|
||||
|
||||
reader.MoveToContent();
|
||||
reader.Read();
|
||||
string? userId = null;
|
||||
var canEdit = false;
|
||||
|
||||
// Loop through each element
|
||||
while (!reader.EOF && reader.ReadState == ReadState.Interactive)
|
||||
@@ -845,10 +845,10 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||
switch (reader.Name)
|
||||
{
|
||||
case "UserId":
|
||||
item.UserId = reader.ReadNormalizedString();
|
||||
userId = reader.ReadNormalizedString();
|
||||
break;
|
||||
case "CanEdit":
|
||||
item.CanEdit = string.Equals(reader.ReadElementContentAsString(), "true", StringComparison.OrdinalIgnoreCase);
|
||||
canEdit = string.Equals(reader.ReadElementContentAsString(), "true", StringComparison.OrdinalIgnoreCase);
|
||||
break;
|
||||
default:
|
||||
reader.Skip();
|
||||
@@ -862,9 +862,9 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||
}
|
||||
|
||||
// This is valid
|
||||
if (!string.IsNullOrWhiteSpace(item.UserId))
|
||||
if (!string.IsNullOrWhiteSpace(userId) && Guid.TryParse(userId, out var guid))
|
||||
{
|
||||
return item;
|
||||
return new PlaylistUserPermissions(guid, canEdit);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@@ -420,19 +420,16 @@ namespace MediaBrowser.LocalMetadata.Savers
|
||||
|
||||
foreach (var share in item.Shares)
|
||||
{
|
||||
if (share.UserId is not null)
|
||||
{
|
||||
await writer.WriteStartElementAsync(null, "Share", null).ConfigureAwait(false);
|
||||
await writer.WriteStartElementAsync(null, "Share", null).ConfigureAwait(false);
|
||||
|
||||
await writer.WriteElementStringAsync(null, "UserId", null, share.UserId).ConfigureAwait(false);
|
||||
await writer.WriteElementStringAsync(
|
||||
null,
|
||||
"CanEdit",
|
||||
null,
|
||||
share.CanEdit.ToString(CultureInfo.InvariantCulture).ToLowerInvariant()).ConfigureAwait(false);
|
||||
await writer.WriteElementStringAsync(null, "UserId", null, share.UserId.ToString()).ConfigureAwait(false);
|
||||
await writer.WriteElementStringAsync(
|
||||
null,
|
||||
"CanEdit",
|
||||
null,
|
||||
share.CanEdit.ToString(CultureInfo.InvariantCulture).ToLowerInvariant()).ConfigureAwait(false);
|
||||
|
||||
await writer.WriteEndElementAsync().ConfigureAwait(false);
|
||||
}
|
||||
await writer.WriteEndElementAsync().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
await writer.WriteEndElementAsync().ConfigureAwait(false);
|
||||
|
||||
Reference in New Issue
Block a user