Skip to content
Closed
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
4 changes: 2 additions & 2 deletions lib/Provider/BingWallpaperDaily.php
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,6 @@ public function getRandomImageUrlBySearchTerm($search, $size)
}

// 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->appManager, "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->appManager, "Nextcloud"))->getRandomImageUrl($size);
}

$url = "https://api.unsplash.com/photos/random?client_id=" . $this->getToken() . "&count=1&query=" . $search;
Expand Down
2 changes: 1 addition & 1 deletion lib/Provider/WallhavenCC.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,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->appManager, "Nextcloud"))->getRandomImageUrl($size);
}

public function getCachedImageURL(): string
Expand Down
3 changes: 2 additions & 1 deletion lib/Provider/WikimediaCommons.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ public function getRandomImageUrlBySearchTerm($search, $size)
$url .= '&format=json';

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_USERAGENT, $this->getUserAgent());
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
$json = json_decode($response, true);
Expand All @@ -75,7 +76,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->appManager, "Nextcloud"))->getRandomImageUrl($size);
}

public function getCachedImageURL(): string
Expand Down
3 changes: 2 additions & 1 deletion lib/Provider/WikimediaCommonsDaily.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ public function getRandomImageUrlBySearchTerm($search, $size)
$url .= '&format=json';

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_USERAGENT, $this->getUserAgent());
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
$json = json_decode($response, true);
Expand All @@ -69,7 +70,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->appManager, "Nextcloud"))->getRandomImageUrl($size);
}

public function getCachedImageURL(): string
Expand Down
26 changes: 26 additions & 0 deletions lib/ProviderHandler/Provider.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

namespace OCA\Unsplash\ProviderHandler;

use OCP\App\IAppManager;
use OCP\Files\IAppData;
use OCP\IConfig;
use Psr\Log\LoggerInterface;
Expand Down Expand Up @@ -61,6 +62,7 @@ public function __construct(
protected LoggerInterface $logger,
protected IConfig $config,
protected IAppData $appData,
protected IAppManager $appManager,
protected string $providerName,
)
{
Expand Down Expand Up @@ -245,4 +247,28 @@ protected function getImageFolder()
return $rootFolder;
}

/**
*
* This returns the user agent string ('unsplash/<version> (<website>; <mail>)').
* Some image providers require a non-empty user agent, e.g. WikiMedia
*
* @return string
*/
protected function getUserAgent()
{
$info = $this->appManager->getAppInfo($this->appName);
$name = $this->appName;
$version = $this->appManager->getAppVersion($name);
$website = $info['website'];
$mail = "";

foreach ($info['author'] as $author) {
if(!isset($author['@attributes']['mail'])) {
continue;
}
$mail = "; ".$author['@attributes']['mail'];
}

return $name."/".$version." (".$website.$mail.")";
}
}
20 changes: 11 additions & 9 deletions lib/ProviderHandler/ProviderDefinitions.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
use OCA\Unsplash\Provider\WallhavenCC;
use OCA\Unsplash\Provider\WikimediaCommons;
use OCA\Unsplash\Provider\WikimediaCommonsDaily;
use OCP\App\IAppManager;
use OCP\Files\IAppData;
use OCP\IConfig;
use Psr\Log\LoggerInterface;
Expand Down Expand Up @@ -63,22 +64,23 @@ class ProviderDefinitions
* @param IConfig $settings
* @param IAppData $appData
*/
function __construct($appName, LoggerInterface $logger, IConfig $config, IAppData $appData)
function __construct($appName, LoggerInterface $logger, IConfig $config, IAppData $appData, IAppManager $appManager)
{

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

$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, $appManager, "UnsplashAPI");
$tmp[] = new NextcloudImage($this->appName, $logger, $this->config, $appData, $appManager, "Nextcloud Image");
$tmp[] = new WikimediaCommons($this->appName, $logger, $this->config, $appData, $appManager, "WikimediaCommons");
$tmp[] = new WikimediaCommonsDaily($this->appName, $logger, $this->config, $appData, $appManager, "WikimediaCommons - Picture of the Day");
$tmp[] = new WallhavenCC($this->appName, $logger, $this->config, $appData, $appManager, "WallhavenCC");
$tmp[] = new BingWallpaperDaily($this->appName, $logger, $this->config, $appData, $appManager, "Bing Wallpaper - Picture of the Day");

foreach ($tmp as &$value) {
$this->definitions[$value->getName()] = $value;
Expand All @@ -96,11 +98,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->appManager, "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->appManager, "WikimediaCommons - Picture of the Day");
}
return $this->definitions[$name];
}
Expand Down
10 changes: 8 additions & 2 deletions lib/Services/SettingsService.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use OCA\Unsplash\ProviderHandler\CachedProvider;
use OCA\Unsplash\ProviderHandler\Provider;
use OCA\Unsplash\ProviderHandler\ProviderDefinitions;
use OCP\App\IAppManager;
use OCP\Files\IAppData;
use OCP\IConfig;
use Psr\Log\LoggerInterface;
Expand Down Expand Up @@ -63,6 +64,11 @@ class SettingsService
*/
private $defaults;

/**
* @var IAppManager
*/
protected $appManager;

/**
* FaviconService constructor.
*
Expand All @@ -73,7 +79,7 @@ class SettingsService
* @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, \OC_Defaults $defaults, LoggerInterface $logger, IAppManager $appManager)
{
$this->config = $config;
$this->userId = $userId;
Expand All @@ -82,7 +88,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, $appManager);
$this->defaults = $defaults;
}

Expand Down