Esempio n. 1
0
        public Mock <IKodiService> GetKodiServiceMock(GetDirectoryParams parameters)
        {
            var mock = new Mock <IKodiService>();

            mock.Setup(s => s.GetDirectory(parameters, "UnitTests"))
            .Returns(() => MakeFauxRequest <GetDirectoryResponse>($"directory.{parameters.Directory}.json"));

            return(mock);
        }
Esempio n. 2
0
        public void GivenAString_WhenGettingDirectory_WithAnInvalidPath_ItShouldThrowRpcInternalServerErrorException()
        {
            var parameters = new GetDirectoryParams
            {
                Directory = "notdexter"
            };

            var mock    = GetKodiServiceMock(parameters);
            var service = mock.Object;

            Assert.That(() => service.GetDirectory(parameters, "UnitTests"), Throws.Exception.TypeOf <RpcInternalServerErrorException>());
        }
Esempio n. 3
0
        public void WhenGettingDirectory_WithValidDirectory_ItShouldReturnADirectoryResult()
        {
            var service    = new KodiService();
            var parameters = new GetDirectoryParams
            {
                Directory  = "/media/gotham/series/Dark Matter/Season 01/",
                Properties = FileProperties.All()
            };
            var directory = service.GetDirectory(parameters);

            Assert.IsNotNull(directory);
            Assert.IsInstanceOf <JsonRpcResponse <GetDirectoryResponse> >(directory);
            Assert.AreEqual(directory.Result.Files.Count, 13);
            Assert.AreEqual(directory.Result.Files.FirstOrDefault(f => f.FilePath.Contains("S01E01"))?.FilePath, "/media/gotham/series/Dark Matter/Season 01/Dark Matter - S01E01 - Episode One.mkv");
        }
Esempio n. 4
0
        public void GivenAString_WhenGettingDirectory_WithAValidPath_ItshouldReturnAListOfFiles()
        {
            var parameters = new GetDirectoryParams
            {
                Directory  = "darkmatter",
                Properties = FileProperties.All()
            };

            var mock     = GetKodiServiceMock(parameters);
            var service  = mock.Object;
            var actual   = service.GetDirectory(parameters, "UnitTests");
            var expected = Directories.GetDirectory();

            Assert.IsInstanceOf <JsonRpcResponse <GetDirectoryResponse> >(actual);
            Assert.That(actual.Result.Files.Count, Is.EqualTo(expected.Files.Count));
            AssertThatPropertyValuesAreEquals(actual.Result, expected);
        }
Esempio n. 5
0
        private static void Main()
        {
            try
            {
                Console.WriteLine("Connecting to Kodi JSON-RPC API/{0}.", Service.ApiVersion);
                Console.WriteLine("\tHost...........{0}:{1}", Service.Host, Service.Port);
                Console.WriteLine("\tUsername.......{0}", Service.Username);
                Console.WriteLine("\tPassword.......{0}", Service.Password);
                Console.WriteLine();
                Console.Write("Pinging Kodi....");

                var ping = Service.Ping();
                Console.WriteLine(ping.Result);

                var parameters = new GetTvShowDetailsParams
                {
                    TvShowId = 1,
                    //Properties = new[] {TvShowProperties.Title, TvShowProperties.Premiered, TvShowProperties.Year}
                    Properties = TvShowProperties.All()
                };

                Console.WriteLine();
                Console.WriteLine("Running VideoLibrary.GetTvShowDetails");

                var details = Service.GetTvShowDetails(parameters);

                Console.WriteLine("ID.................{0}", details.Id);
                Console.WriteLine("JsonRPC............{0}", details.JsonRpc);
                Console.WriteLine("ShowTitle..........{0}", details.Result.TvShowDetails.Title);
                Console.WriteLine("Studio.............{0}", details.Result.TvShowDetails.Premiered);
                Console.WriteLine("Premiered..........{0}", details.Result.TvShowDetails.Year);
                Console.WriteLine("Fanart.............{0}", details.Result.TvShowDetails.Fanart);
                Console.WriteLine("File...............{0}", details.Result.TvShowDetails.File);
                Console.WriteLine();

                Console.WriteLine();
                Console.Write("Scanning for new content...");
                var scan = Service.Scan(new ScanParams());
                Console.WriteLine(scan.Result);

                Console.WriteLine();
                Console.Write("Cleaning...");
                var clean = Service.Clean(new CleanParams());
                Console.WriteLine(clean.Result);

                Console.WriteLine();
                Console.WriteLine("Getting File details");

                var fileDetailParams = new GetFileDetailsParams
                {
                    File       = "/media/gotham/series/Dark Matter/Season 02/Dark Matter - S02E03 - I’ve Seen the Other Side of You.mkv",
                    Properties = FileProperties.All()
                };

                Console.WriteLine();
                var fileDetails = Service.GetFileDetails(fileDetailParams);

                Console.WriteLine("File..............{0}", fileDetails.Result.FileDetails.FilePath);
                Console.WriteLine("FileName..........{0}", fileDetails.Result.FileDetails.Label);
                Console.WriteLine("MimeType..........{0}", fileDetails.Result.FileDetails.MimeType);
                Console.WriteLine("Size..............{0}", fileDetails.Result.FileDetails.Size);

                Console.WriteLine();
                Console.WriteLine("Preparing file for download");
                var prepareDownloadParam = new PrepareDownloadParams
                {
                    Path = details.Result.TvShowDetails.Fanart
                           //Path = fileDetails.Result.FileDetails.FilePath
                };
                var prepareDownload = Service.PrepareDownload(prepareDownloadParam);
                Console.WriteLine("Details...........{0}", prepareDownload.Result.Details.Path);
                Console.WriteLine("Protocol..........{0}", prepareDownload.Result.Protocol);
                Console.WriteLine("Mode..............{0}", prepareDownload.Result.Mode);

                Console.WriteLine();
                Console.WriteLine("Getting directory (directory)");
                var getDirectoryParams = new GetDirectoryParams
                {
                    Directory  = "/media/gotham/series/Dark Matter",
                    Properties = FileProperties.All()
                };
                var getDirectory = Service.GetDirectory(getDirectoryParams);
                foreach (var file in getDirectory.Result.Files)
                {
                    Console.WriteLine("....{0}", file.Label);
                    Console.WriteLine("........Path..............{0}", file.FilePath);
                    Console.WriteLine("........Type..............{0}", file.FileType);
                }

                Console.WriteLine();
                Console.WriteLine("Getting directory (files)");
                getDirectoryParams.Directory += "/Season 01/";
                getDirectoryParams.Properties = FileProperties.All();
                getDirectory = Service.GetDirectory(getDirectoryParams);

                var x = FileProperties.All().Aggregate("", (current, y) => current + (@",""" + y + @""""));

                foreach (var file in getDirectory.Result.Files)
                {
                    Console.WriteLine("....{0}", file.Label);
                    Console.WriteLine("........Path..............{0}", file.FilePath);
                    Console.WriteLine("........Type..............{0}", file.FileType);
                }

                PressAnyKey();
            }
            catch (Exception e)
            {
                Console.WriteLine("An exception has occured: {0}", e.Message);
                PressAnyKey();
            }
        }
Esempio n. 6
0
 public JsonRpcResponse <GetDirectoryResponse> GetDirectory(GetDirectoryParams parameters, string requestId = "GetDirectory")
 {
     return(_rpcConnector.MakeRequest <GetDirectoryResponse>(KodiMethods.GetDirectory, parameters, requestId));
 }