separate display preferences per client

This commit is contained in:
Luke Pulverenti 2013-07-26 21:15:55 -04:00
parent 90077dd216
commit 2b07e6aaf8
14 changed files with 85 additions and 53 deletions

View File

@ -21,6 +21,12 @@ namespace MediaBrowser.Api
/// <value>The id.</value> /// <value>The id.</value>
[ApiMember(Name = "DisplayPreferencesId", Description = "DisplayPreferences Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] [ApiMember(Name = "DisplayPreferencesId", Description = "DisplayPreferences Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
public Guid DisplayPreferencesId { get; set; } public Guid DisplayPreferencesId { get; set; }
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
public Guid UserId { get; set; }
[ApiMember(Name = "Client", Description = "Client", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
public string Client { get; set; }
} }
[Route("/DisplayPreferences/{Id}", "GET")] [Route("/DisplayPreferences/{Id}", "GET")]
@ -33,6 +39,12 @@ namespace MediaBrowser.Api
/// <value>The id.</value> /// <value>The id.</value>
[ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
public Guid Id { get; set; } public Guid Id { get; set; }
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
public Guid UserId { get; set; }
[ApiMember(Name = "Client", Description = "Client", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
public string Client { get; set; }
} }
/// <summary> /// <summary>
@ -66,7 +78,7 @@ namespace MediaBrowser.Api
/// <param name="request">The request.</param> /// <param name="request">The request.</param>
public object Get(GetDisplayPreferences request) public object Get(GetDisplayPreferences request)
{ {
var result = _displayPreferencesManager.GetDisplayPreferences(request.Id); var result = _displayPreferencesManager.GetDisplayPreferences(request.Id, request.UserId, request.Client);
return ToOptimizedResult(result); return ToOptimizedResult(result);
} }
@ -80,7 +92,7 @@ namespace MediaBrowser.Api
// Serialize to json and then back so that the core doesn't see the request dto type // Serialize to json and then back so that the core doesn't see the request dto type
var displayPreferences = _jsonSerializer.DeserializeFromString<DisplayPreferences>(_jsonSerializer.SerializeToString(request)); var displayPreferences = _jsonSerializer.DeserializeFromString<DisplayPreferences>(_jsonSerializer.SerializeToString(request));
var task = _displayPreferencesManager.SaveDisplayPreferences(displayPreferences, CancellationToken.None); var task = _displayPreferencesManager.SaveDisplayPreferences(displayPreferences, request.UserId, request.Client, CancellationToken.None);
Task.WaitAll(task); Task.WaitAll(task);
} }

View File

@ -35,7 +35,7 @@ namespace MediaBrowser.Controller.Entities
/// Allow different display preferences for each collection folder /// Allow different display preferences for each collection folder
/// </summary> /// </summary>
/// <value>The display prefs id.</value> /// <value>The display prefs id.</value>
protected override Guid DisplayPreferencesId public override Guid DisplayPreferencesId
{ {
get get
{ {

View File

@ -72,7 +72,7 @@ namespace MediaBrowser.Controller.Entities
/// </summary> /// </summary>
/// <value>The display prefs id.</value> /// <value>The display prefs id.</value>
[IgnoreDataMember] [IgnoreDataMember]
protected virtual Guid DisplayPreferencesId public virtual Guid DisplayPreferencesId
{ {
get get
{ {

View File

@ -20,16 +20,20 @@ namespace MediaBrowser.Controller.Persistence
/// Saves display preferences for an item /// Saves display preferences for an item
/// </summary> /// </summary>
/// <param name="displayPreferences">The display preferences.</param> /// <param name="displayPreferences">The display preferences.</param>
/// <param name="userId">The user id.</param>
/// <param name="client">The client.</param>
/// <param name="cancellationToken">The cancellation token.</param> /// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns> /// <returns>Task.</returns>
Task SaveDisplayPreferences(DisplayPreferences displayPreferences, Task SaveDisplayPreferences(DisplayPreferences displayPreferences, Guid userId, string client,
CancellationToken cancellationToken); CancellationToken cancellationToken);
/// <summary> /// <summary>
/// Gets the display preferences. /// Gets the display preferences.
/// </summary> /// </summary>
/// <param name="displayPreferencesId">The display preferences id.</param> /// <param name="displayPreferencesId">The display preferences id.</param>
/// <param name="userId">The user id.</param>
/// <param name="client">The client.</param>
/// <returns>Task{DisplayPreferences}.</returns> /// <returns>Task{DisplayPreferences}.</returns>
DisplayPreferences GetDisplayPreferences(Guid displayPreferencesId); DisplayPreferences GetDisplayPreferences(Guid displayPreferencesId, Guid userId, string client);
} }
} }

View File

@ -477,8 +477,10 @@ namespace MediaBrowser.Model.ApiClient
/// Gets the display preferences. /// Gets the display preferences.
/// </summary> /// </summary>
/// <param name="id">The id.</param> /// <param name="id">The id.</param>
/// <param name="userId">The user id.</param>
/// <param name="client">The client.</param>
/// <returns>Task{BaseItemDto}.</returns> /// <returns>Task{BaseItemDto}.</returns>
Task<DisplayPreferences> GetDisplayPreferencesAsync(string id); Task<DisplayPreferences> GetDisplayPreferencesAsync(string id, string userId, string client);
/// <summary> /// <summary>
/// Updates display preferences for a user /// Updates display preferences for a user
@ -487,7 +489,7 @@ namespace MediaBrowser.Model.ApiClient
/// <param name="displayPreferences">The display preferences.</param> /// <param name="displayPreferences">The display preferences.</param>
/// <returns>Task{DisplayPreferences}.</returns> /// <returns>Task{DisplayPreferences}.</returns>
/// <exception cref="System.ArgumentNullException">userId</exception> /// <exception cref="System.ArgumentNullException">userId</exception>
Task UpdateDisplayPreferencesAsync(DisplayPreferences displayPreferences); Task UpdateDisplayPreferencesAsync(DisplayPreferences displayPreferences, string userId, string client);
/// <summary> /// <summary>
/// Posts a set of data to a url, and deserializes the return stream into T /// Posts a set of data to a url, and deserializes the return stream into T

View File

@ -82,11 +82,13 @@
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Data.SQLite"> <Reference Include="System.Data.SQLite, Version=1.0.87.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<HintPath>..\packages\System.Data.SQLite.x86.1.0.86.0\lib\net45\System.Data.SQLite.dll</HintPath> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\System.Data.SQLite.x86.1.0.87.0\lib\net45\System.Data.SQLite.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Data.SQLite.Linq"> <Reference Include="System.Data.SQLite.Linq, Version=1.0.87.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.x86.1.0.86.0\lib\net45\System.Data.SQLite.Linq.dll</HintPath> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\System.Data.SQLite.x86.1.0.87.0\lib\net45\System.Data.SQLite.Linq.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Reactive.Core"> <Reference Include="System.Reactive.Core">
<HintPath>..\packages\Rx-Core.2.1.30214.0\lib\Net45\System.Reactive.Core.dll</HintPath> <HintPath>..\packages\Rx-Core.2.1.30214.0\lib\Net45\System.Reactive.Core.dll</HintPath>

View File

@ -85,9 +85,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
string[] queries = { string[] queries = {
"create table if not exists displaypreferences (id GUID, data BLOB)", "create table if not exists userdisplaypreferences (id GUID, userId GUID, client text, data BLOB)",
"create unique index if not exists displaypreferencesindex on displaypreferences (id)", "create unique index if not exists userdisplaypreferencesindex on userdisplaypreferences (id, userId, client)",
"create table if not exists schema_version (table_name primary key, version)",
//pragmas //pragmas
"pragma temp_store = memory" "pragma temp_store = memory"
}; };
@ -99,10 +98,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
/// Save the display preferences associated with an item in the repo /// Save the display preferences associated with an item in the repo
/// </summary> /// </summary>
/// <param name="displayPreferences">The display preferences.</param> /// <param name="displayPreferences">The display preferences.</param>
/// <param name="userId">The user id.</param>
/// <param name="client">The client.</param>
/// <param name="cancellationToken">The cancellation token.</param> /// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns> /// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException">item</exception> /// <exception cref="System.ArgumentNullException">item</exception>
public async Task SaveDisplayPreferences(DisplayPreferences displayPreferences, CancellationToken cancellationToken) public async Task SaveDisplayPreferences(DisplayPreferences displayPreferences, Guid userId, string client, CancellationToken cancellationToken)
{ {
if (displayPreferences == null) if (displayPreferences == null)
{ {
@ -131,9 +132,11 @@ namespace MediaBrowser.Server.Implementations.Persistence
using (var cmd = _connection.CreateCommand()) using (var cmd = _connection.CreateCommand())
{ {
cmd.CommandText = "replace into displaypreferences (id, data) values (@1, @2)"; cmd.CommandText = "replace into userdisplaypreferences (id, userid, client, data) values (@1, @2, @3, @4)";
cmd.AddParam("@1", displayPreferences.Id); cmd.AddParam("@1", displayPreferences.Id);
cmd.AddParam("@2", serialized); cmd.AddParam("@2", userId);
cmd.AddParam("@3", client);
cmd.AddParam("@4", serialized);
cmd.Transaction = transaction; cmd.Transaction = transaction;
@ -177,9 +180,11 @@ namespace MediaBrowser.Server.Implementations.Persistence
/// Gets the display preferences. /// Gets the display preferences.
/// </summary> /// </summary>
/// <param name="displayPreferencesId">The display preferences id.</param> /// <param name="displayPreferencesId">The display preferences id.</param>
/// <param name="userId">The user id.</param>
/// <param name="client">The client.</param>
/// <returns>Task{DisplayPreferences}.</returns> /// <returns>Task{DisplayPreferences}.</returns>
/// <exception cref="System.ArgumentNullException">item</exception> /// <exception cref="System.ArgumentNullException">item</exception>
public DisplayPreferences GetDisplayPreferences(Guid displayPreferencesId) public DisplayPreferences GetDisplayPreferences(Guid displayPreferencesId, Guid userId, string client)
{ {
if (displayPreferencesId == Guid.Empty) if (displayPreferencesId == Guid.Empty)
{ {
@ -187,11 +192,17 @@ namespace MediaBrowser.Server.Implementations.Persistence
} }
var cmd = _connection.CreateCommand(); var cmd = _connection.CreateCommand();
cmd.CommandText = "select data from displaypreferences where id = @id"; cmd.CommandText = "select data from userdisplaypreferences where id = @id and userId=@userId and client=@client";
var idParam = cmd.Parameters.Add("@id", DbType.Guid); var idParam = cmd.Parameters.Add("@id", DbType.Guid);
idParam.Value = displayPreferencesId; idParam.Value = displayPreferencesId;
var userIdParam = cmd.Parameters.Add("@userId", DbType.Guid);
userIdParam.Value = userId;
var clientParam = cmd.Parameters.Add("@client", DbType.String);
clientParam.Value = client;
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult | CommandBehavior.SingleRow)) using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult | CommandBehavior.SingleRow))
{ {
if (reader.Read()) if (reader.Read())

View File

@ -14,5 +14,5 @@
<package id="ServiceStack.Redis" version="3.9.43" targetFramework="net45" /> <package id="ServiceStack.Redis" version="3.9.43" targetFramework="net45" />
<package id="ServiceStack.Text" version="3.9.55" targetFramework="net45" /> <package id="ServiceStack.Text" version="3.9.55" targetFramework="net45" />
<package id="SharpZipLib" version="0.86.0" targetFramework="net45" /> <package id="SharpZipLib" version="0.86.0" targetFramework="net45" />
<package id="System.Data.SQLite.x86" version="1.0.86.0" targetFramework="net45" /> <package id="System.Data.SQLite.x86" version="1.0.87.0" targetFramework="net45" />
</packages> </packages>

View File

@ -61,7 +61,7 @@ namespace MediaBrowser.ServerApplication
lblVersion.Content = "Version: " + appHost.ApplicationVersion; lblVersion.Content = "Version: " + appHost.ApplicationVersion;
foreach (var user in userManager.Users) foreach (var user in userManager.Users)
ddlProfile.Items.Add(user); ddlProfile.Items.Add(user);
ddlProfile.Items.Insert(0,new User {Name = "Physical"}); ddlProfile.Items.Insert(0, new User { Name = "Physical" });
ddlProfile.SelectedIndex = 0; ddlProfile.SelectedIndex = 0;
ddlIndexBy.Visibility = ddlSortBy.Visibility = lblIndexBy.Visibility = lblSortBy.Visibility = Visibility.Hidden; ddlIndexBy.Visibility = ddlSortBy.Visibility = lblIndexBy.Visibility = lblSortBy.Visibility = Visibility.Hidden;
@ -94,22 +94,22 @@ namespace MediaBrowser.ServerApplication
children = OrderByName(children, CurrentUser); children = OrderByName(children, CurrentUser);
foreach (Folder folder in children) foreach (Folder folder in children)
{ {
var currentFolder = folder; var currentFolder = folder;
Task.Factory.StartNew(() => Task.Factory.StartNew(() =>
{ {
var prefs = ddlProfile.SelectedItem != null ? _displayPreferencesManager.GetDisplayPreferences(currentFolder.GetDisplayPreferencesId((ddlProfile.SelectedItem as User).Id)) ?? new DisplayPreferences { SortBy = ItemSortBy.SortName } : new DisplayPreferences { SortBy = ItemSortBy.SortName }; var prefs = ddlProfile.SelectedItem != null ? _displayPreferencesManager.GetDisplayPreferences(currentFolder.GetDisplayPreferencesId((ddlProfile.SelectedItem as User).Id), (ddlProfile.SelectedItem as User).Id, "LibraryExplorer") ?? new DisplayPreferences { SortBy = ItemSortBy.SortName } : new DisplayPreferences { SortBy = ItemSortBy.SortName };
var node = new TreeViewItem { Tag = currentFolder }; var node = new TreeViewItem { Tag = currentFolder };
var subChildren = currentFolder.GetChildren(CurrentUser, true, prefs.IndexBy); var subChildren = currentFolder.GetChildren(CurrentUser, true, prefs.IndexBy);
subChildren = OrderByName(subChildren, CurrentUser); subChildren = OrderByName(subChildren, CurrentUser);
AddChildren(node, subChildren, CurrentUser); AddChildren(node, subChildren, CurrentUser);
node.Header = currentFolder.Name + " (" + node.Header = currentFolder.Name + " (" +
node.Items.Count + ")"; node.Items.Count + ")";
tvwLibrary.Items.Add(node); tvwLibrary.Items.Add(node);
}, CancellationToken.None, TaskCreationOptions.None, ui); }, CancellationToken.None, TaskCreationOptions.None, ui);
} }
}); });
lblLoading.Visibility = Visibility.Hidden; lblLoading.Visibility = Visibility.Hidden;
Cursor = Cursors.Arrow; Cursor = Cursors.Arrow;
@ -148,11 +148,11 @@ namespace MediaBrowser.ServerApplication
{ {
foreach (var item in children) foreach (var item in children)
{ {
var node = new TreeViewItem { Tag = item }; var node = new TreeViewItem { Tag = item };
var subFolder = item as Folder; var subFolder = item as Folder;
if (subFolder != null) if (subFolder != null)
{ {
var prefs = _displayPreferencesManager.GetDisplayPreferences(subFolder.GetDisplayPreferencesId(user.Id)); var prefs = _displayPreferencesManager.GetDisplayPreferences(subFolder.GetDisplayPreferencesId(user.Id), user.Id, "LibraryExplorer");
AddChildren(node, OrderBy(subFolder.GetChildren(user, true), user, prefs.SortBy), user); AddChildren(node, OrderBy(subFolder.GetChildren(user, true), user, prefs.SortBy), user);
node.Header = item.Name + " (" + node.Items.Count + ")"; node.Header = item.Name + " (" + node.Items.Count + ")";
@ -185,7 +185,7 @@ namespace MediaBrowser.ServerApplication
lblIndexBy.Visibility = ddlIndexBy.Visibility = ddlSortBy.Visibility = lblSortBy.Visibility = Visibility.Visible; lblIndexBy.Visibility = ddlIndexBy.Visibility = ddlSortBy.Visibility = lblSortBy.Visibility = Visibility.Visible;
ddlIndexBy.ItemsSource = folder.IndexByOptionStrings; ddlIndexBy.ItemsSource = folder.IndexByOptionStrings;
ddlSortBy.ItemsSource = new [] ddlSortBy.ItemsSource = new[]
{ {
ItemSortBy.SortName, ItemSortBy.SortName,
ItemSortBy.Album, ItemSortBy.Album,
@ -200,7 +200,7 @@ namespace MediaBrowser.ServerApplication
ItemSortBy.Runtime ItemSortBy.Runtime
}; };
var prefs = _displayPreferencesManager.GetDisplayPreferences(folder.GetDisplayPreferencesId((ddlProfile.SelectedItem as User).Id)); var prefs = _displayPreferencesManager.GetDisplayPreferences(folder.GetDisplayPreferencesId((ddlProfile.SelectedItem as User).Id), (ddlProfile.SelectedItem as User).Id, "LibraryExplorer");
ddlIndexBy.SelectedItem = prefs != null ddlIndexBy.SelectedItem = prefs != null
? prefs.IndexBy ?? LocalizedStrings.Instance.GetString("NoneDispPref") ? prefs.IndexBy ?? LocalizedStrings.Instance.GetString("NoneDispPref")
@ -359,7 +359,7 @@ namespace MediaBrowser.ServerApplication
var folder = treeItem != null var folder = treeItem != null
? treeItem.Tag as Folder ? treeItem.Tag as Folder
: null; : null;
var prefs = folder != null ? _displayPreferencesManager.GetDisplayPreferences(folder.GetDisplayPreferencesId(CurrentUser.Id)) : new DisplayPreferences { SortBy = ItemSortBy.SortName }; var prefs = folder != null ? _displayPreferencesManager.GetDisplayPreferences(folder.GetDisplayPreferencesId(CurrentUser.Id), CurrentUser.Id, "LibraryExplorer") : new DisplayPreferences { SortBy = ItemSortBy.SortName };
if (folder != null && prefs.IndexBy != ddlIndexBy.SelectedItem as string) if (folder != null && prefs.IndexBy != ddlIndexBy.SelectedItem as string)
{ {
//grab UI context so we can update within the below task //grab UI context so we can update within the below task
@ -400,7 +400,7 @@ namespace MediaBrowser.ServerApplication
var folder = treeItem != null var folder = treeItem != null
? treeItem.Tag as Folder ? treeItem.Tag as Folder
: null; : null;
var prefs = folder != null ? _displayPreferencesManager.GetDisplayPreferences(folder.GetDisplayPreferencesId(CurrentUser.Id)) : new DisplayPreferences(); var prefs = folder != null ? _displayPreferencesManager.GetDisplayPreferences(folder.GetDisplayPreferencesId(CurrentUser.Id), CurrentUser.Id, "LibraryExplorer") : new DisplayPreferences();
if (folder != null && prefs.SortBy != ddlSortBy.SelectedItem as string) if (folder != null && prefs.SortBy != ddlSortBy.SelectedItem as string)
{ {
//grab UI context so we can update within the below task //grab UI context so we can update within the below task

View File

@ -172,12 +172,13 @@
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Data.SQLite, Version=1.0.86.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86"> <Reference Include="System.Data.SQLite, Version=1.0.87.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\System.Data.SQLite.x86.1.0.86.0\lib\net45\System.Data.SQLite.dll</HintPath> <HintPath>..\packages\System.Data.SQLite.x86.1.0.87.0\lib\net45\System.Data.SQLite.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Data.SQLite.Linq"> <Reference Include="System.Data.SQLite.Linq, Version=1.0.87.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.x86.1.0.86.0\lib\net45\System.Data.SQLite.Linq.dll</HintPath> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\System.Data.SQLite.x86.1.0.87.0\lib\net45\System.Data.SQLite.Linq.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.Net" /> <Reference Include="System.Net" />

View File

@ -12,5 +12,5 @@
<package id="ServiceStack.Redis" version="3.9.44" targetFramework="net45" /> <package id="ServiceStack.Redis" version="3.9.44" targetFramework="net45" />
<package id="ServiceStack.Text" version="3.9.55" targetFramework="net45" /> <package id="ServiceStack.Text" version="3.9.55" targetFramework="net45" />
<package id="SimpleInjector" version="2.2.3" targetFramework="net45" /> <package id="SimpleInjector" version="2.2.3" targetFramework="net45" />
<package id="System.Data.SQLite.x86" version="1.0.86.0" targetFramework="net45" /> <package id="System.Data.SQLite.x86" version="1.0.87.0" targetFramework="net45" />
</packages> </packages>

View File

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Common.Internal</id> <id>MediaBrowser.Common.Internal</id>
<version>3.0.156</version> <version>3.0.157</version>
<title>MediaBrowser.Common.Internal</title> <title>MediaBrowser.Common.Internal</title>
<authors>Luke</authors> <authors>Luke</authors>
<owners>ebr,Luke,scottisafool</owners> <owners>ebr,Luke,scottisafool</owners>
@ -12,7 +12,7 @@
<description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description> <description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description>
<copyright>Copyright © Media Browser 2013</copyright> <copyright>Copyright © Media Browser 2013</copyright>
<dependencies> <dependencies>
<dependency id="MediaBrowser.Common" version="3.0.156" /> <dependency id="MediaBrowser.Common" version="3.0.157" />
<dependency id="NLog" version="2.0.1.2" /> <dependency id="NLog" version="2.0.1.2" />
<dependency id="ServiceStack.Text" version="3.9.45" /> <dependency id="ServiceStack.Text" version="3.9.45" />
<dependency id="SimpleInjector" version="2.2.3" /> <dependency id="SimpleInjector" version="2.2.3" />

View File

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Common</id> <id>MediaBrowser.Common</id>
<version>3.0.156</version> <version>3.0.157</version>
<title>MediaBrowser.Common</title> <title>MediaBrowser.Common</title>
<authors>Media Browser Team</authors> <authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners> <owners>ebr,Luke,scottisafool</owners>

View File

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Server.Core</id> <id>MediaBrowser.Server.Core</id>
<version>3.0.156</version> <version>3.0.157</version>
<title>Media Browser.Server.Core</title> <title>Media Browser.Server.Core</title>
<authors>Media Browser Team</authors> <authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners> <owners>ebr,Luke,scottisafool</owners>
@ -12,7 +12,7 @@
<description>Contains core components required to build plugins for Media Browser Server.</description> <description>Contains core components required to build plugins for Media Browser Server.</description>
<copyright>Copyright © Media Browser 2013</copyright> <copyright>Copyright © Media Browser 2013</copyright>
<dependencies> <dependencies>
<dependency id="MediaBrowser.Common" version="3.0.156" /> <dependency id="MediaBrowser.Common" version="3.0.157" />
</dependencies> </dependencies>
</metadata> </metadata>
<files> <files>