protected override void ProcessRecord()
        {
            WriteVerbose("Getting wallpaper...");

            var wallheavenClient = new WallhavenClient(new WebClientFactory());
            List <WallpaperInfo> wallpaperInfos = new List <WallpaperInfo>();

            if (Latest.IsPresent)
            {
                wallpaperInfos = wallheavenClient.GetLatest(PageNumber);
            }
            else if (Random.IsPresent)
            {
                wallpaperInfos = wallheavenClient.GetRandom(PageNumber);
            }
            else if (Search.IsPresent)
            {
                var searchParams = new SearchParameter
                {
                    Page        = PageNumber,
                    Categories  = GetCategory(),
                    Sorting     = SearchSorting,
                    Order       = SearchOrder,
                    Query       = SearchQuery,
                    Purity      = GetPurity(),
                    Ratios      = Ratios,
                    Resolutions = Resolutions
                };

                wallpaperInfos = wallheavenClient.Search(searchParams);
            }

            WriteVerbose($"Got {wallpaperInfos.Count} wallpaper");
            wallpaperInfos.ForEach(WriteObject);
        }
예제 #2
0
        public void GetLatest_NoPageNumber_CallsUrlWithoutPageNumber()
        {
            var webClientMock    = CreateWebClientMock(new Uri("https://alpha.wallhaven.cc/latest"));
            var webClientFactory = CreateWebClientFactory(webClientMock.Object);
            var client           = new WallhavenClient(webClientFactory);

            client.GetLatest();

            webClientMock.VerifyAll();
        }
예제 #3
0
        public void GetRandom_NoPageNumber_CallsUrlWithPageNumber(int pageNumber)
        {
            var webClientMock    = CreateWebClientMock(new Uri($"https://alpha.wallhaven.cc/random?page={pageNumber}"));
            var webClientFactory = CreateWebClientFactory(webClientMock.Object);
            var client           = new WallhavenClient(webClientFactory);

            client.GetRandom(pageNumber);

            webClientMock.VerifyAll();
        }
예제 #4
0
        public void GetRandom_NoPageNumber_ReturnsTheImagesOfFirstPage()
        {
            var webClientMock    = CreateWebClientMock(includeDetailPageData: true);
            var webClientFactory = CreateWebClientFactory(webClientMock.Object);
            var client           = new WallhavenClient(webClientFactory);

            List <WallpaperInfo> latestWallpapers = client.GetRandom();

            Assert.That(latestWallpapers, Is.Not.Empty);
            Assert.That(latestWallpapers.All(IsValidWallpaperInfo), Is.True);
        }
예제 #5
0
        public void Search_SearchParamsWithIllegalPageNumber_CallsSearchUrlWithPageNumberOne(int?pageNumber)
        {
            var searchParam = new SearchParameter
            {
                Page = pageNumber
            };

            var webClientMock    = CreateWebClientMock(new Uri("https://alpha.wallhaven.cc/search?page=1"));
            var webClientFactory = CreateWebClientFactory(webClientMock.Object);
            var wallhavenClient  = new WallhavenClient(webClientFactory);

            wallhavenClient.Search(searchParam);

            webClientMock.VerifyAll();
        }
        public void test_interval()
        {
            var wh   = new WallhavenClient();
            var item = wh.search("Sasuke -Yellow", "random", "1M", true).Result?.data?.FirstOrDefault();

            if (item != null)
            {
                var data = wh.downloadWallpaper(item).Result;
                if (data != null)
                {
                    var endPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Path.GetFileName(item.path));
                    File.WriteAllBytes(endPath, data);
                    App.DisplayPicture(endPath);
                }
            }
        }
예제 #7
0
        public void Search_SearchParams_CallsSearchUrlWithQueryParameter()
        {
            var searchParam = new SearchParameter
            {
                Page    = 2,
                Sorting = Sorting.Views
            };
            var uri              = new Uri($"https://alpha.wallhaven.cc/search?page={searchParam.Page}&sorting={searchParam.Sorting}");
            var webClientMock    = CreateWebClientMock(uri);
            var webClientFactory = CreateWebClientFactory(webClientMock.Object);
            var wallhavenClient  = new WallhavenClient(webClientFactory);

            wallhavenClient.Search(searchParam);

            webClientMock.VerifyAll();
        }
예제 #8
0
        public void Search_SearchParams_ReturnsWallpaperInfos()
        {
            var webClientMock    = CreateWebClientMock(includeDetailPageData: true);
            var webClientFactory = CreateWebClientFactory(webClientMock.Object);
            var wallhavenClient  = new WallhavenClient(webClientFactory);
            var searchParam      = new SearchParameter
            {
                Sorting    = Sorting.Views,
                Order      = Order.Descending,
                Categories = new Category(CategoryValue.General)
            };

            List <WallpaperInfo> wallpaperInfos = wallhavenClient.Search(searchParam);

            Assert.That(wallpaperInfos, Is.Not.Empty);
            Assert.That(wallpaperInfos.All(IsValidWallpaperInfo), Is.True);
        }
예제 #9
0
        public void startChangeProcess()
        {
            Config = new AppConfig();
            Config.Load().Wait();
            var wh            = new WallhavenClient();
            var bgInterval    = App.Config.ChangeInterval;
            var changeOnStart = App.Config.ChangeOnStart;
            var bgChanger     = new Timer(bgInterval);
            var wpPath        = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wallpapers");

            bgChanger.Elapsed += (s, e) =>
            {
                try
                {
                    bgChanger.Stop();
                    var item = wh.search(Config.SearchQuery, Config.selectedSort, Config.selectedTopRange, true).Result?.data?.FirstOrDefault();
                    if (item != null)
                    {
                        var data = wh.downloadWallpaper(item).Result;
                        if (data != null)
                        {
                            if (!Directory.Exists(wpPath))
                            {
                                Directory.CreateDirectory(wpPath);
                            }
                            var endPath = Path.Combine(wpPath, Path.GetFileName(item.path));
                            File.WriteAllBytes(endPath, data);
                            if (File.Exists(endPath))
                            {
                                DisplayPicture(endPath);
                            }
                            bgChanger.Start();
                        }
                    }
                }
                catch (Exception ex)
                {
                    File.WriteAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "error.log"), ex.ToString());
                    bgChanger.Start();
                }
            };
            bgChanger.Start();
            Task.Delay(-1).Wait();
        }
예제 #10
0
 public BaseService(WallhavenClient client)
 {
     this._client = client;
 }
예제 #11
0
 public ActivityService(WallhavenClient client) : base(client)
 {
 }
예제 #12
0
 public AppService(WallhavenClient client) : base(client)
 {
 }
예제 #13
0
 public ConfigService(WallhavenClient client) : base(client)
 {
 }
예제 #14
0
 public CommandHandler(WallhavenClient client, CommandService commands)
 {
     _commands = commands;
     _client   = client;
 }
예제 #15
0
 public WallhavenCommandContext(WallhavenClient client, SocketUserMessage msg) : base(client, msg)
 {
     this.Client = client;
 }