diff --git a/MediaBrowser.Api/ApiService.cs b/MediaBrowser.Api/ApiService.cs
index ca76d5c5c1..ab12a350f4 100644
--- a/MediaBrowser.Api/ApiService.cs
+++ b/MediaBrowser.Api/ApiService.cs
@@ -1,10 +1,10 @@
-using System;
+using MediaBrowser.Controller;
+using MediaBrowser.Model.DTO;
+using MediaBrowser.Model.Entities;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
-using MediaBrowser.Controller;
-using MediaBrowser.Model.DTO;
-using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api
{
@@ -13,6 +13,9 @@ namespace MediaBrowser.Api
///
public static class ApiService
{
+ ///
+ /// Gets an Item by Id, or the root item if none is supplied
+ ///
public static BaseItem GetItemById(string id)
{
Guid guid = string.IsNullOrEmpty(id) ? Guid.Empty : new Guid(id);
@@ -20,6 +23,52 @@ namespace MediaBrowser.Api
return Kernel.Instance.GetItemById(guid);
}
+ ///
+ /// Gets a User by Id
+ ///
+ /// Whether or not to update the user's LastActivityDate
+ public static User GetUserById(string id, bool logActivity)
+ {
+ Guid guid = new Guid(id);
+
+ User user = Kernel.Instance.Users.FirstOrDefault(u => u.Id == guid);
+
+ if (logActivity)
+ {
+ LogUserActivity(user);
+ }
+
+ return user;
+ }
+
+ ///
+ /// Gets the default User
+ ///
+ /// Whether or not to update the user's LastActivityDate
+ public static User GetDefaultUser(bool logActivity)
+ {
+ User user = Kernel.Instance.GetDefaultUser();
+
+ if (logActivity)
+ {
+ LogUserActivity(user);
+ }
+
+ return user;
+ }
+
+ ///
+ /// Updates LastActivityDate for a given User
+ ///
+ public static void LogUserActivity(User user)
+ {
+ user.LastActivityDate = DateTime.UtcNow;
+ Kernel.Instance.SaveUser(user);
+ }
+
+ ///
+ /// Converts a BaseItem to a DTOBaseItem
+ ///
public async static Task GetDTOBaseItem(BaseItem item, User user,
bool includeChildren = true,
bool includePeople = true)
@@ -52,6 +101,9 @@ namespace MediaBrowser.Api
return dto;
}
+ ///
+ /// Sets simple property values on a DTOBaseItem
+ ///
private static void AttachBasicFields(DTOBaseItem dto, BaseItem item, User user)
{
dto.AspectRatio = item.AspectRatio;
@@ -168,6 +220,9 @@ namespace MediaBrowser.Api
}
}
+ ///
+ /// Attaches Studio DTO's to a DTOBaseItem
+ ///
private static async Task AttachStudios(DTOBaseItem dto, BaseItem item)
{
// Attach Studios by transforming them into BaseItemStudio (DTO)
@@ -191,6 +246,9 @@ namespace MediaBrowser.Api
}
}
+ ///
+ /// Attaches child DTO's to a DTOBaseItem
+ ///
private static async Task AttachChildren(DTOBaseItem dto, BaseItem item, User user)
{
var folder = item as Folder;
@@ -203,6 +261,9 @@ namespace MediaBrowser.Api
}
}
+ ///
+ /// Attaches trailer DTO's to a DTOBaseItem
+ ///
private static async Task AttachLocalTrailers(DTOBaseItem dto, BaseItem item, User user)
{
if (item.LocalTrailers != null && item.LocalTrailers.Any())
@@ -211,6 +272,9 @@ namespace MediaBrowser.Api
}
}
+ ///
+ /// Attaches People DTO's to a DTOBaseItem
+ ///
private static async Task AttachPeople(DTOBaseItem dto, BaseItem item)
{
// Attach People by transforming them into BaseItemPerson (DTO)
@@ -238,6 +302,9 @@ namespace MediaBrowser.Api
}
}
+ ///
+ /// If an item does not any backdrops, this can be used to find the first parent that does have one
+ ///
private static Guid? GetParentBackdropItemId(BaseItem item, out int backdropCount)
{
backdropCount = 0;
@@ -258,6 +325,9 @@ namespace MediaBrowser.Api
return null;
}
+ ///
+ /// If an item does not have a logo, this can be used to find the first parent that does have one
+ ///
private static Guid? GetParentLogoItemId(BaseItem item)
{
var parent = item.Parent;
@@ -275,6 +345,9 @@ namespace MediaBrowser.Api
return null;
}
+ ///
+ /// Gets an ImagesByName entity along with the number of items containing it
+ ///
public static IBNItem GetIBNItem(BaseEntity entity, int itemCount)
{
return new IBNItem()
@@ -286,6 +359,9 @@ namespace MediaBrowser.Api
};
}
+ ///
+ /// Converts a User to a DTOUser
+ ///
public static DTOUser GetDTOUser(User user)
{
return new DTOUser()
diff --git a/MediaBrowser.Api/HttpHandlers/DefaultUserHandler.cs b/MediaBrowser.Api/HttpHandlers/DefaultUserHandler.cs
index 0fb739b7d0..56a05dab84 100644
--- a/MediaBrowser.Api/HttpHandlers/DefaultUserHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/DefaultUserHandler.cs
@@ -1,9 +1,7 @@
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Net.Handlers;
-using MediaBrowser.Controller;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
+using System.Threading.Tasks;
namespace MediaBrowser.Api.HttpHandlers
{
@@ -11,7 +9,7 @@ namespace MediaBrowser.Api.HttpHandlers
{
protected override Task GetObjectToSerialize()
{
- User user = Kernel.Instance.Users.FirstOrDefault();
+ User user = ApiService.GetDefaultUser(false);
DTOUser dto = ApiService.GetDTOUser(user);
diff --git a/MediaBrowser.Api/HttpHandlers/GenreHandler.cs b/MediaBrowser.Api/HttpHandlers/GenreHandler.cs
index eeadf1e453..dffae49d79 100644
--- a/MediaBrowser.Api/HttpHandlers/GenreHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/GenreHandler.cs
@@ -1,11 +1,11 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
namespace MediaBrowser.Api.HttpHandlers
{
@@ -17,8 +17,7 @@ namespace MediaBrowser.Api.HttpHandlers
protected override Task GetObjectToSerialize()
{
Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
- Guid userId = Guid.Parse(QueryString["userid"]);
- User user = Kernel.Instance.Users.First(u => u.Id == userId);
+ User user = ApiService.GetUserById(QueryString["userid"], true);
string name = QueryString["name"];
diff --git a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs
index 9be2efa173..073411b882 100644
--- a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs
@@ -1,11 +1,10 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
namespace MediaBrowser.Api.HttpHandlers
{
@@ -14,8 +13,7 @@ namespace MediaBrowser.Api.HttpHandlers
protected override Task GetObjectToSerialize()
{
Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
- Guid userId = Guid.Parse(QueryString["userid"]);
- User user = Kernel.Instance.Users.First(u => u.Id == userId);
+ User user = ApiService.GetUserById(QueryString["userid"], true);
return GetAllGenres(parent, user);
}
diff --git a/MediaBrowser.Api/HttpHandlers/ImageHandler.cs b/MediaBrowser.Api/HttpHandlers/ImageHandler.cs
index c45d20b7cc..9496362b90 100644
--- a/MediaBrowser.Api/HttpHandlers/ImageHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/ImageHandler.cs
@@ -1,12 +1,12 @@
-using System;
-using System.IO;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Logging;
+using MediaBrowser.Common.Logging;
using MediaBrowser.Common.Net;
using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Model.Entities;
+using System;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
namespace MediaBrowser.Api.HttpHandlers
{
@@ -57,8 +57,7 @@ namespace MediaBrowser.Api.HttpHandlers
if (!string.IsNullOrEmpty(userId))
{
- Guid userIdGuid = new Guid(userId);
- return Kernel.Instance.Users.First(u => u.Id == userIdGuid).PrimaryImagePath;
+ return ApiService.GetUserById(userId, false).PrimaryImagePath;
}
BaseItem item = ApiService.GetItemById(QueryString["id"]);
diff --git a/MediaBrowser.Api/HttpHandlers/ItemHandler.cs b/MediaBrowser.Api/HttpHandlers/ItemHandler.cs
index 35310f042b..e6908001de 100644
--- a/MediaBrowser.Api/HttpHandlers/ItemHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/ItemHandler.cs
@@ -1,10 +1,7 @@
-using System;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Net.Handlers;
-using MediaBrowser.Controller;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
+using System.Threading.Tasks;
namespace MediaBrowser.Api.HttpHandlers
{
@@ -12,8 +9,7 @@ namespace MediaBrowser.Api.HttpHandlers
{
protected override Task GetObjectToSerialize()
{
- Guid userId = Guid.Parse(QueryString["userid"]);
- User user = Kernel.Instance.Users.First(u => u.Id == userId);
+ User user = ApiService.GetUserById(QueryString["userid"], true);
BaseItem item = ItemToSerialize;
diff --git a/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs b/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs
index 09814b191d..a792f8b03f 100644
--- a/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs
@@ -1,11 +1,10 @@
-using System;
+using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Model.DTO;
+using MediaBrowser.Model.Entities;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
-using MediaBrowser.Common.Net.Handlers;
-using MediaBrowser.Controller;
-using MediaBrowser.Model.DTO;
-using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.HttpHandlers
{
@@ -13,53 +12,48 @@ namespace MediaBrowser.Api.HttpHandlers
{
protected override Task GetObjectToSerialize()
{
- User user = Kernel.Instance.Users.First(u => u.Id == UserId);
+ User user = ApiService.GetUserById(QueryString["userid"], true);
- return Task.WhenAll(ItemsToSerialize.Select(i =>
+ return Task.WhenAll(GetItemsToSerialize(user).Select(i =>
{
return ApiService.GetDTOBaseItem(i, user, includeChildren: false, includePeople: false);
}));
}
- protected IEnumerable ItemsToSerialize
+ private IEnumerable GetItemsToSerialize(User user)
{
- get
+ Folder parent = ApiService.GetItemById(ItemId) as Folder;
+
+ if (ListType.Equals("inprogressitems", StringComparison.OrdinalIgnoreCase))
{
- Folder parent = ApiService.GetItemById(ItemId) as Folder;
-
- User user = Kernel.Instance.Users.First(u => u.Id == UserId);
-
- if (ListType.Equals("inprogressitems", StringComparison.OrdinalIgnoreCase))
- {
- return parent.GetInProgressItems(user);
- }
- else if (ListType.Equals("recentlyaddeditems", StringComparison.OrdinalIgnoreCase))
- {
- return parent.GetRecentlyAddedItems(user);
- }
- else if (ListType.Equals("recentlyaddedunplayeditems", StringComparison.OrdinalIgnoreCase))
- {
- return parent.GetRecentlyAddedUnplayedItems(user);
- }
- else if (ListType.Equals("itemswithgenre", StringComparison.OrdinalIgnoreCase))
- {
- return parent.GetItemsWithGenre(QueryString["name"], user);
- }
- else if (ListType.Equals("itemswithyear", StringComparison.OrdinalIgnoreCase))
- {
- return parent.GetItemsWithYear(int.Parse(QueryString["year"]), user);
- }
- else if (ListType.Equals("itemswithstudio", StringComparison.OrdinalIgnoreCase))
- {
- return parent.GetItemsWithStudio(QueryString["name"], user);
- }
- else if (ListType.Equals("itemswithperson", StringComparison.OrdinalIgnoreCase))
- {
- return parent.GetItemsWithPerson(QueryString["name"], null, user);
- }
-
- throw new InvalidOperationException();
+ return parent.GetInProgressItems(user);
}
+ else if (ListType.Equals("recentlyaddeditems", StringComparison.OrdinalIgnoreCase))
+ {
+ return parent.GetRecentlyAddedItems(user);
+ }
+ else if (ListType.Equals("recentlyaddedunplayeditems", StringComparison.OrdinalIgnoreCase))
+ {
+ return parent.GetRecentlyAddedUnplayedItems(user);
+ }
+ else if (ListType.Equals("itemswithgenre", StringComparison.OrdinalIgnoreCase))
+ {
+ return parent.GetItemsWithGenre(QueryString["name"], user);
+ }
+ else if (ListType.Equals("itemswithyear", StringComparison.OrdinalIgnoreCase))
+ {
+ return parent.GetItemsWithYear(int.Parse(QueryString["year"]), user);
+ }
+ else if (ListType.Equals("itemswithstudio", StringComparison.OrdinalIgnoreCase))
+ {
+ return parent.GetItemsWithStudio(QueryString["name"], user);
+ }
+ else if (ListType.Equals("itemswithperson", StringComparison.OrdinalIgnoreCase))
+ {
+ return parent.GetItemsWithPerson(QueryString["name"], null, user);
+ }
+
+ throw new InvalidOperationException();
}
protected string ItemId
@@ -70,14 +64,6 @@ namespace MediaBrowser.Api.HttpHandlers
}
}
- protected Guid UserId
- {
- get
- {
- return Guid.Parse(QueryString["userid"]);
- }
- }
-
private string ListType
{
get
diff --git a/MediaBrowser.Api/HttpHandlers/PersonHandler.cs b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs
index 0d496c2406..74373675f7 100644
--- a/MediaBrowser.Api/HttpHandlers/PersonHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs
@@ -1,11 +1,9 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
+using System.Collections.Generic;
+using System.Threading.Tasks;
namespace MediaBrowser.Api.HttpHandlers
{
@@ -17,8 +15,7 @@ namespace MediaBrowser.Api.HttpHandlers
protected override Task GetObjectToSerialize()
{
Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
- Guid userId = Guid.Parse(QueryString["userid"]);
- User user = Kernel.Instance.Users.First(u => u.Id == userId);
+ User user = ApiService.GetUserById(QueryString["userid"], true);
string name = QueryString["name"];
diff --git a/MediaBrowser.Api/HttpHandlers/StudioHandler.cs b/MediaBrowser.Api/HttpHandlers/StudioHandler.cs
index 458dd9da13..40cdc23bcc 100644
--- a/MediaBrowser.Api/HttpHandlers/StudioHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/StudioHandler.cs
@@ -1,11 +1,11 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
namespace MediaBrowser.Api.HttpHandlers
{
@@ -17,8 +17,7 @@ namespace MediaBrowser.Api.HttpHandlers
protected override Task GetObjectToSerialize()
{
Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
- Guid userId = Guid.Parse(QueryString["userid"]);
- User user = Kernel.Instance.Users.First(u => u.Id == userId);
+ User user = ApiService.GetUserById(QueryString["userid"], true);
string name = QueryString["name"];
diff --git a/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs b/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs
index d9805c43c8..6ccc6aa788 100644
--- a/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs
@@ -1,11 +1,10 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
namespace MediaBrowser.Api.HttpHandlers
{
@@ -14,8 +13,7 @@ namespace MediaBrowser.Api.HttpHandlers
protected override Task GetObjectToSerialize()
{
Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
- Guid userId = Guid.Parse(QueryString["userid"]);
- User user = Kernel.Instance.Users.First(u => u.Id == userId);
+ User user = ApiService.GetUserById(QueryString["userid"], true);
return GetAllStudios(parent, user);
}
diff --git a/MediaBrowser.Api/HttpHandlers/UserAuthenticationHandler.cs b/MediaBrowser.Api/HttpHandlers/UserAuthenticationHandler.cs
index 8f66805301..9f72aa4175 100644
--- a/MediaBrowser.Api/HttpHandlers/UserAuthenticationHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/UserAuthenticationHandler.cs
@@ -1,10 +1,7 @@
-using System;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
-using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
+using System.Threading.Tasks;
namespace MediaBrowser.Api.HttpHandlers
{
@@ -12,15 +9,12 @@ namespace MediaBrowser.Api.HttpHandlers
{
protected override async Task GetObjectToSerialize()
{
- Guid userId = Guid.Parse(await GetFormValue("userid").ConfigureAwait(false));
- User user = Kernel.Instance.Users.First(u => u.Id == userId);
+ string userId = await GetFormValue("userid").ConfigureAwait(false);
+ User user = ApiService.GetUserById(userId, false);
string password = await GetFormValue("password").ConfigureAwait(false);
- return new AuthenticationResult()
- {
- Success = Kernel.GetMD5(password).Equals(user.Password)
- };
+ return Kernel.Instance.AuthenticateUser(user, password);
}
}
}
diff --git a/MediaBrowser.Api/HttpHandlers/UsersHandler.cs b/MediaBrowser.Api/HttpHandlers/UsersHandler.cs
index e7617fe881..82bd1f4984 100644
--- a/MediaBrowser.Api/HttpHandlers/UsersHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/UsersHandler.cs
@@ -1,9 +1,9 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Model.DTO;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
namespace MediaBrowser.Api.HttpHandlers
{
diff --git a/MediaBrowser.Api/HttpHandlers/YearHandler.cs b/MediaBrowser.Api/HttpHandlers/YearHandler.cs
index 1b0c7f6704..44e9f5198c 100644
--- a/MediaBrowser.Api/HttpHandlers/YearHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/YearHandler.cs
@@ -1,11 +1,9 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
+using System.Collections.Generic;
+using System.Threading.Tasks;
namespace MediaBrowser.Api.HttpHandlers
{
@@ -17,8 +15,7 @@ namespace MediaBrowser.Api.HttpHandlers
protected override Task GetObjectToSerialize()
{
Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
- Guid userId = Guid.Parse(QueryString["userid"]);
- User user = Kernel.Instance.Users.First(u => u.Id == userId);
+ User user = ApiService.GetUserById(QueryString["userid"], true);
string year = QueryString["year"];
diff --git a/MediaBrowser.Api/HttpHandlers/YearsHandler.cs b/MediaBrowser.Api/HttpHandlers/YearsHandler.cs
index 9a7325f649..dffc0328c0 100644
--- a/MediaBrowser.Api/HttpHandlers/YearsHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/YearsHandler.cs
@@ -1,11 +1,10 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Model.DTO;
using MediaBrowser.Model.Entities;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
namespace MediaBrowser.Api.HttpHandlers
{
@@ -14,8 +13,7 @@ namespace MediaBrowser.Api.HttpHandlers
protected override Task GetObjectToSerialize()
{
Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
- Guid userId = Guid.Parse(QueryString["userid"]);
- User user = Kernel.Instance.Users.First(u => u.Id == userId);
+ User user = ApiService.GetUserById(QueryString["userid"], true);
return GetAllYears(parent, user);
}
diff --git a/MediaBrowser.ApiInteraction/ApiClient.cs b/MediaBrowser.ApiInteraction/ApiClient.cs
index 5de1750959..0315d9dd9a 100644
--- a/MediaBrowser.ApiInteraction/ApiClient.cs
+++ b/MediaBrowser.ApiInteraction/ApiClient.cs
@@ -1,5 +1,6 @@
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.DTO;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Weather;
using System;
using System.IO;
@@ -82,12 +83,29 @@ namespace MediaBrowser.ApiInteraction
public async Task GetRecentlyAddedItemsAsync(Guid userId)
{
string url = ApiUrl + "/itemlist?listtype=recentlyaddeditems&userId=" + userId.ToString();
- using (Stream stream = await GetSerializedStreamAsync(url).ConfigureAwait(true))
+
+ using (Stream stream = await GetSerializedStreamAsync(url).ConfigureAwait(false))
{
return DeserializeFromStream(stream);
}
- }
+ }
+ ///
+ /// Gets recently added items within a specific folder
+ ///
+ /// The user id.
+ public async Task GetRecentlyAddedItemsAsync(Guid userId, Guid folderId)
+ {
+ string url = ApiUrl + "/itemlist?listtype=recentlyaddeditems&userId=" + userId.ToString();
+
+ url += "&id=" + folderId.ToString();
+
+ using (Stream stream = await GetSerializedStreamAsync(url).ConfigureAwait(false))
+ {
+ return DeserializeFromStream(stream);
+ }
+ }
+
///
/// Gets all Years
///
diff --git a/MediaBrowser.Common/Kernel/BaseKernel.cs b/MediaBrowser.Common/Kernel/BaseKernel.cs
index 8b865201ba..1139fecb92 100644
--- a/MediaBrowser.Common/Kernel/BaseKernel.cs
+++ b/MediaBrowser.Common/Kernel/BaseKernel.cs
@@ -1,4 +1,10 @@
-using System;
+using MediaBrowser.Common.Logging;
+using MediaBrowser.Common.Net;
+using MediaBrowser.Common.Plugins;
+using MediaBrowser.Common.Serialization;
+using MediaBrowser.Model.Configuration;
+using MediaBrowser.Model.Progress;
+using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
@@ -6,12 +12,6 @@ using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
-using MediaBrowser.Common.Logging;
-using MediaBrowser.Common.Net;
-using MediaBrowser.Common.Plugins;
-using MediaBrowser.Common.Serialization;
-using MediaBrowser.Model.Configuration;
-using MediaBrowser.Model.Progress;
namespace MediaBrowser.Common.Kernel
{
diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs
index 6f9d636bb2..b45e3ab9a5 100644
--- a/MediaBrowser.Controller/Kernel.cs
+++ b/MediaBrowser.Controller/Kernel.cs
@@ -1,13 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Security.Cryptography;
-using System.Text;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Kernel;
+using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.Logging;
using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.Library;
@@ -17,6 +8,15 @@ using MediaBrowser.Controller.Weather;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Progress;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.Composition;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading.Tasks;
namespace MediaBrowser.Controller
{
@@ -181,6 +181,55 @@ namespace MediaBrowser.Controller
}
}
+ ///
+ /// Gets the default user to use when EnableUserProfiles is false
+ ///
+ public User GetDefaultUser()
+ {
+ User user = Users.FirstOrDefault();
+
+ return user;
+ }
+
+ ///
+ /// Persists a User
+ ///
+ public void SaveUser(User user)
+ {
+
+ }
+
+ ///
+ /// Authenticates a User and returns a result indicating whether or not it succeeded
+ ///
+ public AuthenticationResult AuthenticateUser(User user, string password)
+ {
+ AuthenticationResult result = new AuthenticationResult();
+
+ // When EnableUserProfiles is false, only the default User can login
+ if (!Configuration.EnableUserProfiles)
+ {
+ result.Success = user.Id == GetDefaultUser().Id;
+ }
+ else if (string.IsNullOrEmpty(user.Password))
+ {
+ result.Success = true;
+ }
+ else
+ {
+ result.Success = GetMD5(password).Equals(user.Password);
+
+ // Update LastActivityDate and LastLoginDate, then save
+ if (result.Success)
+ {
+ user.LastActivityDate = user.LastLoginDate = DateTime.UtcNow;
+ SaveUser(user);
+ }
+ }
+
+ return result;
+ }
+
public async Task ReloadItem(BaseItem item)
{
Folder folder = item as Folder;
@@ -236,7 +285,6 @@ namespace MediaBrowser.Controller
user.Name = "Default User";
user.Id = Guid.Parse("5d1cf7fce25943b790d140095457a42b");
- user.PrimaryImagePath = @"g:\Mel.jpg";
list.Add(user);
user = new User();
@@ -245,19 +293,16 @@ namespace MediaBrowser.Controller
user.LastLoginDate = DateTime.UtcNow.AddDays(-1);
user.LastActivityDate = DateTime.UtcNow.AddHours(-3);
user.Password = GetMD5("1234").ToString();
- user.PrimaryImagePath = @"g:\abobader.jpg";
list.Add(user);
user = new User();
user.Name = "Scottisafool";
user.Id = Guid.NewGuid();
- user.PrimaryImagePath = @"g:\Scott.jpg";
list.Add(user);
user = new User();
user.Name = "Redshirt";
user.Id = Guid.NewGuid();
- user.PrimaryImagePath = @"g:\redshirt.png";
list.Add(user);
/*user = new User();
diff --git a/MediaBrowser.Model/DTO/AuthenticationResult.cs b/MediaBrowser.Model/Entities/AuthenticationResult.cs
similarity index 64%
rename from MediaBrowser.Model/DTO/AuthenticationResult.cs
rename to MediaBrowser.Model/Entities/AuthenticationResult.cs
index ce492b60ef..312e71f388 100644
--- a/MediaBrowser.Model/DTO/AuthenticationResult.cs
+++ b/MediaBrowser.Model/Entities/AuthenticationResult.cs
@@ -1,7 +1,6 @@
-using System;
-using ProtoBuf;
+using ProtoBuf;
-namespace MediaBrowser.Model.DTO
+namespace MediaBrowser.Model.Entities
{
[ProtoContract]
public class AuthenticationResult
diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj
index da6fac5387..fc9c901be7 100644
--- a/MediaBrowser.Model/MediaBrowser.Model.csproj
+++ b/MediaBrowser.Model/MediaBrowser.Model.csproj
@@ -35,7 +35,7 @@
-
+