Revert "Add Test cases for app shortcut, managedapps"
[profile/tv/apps/dotnet/home.git] / LibTVRefCommonPortable / Utils / MediaContentUtils.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6 using Xamarin.Forms;
7
8 namespace LibTVRefCommonPortable.Utils
9 {
10     /// <summary>
11     /// A class provides media contents and related functions.
12     /// </summary>
13     public class MediaContentUtils
14     {
15         /// <summary>
16         /// A instance of IMediaContentAPIs port.
17         /// </summary>
18         private static IMediaContentAPIs mediaContentAPIs;
19
20         /// <summary>
21         /// A instance of MediaContentUtils
22         /// </summary>
23         private static readonly MediaContentUtils instance = new MediaContentUtils();
24
25         /// <summary>
26         /// A property of MediaContentUtils instance.
27         /// </summary>
28         public static MediaContentUtils Instance
29         {
30             get
31             {
32                 return instance;
33             }
34         }
35
36         /// <summary>
37         /// A unit testing stub for MediaContentUtils
38         /// </summary>
39         private class TestStub : IMediaContentAPIs
40         {
41             public IEnumerable<RecentlyPlayedMedia> GetRecentlyPlayedMedia(int limitation)
42             {
43                 IList<RecentlyPlayedMedia> recentlyPlayed = new List<RecentlyPlayedMedia>();
44
45                 recentlyPlayed.Add(new RecentlyPlayedMedia
46                 {
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),
52                 });
53
54                 recentlyPlayed.Add(new RecentlyPlayedMedia
55                 {
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),
60                 });
61
62                 recentlyPlayed.Add(new RecentlyPlayedMedia
63                 {
64                     MediaId = "id/recent_media3.nothumbnail",
65                     FilePath = "filepath/recent_media3.nothumbnail",
66                     DisplayName = "recent_media3.nothumbnail",
67                     PlayedAt = new DateTime(2016, 4, 25),
68                 });
69
70                 recentlyPlayed.Add(new RecentlyPlayedMedia
71                 {
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),
77                 });
78
79                 recentlyPlayed.Add(new RecentlyPlayedMedia
80                 {
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),
86                 });
87
88                 recentlyPlayed.Add(new RecentlyPlayedMedia
89                 {
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),
95                 });
96
97                 recentlyPlayed.Add(new RecentlyPlayedMedia
98                 {
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),
104                 });
105
106                 return recentlyPlayed;
107             }
108         }
109
110         /// <summary>
111         /// A Constructor
112         /// </summary>
113         private MediaContentUtils()
114         {
115             mediaContentAPIs = new TestStub();
116
117             try
118             {
119                 if (DependencyService.Get<IMediaContentAPIs>() != null)
120                 {
121                     mediaContentAPIs = DependencyService.Get<IMediaContentAPIs>();
122                 }
123             }
124             catch (InvalidOperationException e)
125             {
126                 DebuggingUtils.Err(e.Message);
127             }
128         }
129
130         /// <summary>
131         /// A method provides media playing history.
132         /// </summary>
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)
136         {
137             return mediaContentAPIs.GetRecentlyPlayedMedia(limitation);
138         }
139
140     }
141 }