2 using System.Collections.Generic;
5 using System.Threading.Tasks;
8 namespace LibTVRefCommonPortable.Utils
11 /// A class provides media contents and related functions.
13 public class MediaContentUtils
16 /// A instance of IMediaContentAPIs port.
18 private static IMediaContentAPIs mediaContentAPIs;
21 /// A instance of MediaContentUtils
23 private static readonly MediaContentUtils instance = new MediaContentUtils();
26 /// A property of MediaContentUtils instance.
28 public static MediaContentUtils Instance
37 /// A unit testing stub for MediaContentUtils
39 private class TestStub : IMediaContentAPIs
41 public IEnumerable<RecentlyPlayedMedia> GetRecentlyPlayedMedia(int limitation)
43 IList<RecentlyPlayedMedia> recentlyPlayed = new List<RecentlyPlayedMedia>();
45 recentlyPlayed.Add(new RecentlyPlayedMedia
47 MediaId = "id/recent_media1",
48 ThumbnailPath = "thumbnail/recent_media1",
49 FilePath = "filepath/recent_media1",
50 DisplayName = "recent_media1",
51 PlayedAt = new DateTime(2017, 05, 22),
54 recentlyPlayed.Add(new RecentlyPlayedMedia
56 MediaId = "invalid.recent_media2.nofilepath",
57 ThumbnailPath = "invalid.recent_media2.nofilepath",
58 DisplayName = "invalid.recent_media2.nofilepath",
59 PlayedAt = new DateTime(2017, 2, 26),
62 recentlyPlayed.Add(new RecentlyPlayedMedia
64 MediaId = "id/recent_media3.nothumbnail",
65 FilePath = "filepath/recent_media3.nothumbnail",
66 DisplayName = "recent_media3.nothumbnail",
67 PlayedAt = new DateTime(2016, 4, 25),
70 recentlyPlayed.Add(new RecentlyPlayedMedia
72 MediaId = "id/recent_media4",
73 ThumbnailPath = "thumbnail/recent_media4",
74 FilePath = "filepath/recent_media4",
75 DisplayName = "recent_media4",
76 PlayedAt = new DateTime(2015, 12, 7),
79 recentlyPlayed.Add(new RecentlyPlayedMedia
81 MediaId = "id/recent_media5",
82 ThumbnailPath = "thumbnail/recent_media5",
83 FilePath = "filepath/recent_media5",
84 DisplayName = "recent_media5",
85 PlayedAt = new DateTime(2015, 10, 1),
88 recentlyPlayed.Add(new RecentlyPlayedMedia
90 MediaId = "id/recent_media6",
91 ThumbnailPath = "thumbnail/recent_media6",
92 FilePath = "filepath/recent_media6",
93 DisplayName = "recent_media6",
94 PlayedAt = new DateTime(2015, 3, 3),
97 recentlyPlayed.Add(new RecentlyPlayedMedia
99 MediaId = "id/recent_media7",
100 ThumbnailPath = "thumbnail/recent_media7",
101 FilePath = "filepath/recent_media7",
102 DisplayName = "recent_media8",
103 PlayedAt = new DateTime(2014, 11, 17),
106 return recentlyPlayed;
113 private MediaContentUtils()
115 mediaContentAPIs = new TestStub();
119 if (DependencyService.Get<IMediaContentAPIs>() != null)
121 mediaContentAPIs = DependencyService.Get<IMediaContentAPIs>();
124 catch (InvalidOperationException e)
126 DebuggingUtils.Err(e.Message);
131 /// A method provides media playing history.
133 /// <param name="limitation">A number of getting media playing history</param>
134 /// <returns>A list of played medias.</returns>
135 public IEnumerable<RecentlyPlayedMedia> GetRecentlyPlayedMedia(int limitation)
137 return mediaContentAPIs.GetRecentlyPlayedMedia(limitation);