Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions lib/Provider/BingWallpaperDaily.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

namespace OCA\Unsplash\Provider;

use OC\AppFramework\Http\Request;
use OCA\Unsplash\ProviderHandler\Provider;

class BingWallpaperDaily extends Provider
Expand Down Expand Up @@ -74,16 +73,18 @@ public function getRandomImageUrl($size)
public function getRandomImageUrlBySearchTerm($search, $size)
{
// Fetch the daily image JSON from Bing
$bing_daily_image_json = file_get_contents('https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US');
if ($bing_daily_image_json !== false) {
$matches = json_decode($bing_daily_image_json);
$client = $this->clientService->newClient();
$response = $client->get('https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US');
$body = $response->getBody();
if ($body !== false) {
$matches = json_decode($body);
if (isset($matches->images[0]->url)) {
// If unable to encode, return the image URL
return 'https://www.bing.com' . $matches->images[0]->url;
}
}

// Return default image if no Bing image is found
return (new NextcloudImage($this->appName, $this->logger, $this->config, $this->appData, "Nextcloud"))->getRandomImageUrl($size);
return (new NextcloudImage($this->appName, $this->logger, $this->config, $this->appData, $this->clientService, "Nextcloud"))->getRandomImageUrl($size);
}
}
}
2 changes: 1 addition & 1 deletion lib/Provider/UnsplashAPI.php
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ public function getRandomImageUrlBySearchTerm($search, $size): string
if($token === '' && $this->requiresAuth()) {
// If the token is empty, return the default image.
$this->logger->alert("Unsplash API: the provided token was blank!");
return (new NextcloudImage($this->appName, $this->logger, $this->config, $this->appData, "Nextcloud"))->getRandomImageUrl($size);
return (new NextcloudImage($this->appName, $this->logger, $this->config, $this->appData, $this->clientService, "Nextcloud"))->getRandomImageUrl($size);
}

$url = "https://api.unsplash.com/photos/random?client_id=" . $this->getToken() . "&count=1&query=" . $search;
Expand Down
12 changes: 5 additions & 7 deletions lib/Provider/WallhavenCC.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

namespace OCA\Unsplash\Provider;

use OC\AppFramework\Http\Request;
use OCA\Unsplash\ProviderHandler\Provider;

class WallhavenCC extends Provider
Expand Down Expand Up @@ -66,11 +65,10 @@ public function getRandomImageUrlBySearchTerm($search, $size)
break;
}


$curl = curl_init('https://wallhaven.cc/api/v1/search?sorting=random&ratios=16x9,16x10&resolutions=' . $resolution . '&q=' . $search);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
$json = json_decode($response, true);
$client = $this->clientService->newClient();
$response = $client->get('https://wallhaven.cc/api/v1/search?sorting=random&ratios=16x9,16x10&resolutions=' . $resolution . '&q=' . $search);
$body = $response->getBody();
$json = json_decode($body, true);

try {
$images = $json['data'][array_rand($json['data'])];
Expand All @@ -79,7 +77,7 @@ public function getRandomImageUrlBySearchTerm($search, $size)
$this->logger->alert("Your searchterms likely did not yield results for: ".$this->getName());
}

return (new NextcloudImage($this->appName, $this->logger, $this->config, $this->appData, "Nextcloud"))->getRandomImageUrl($size);
return (new NextcloudImage($this->appName, $this->logger, $this->config, $this->appData, $this->clientService, "Nextcloud"))->getRandomImageUrl($size);
}

public function getCachedImageURL(): string
Expand Down
11 changes: 5 additions & 6 deletions lib/Provider/WikimediaCommons.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

namespace OCA\Unsplash\Provider;

use OC\AppFramework\Http\Request;
use OCA\Unsplash\ProviderHandler\Provider;

class WikimediaCommons extends Provider
Expand Down Expand Up @@ -63,10 +62,10 @@ public function getRandomImageUrlBySearchTerm($search, $size)
$url .= '&iiprop=url';
$url .= '&format=json';

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
$json = json_decode($response, true);
$client = $this->clientService->newClient();
$response = $client->get($url);
$body = $response->getBody();
$json = json_decode($body, true);

try {
$images = $json['query']['pages'][array_rand($json['query']['pages'])];
Expand All @@ -75,7 +74,7 @@ public function getRandomImageUrlBySearchTerm($search, $size)
$this->logger->alert("Your searchterms likely did not yield results for: ".$this->getName());
}

return (new NextcloudImage($this->appName, $this->logger, $this->config, $this->appData, "Nextcloud"))->getRandomImageUrl($size);
return (new NextcloudImage($this->appName, $this->logger, $this->config, $this->appData, $this->clientService, "Nextcloud"))->getRandomImageUrl($size);
}

public function getCachedImageURL(): string
Expand Down
11 changes: 5 additions & 6 deletions lib/Provider/WikimediaCommonsDaily.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

namespace OCA\Unsplash\Provider;

use OC\AppFramework\Http\Request;
use OCA\Unsplash\ProviderHandler\Provider;

class WikimediaCommonsDaily extends Provider
Expand Down Expand Up @@ -57,10 +56,10 @@ public function getRandomImageUrlBySearchTerm($search, $size)
$url .= '&iiprop=url';
$url .= '&format=json';

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
$json = json_decode($response, true);
$client = $this->clientService->newClient();
$response = $client->get($url);
$body = $response->getBody();
$json = json_decode($body, true);

try {
$images = $json['query']['pages'][array_rand($json['query']['pages'])];
Expand All @@ -69,7 +68,7 @@ public function getRandomImageUrlBySearchTerm($search, $size)
$this->logger->alert("Your searchterms likely did not yield results for: ".$this->getName());
}

return (new NextcloudImage($this->appName, $this->logger, $this->config, $this->appData, "Nextcloud"))->getRandomImageUrl($size);
return (new NextcloudImage($this->appName, $this->logger, $this->config, $this->appData, $this->clientService, "Nextcloud"))->getRandomImageUrl($size);
}

public function getCachedImageURL(): string
Expand Down
3 changes: 3 additions & 0 deletions lib/ProviderHandler/Provider.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
namespace OCA\Unsplash\ProviderHandler;

use OCP\Files\IAppData;
use OCP\Http\Client\IClientService;
use OCP\IConfig;
use Psr\Log\LoggerInterface;
use OCP\Files\NotFoundException;
Expand Down Expand Up @@ -54,13 +55,15 @@ abstract class Provider
* @param $appName
* @param LoggerInterface $logger
* @param IConfig $config
* @param IClientService $clientService
* @param $pName
*/
public function __construct(
protected string $appName,
protected LoggerInterface $logger,
protected IConfig $config,
protected IAppData $appData,
protected IClientService $clientService,
protected string $providerName,
)
{
Expand Down
30 changes: 19 additions & 11 deletions lib/ProviderHandler/ProviderDefinitions.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
use OCA\Unsplash\Provider\WikimediaCommons;
use OCA\Unsplash\Provider\WikimediaCommonsDaily;
use OCP\Files\IAppData;
use OCP\Http\Client\IClientService;
use OCP\IConfig;
use Psr\Log\LoggerInterface;

Expand All @@ -45,15 +46,20 @@ class ProviderDefinitions
* @var string
*/
protected $appName;

/** @var LoggerInterface */
private $logger;

/**
* @var definitions This variable contains all available provider
*/
protected $definitions = [];

/** @var IAppData */
private $appData;

/** @var LoggerInterface */
private $logger;
/** @var IClientService */
private $clientService;

/**
* ProviderDefinitions constructor.
Expand All @@ -62,23 +68,25 @@ class ProviderDefinitions
* @param LoggerInterface $logger
* @param IConfig $settings
* @param IAppData $appData
* @param IClientService $clientService
*/
function __construct($appName, LoggerInterface $logger, IConfig $config, IAppData $appData)
function __construct($appName, LoggerInterface $logger, IConfig $config, IAppData $appData, IClientService $clientService)
{

$this->appName = $appName;
$this->config = $config;
$this->appData = $appData;
$this->logger = $logger;
$this->clientService = $clientService;

$tmp = [];
//add all provider to this array. The logic takes care of the rest.
$tmp[] = new UnsplashAPI($this->appName, $logger, $this->config, $appData, "UnsplashAPI");
$tmp[] = new NextcloudImage($this->appName, $logger, $this->config, $appData, "Nextcloud Image");
$tmp[] = new WikimediaCommons($this->appName, $logger, $this->config, $appData, "WikimediaCommons");
$tmp[] = new WikimediaCommonsDaily($this->appName, $logger, $this->config, $appData, "WikimediaCommons - Picture of the Day");
$tmp[] = new WallhavenCC($this->appName, $logger, $this->config, $appData, "WallhavenCC");
$tmp[] = new BingWallpaperDaily($this->appName, $logger, $this->config, $appData, "Bing Wallpaper - Picture of the Day");
$tmp[] = new UnsplashAPI($this->appName, $logger, $this->config, $appData, $clientService, "UnsplashAPI");
$tmp[] = new NextcloudImage($this->appName, $logger, $this->config, $appData, $clientService, "Nextcloud Image");
$tmp[] = new WikimediaCommons($this->appName, $logger, $this->config, $appData, $clientService, "WikimediaCommons");
$tmp[] = new WikimediaCommonsDaily($this->appName, $logger, $this->config, $appData, $clientService, "WikimediaCommons - Picture of the Day");
$tmp[] = new WallhavenCC($this->appName, $logger, $this->config, $appData, $clientService, "WallhavenCC");
$tmp[] = new BingWallpaperDaily($this->appName, $logger, $this->config, $appData, $clientService, "Bing Wallpaper - Picture of the Day");

foreach ($tmp as &$value) {
$this->definitions[$value->getName()] = $value;
Expand All @@ -96,11 +104,11 @@ function getProviderByName($name): Provider

if (!array_key_exists($name, $this->definitions)) {
$this->logger->warning("Selected provider '{$name}' could not be found. Using Default. Please select an existing provider in the settings!");
return new WikimediaCommonsDaily($this->appName, $this->logger, $this->config, $this->appData, "WikimediaCommons - Picture of the Day");
return new WikimediaCommonsDaily($this->appName, $this->logger, $this->config, $this->appData, $this->clientService, "WikimediaCommons - Picture of the Day");
}
$provider = $this->definitions[$name];
if ($provider == null) {
return new WikimediaCommonsDaily($this->appName, $this->logger, $this->config, $this->appData, "WikimediaCommons - Picture of the Day");
return new WikimediaCommonsDaily($this->appName, $this->logger, $this->config, $this->appData, $this->clientService, "WikimediaCommons - Picture of the Day");
}
return $this->definitions[$name];
}
Expand Down
6 changes: 4 additions & 2 deletions lib/Services/SettingsService.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use OCA\Unsplash\ProviderHandler\Provider;
use OCA\Unsplash\ProviderHandler\ProviderDefinitions;
use OCP\Files\IAppData;
use OCP\Http\Client\IClientService;
use OCP\IConfig;
use Psr\Log\LoggerInterface;

Expand Down Expand Up @@ -70,10 +71,11 @@ class SettingsService
* @param $appName
* @param IConfig $config
* @param IAppData $config
* @param IClientService $clientService
* @param Defaults $defaults
* @param LoggerInterface $logger
*/
public function __construct($userId, $appName, IConfig $config, IAppData $appData, \OC_Defaults $defaults, LoggerInterface $logger)
public function __construct($userId, $appName, IConfig $config, IAppData $appData, IClientService $clientService, \OC_Defaults $defaults, LoggerInterface $logger)
{
$this->config = $config;
$this->userId = $userId;
Expand All @@ -82,7 +84,7 @@ public function __construct($userId, $appName, IConfig $config, IAppData $appDat
}
$this->appName = $appName;

$this->providerDefinitions = new ProviderDefinitions($this->appName, $logger, $this->config, $appData);
$this->providerDefinitions = new ProviderDefinitions($this->appName, $logger, $this->config, $appData, $clientService);
$this->defaults = $defaults;
}

Expand Down