Completed
Pull Request — master (#9024)
by Morris
31:30 queued 16:37
created
lib/private/App/CompareVersion.php 1 patch
Indentation   +56 added lines, -56 removed lines patch added patch discarded remove patch
@@ -28,70 +28,70 @@
 block discarded – undo
28 28
 
29 29
 class CompareVersion {
30 30
 
31
-	const REGEX_MAJOR = '/^\d+$/';
32
-	const REGEX_MAJOR_MINOR = '/^\d+.\d+$/';
33
-	const REGEX_MAJOR_MINOR_PATCH = '/^\d+.\d+.\d+$/';
34
-	const REGEX_SERVER = '/^\d+.\d+.\d+(.\d+)?$/';
31
+    const REGEX_MAJOR = '/^\d+$/';
32
+    const REGEX_MAJOR_MINOR = '/^\d+.\d+$/';
33
+    const REGEX_MAJOR_MINOR_PATCH = '/^\d+.\d+.\d+$/';
34
+    const REGEX_SERVER = '/^\d+.\d+.\d+(.\d+)?$/';
35 35
 
36
-	/**
37
-	 * Checks if the given server version fulfills the given (app) version requirements.
38
-	 *
39
-	 * Version requirements can be 'major.minor.patch', 'major.minor' or just 'major',
40
-	 * so '13.0.1', '13.0' and '13' are valid.
41
-	 *
42
-	 * @param string $actual version as major.minor.patch notation
43
-	 * @param string $required version where major is requried and minor and patch are optional
44
-	 * @param string $comparator passed to `version_compare`
45
-	 * @return bool whether the requirement is fulfilled
46
-	 * @throws InvalidArgumentException if versions specified in an invalid format
47
-	 */
48
-	public function isCompatible(string $actual, string $required,
49
-		string $comparator = '>='): bool {
36
+    /**
37
+     * Checks if the given server version fulfills the given (app) version requirements.
38
+     *
39
+     * Version requirements can be 'major.minor.patch', 'major.minor' or just 'major',
40
+     * so '13.0.1', '13.0' and '13' are valid.
41
+     *
42
+     * @param string $actual version as major.minor.patch notation
43
+     * @param string $required version where major is requried and minor and patch are optional
44
+     * @param string $comparator passed to `version_compare`
45
+     * @return bool whether the requirement is fulfilled
46
+     * @throws InvalidArgumentException if versions specified in an invalid format
47
+     */
48
+    public function isCompatible(string $actual, string $required,
49
+        string $comparator = '>='): bool {
50 50
 
51
-		if (!preg_match(self::REGEX_SERVER, $actual)) {
52
-			throw new InvalidArgumentException('server version is invalid');
53
-		}
51
+        if (!preg_match(self::REGEX_SERVER, $actual)) {
52
+            throw new InvalidArgumentException('server version is invalid');
53
+        }
54 54
 
55
-		if (preg_match(self::REGEX_MAJOR, $required) === 1) {
56
-			return $this->compareMajor($actual, $required, $comparator);
57
-		} else if (preg_match(self::REGEX_MAJOR_MINOR, $required) === 1) {
58
-			return $this->compareMajorMinor($actual, $required, $comparator);
59
-		} else if (preg_match(self::REGEX_MAJOR_MINOR_PATCH, $required) === 1) {
60
-			return $this->compareMajorMinorPatch($actual, $required, $comparator);
61
-		} else {
62
-			throw new InvalidArgumentException('required version is invalid');
63
-		}
64
-	}
55
+        if (preg_match(self::REGEX_MAJOR, $required) === 1) {
56
+            return $this->compareMajor($actual, $required, $comparator);
57
+        } else if (preg_match(self::REGEX_MAJOR_MINOR, $required) === 1) {
58
+            return $this->compareMajorMinor($actual, $required, $comparator);
59
+        } else if (preg_match(self::REGEX_MAJOR_MINOR_PATCH, $required) === 1) {
60
+            return $this->compareMajorMinorPatch($actual, $required, $comparator);
61
+        } else {
62
+            throw new InvalidArgumentException('required version is invalid');
63
+        }
64
+    }
65 65
 
66
-	private function compareMajor(string $actual, string $required,
67
-		string $comparator) {
68
-		$actualMajor = explode('.', $actual)[0];
69
-		$requiredMajor = explode('.', $required)[0];
66
+    private function compareMajor(string $actual, string $required,
67
+        string $comparator) {
68
+        $actualMajor = explode('.', $actual)[0];
69
+        $requiredMajor = explode('.', $required)[0];
70 70
 
71
-		return version_compare($actualMajor, $requiredMajor, $comparator);
72
-	}
71
+        return version_compare($actualMajor, $requiredMajor, $comparator);
72
+    }
73 73
 
74
-	private function compareMajorMinor(string $actual, string $required,
75
-		string $comparator) {
76
-		$actualMajor = explode('.', $actual)[0];
77
-		$actualMinor = explode('.', $actual)[1];
78
-		$requiredMajor = explode('.', $required)[0];
79
-		$requiredMinor = explode('.', $required)[1];
74
+    private function compareMajorMinor(string $actual, string $required,
75
+        string $comparator) {
76
+        $actualMajor = explode('.', $actual)[0];
77
+        $actualMinor = explode('.', $actual)[1];
78
+        $requiredMajor = explode('.', $required)[0];
79
+        $requiredMinor = explode('.', $required)[1];
80 80
 
81
-		return version_compare("$actualMajor.$actualMinor",
82
-			"$requiredMajor.$requiredMinor", $comparator);
83
-	}
81
+        return version_compare("$actualMajor.$actualMinor",
82
+            "$requiredMajor.$requiredMinor", $comparator);
83
+    }
84 84
 
85
-	private function compareMajorMinorPatch($actual, $required, $comparator) {
86
-		$actualMajor = explode('.', $actual)[0];
87
-		$actualMinor = explode('.', $actual)[1];
88
-		$actualPatch = explode('.', $actual)[2];
89
-		$requiredMajor = explode('.', $required)[0];
90
-		$requiredMinor = explode('.', $required)[1];
91
-		$requiredPatch = explode('.', $required)[2];
85
+    private function compareMajorMinorPatch($actual, $required, $comparator) {
86
+        $actualMajor = explode('.', $actual)[0];
87
+        $actualMinor = explode('.', $actual)[1];
88
+        $actualPatch = explode('.', $actual)[2];
89
+        $requiredMajor = explode('.', $required)[0];
90
+        $requiredMinor = explode('.', $required)[1];
91
+        $requiredPatch = explode('.', $required)[2];
92 92
 
93
-		return version_compare("$actualMajor.$actualMinor.$actualPatch",
94
-			"$requiredMajor.$requiredMinor.$requiredPatch", $comparator);
95
-	}
93
+        return version_compare("$actualMajor.$actualMinor.$actualPatch",
94
+            "$requiredMajor.$requiredMinor.$requiredPatch", $comparator);
95
+    }
96 96
 
97 97
 }
Please login to merge, or discard this patch.
lib/private/App/AppStore/Fetcher/AppFetcher.php 2 patches
Indentation   +106 added lines, -106 removed lines patch added patch discarded remove patch
@@ -37,119 +37,119 @@
 block discarded – undo
37 37
 
38 38
 class AppFetcher extends Fetcher {
39 39
 
40
-	/** @var CompareVersion */
41
-	private $compareVersion;
40
+    /** @var CompareVersion */
41
+    private $compareVersion;
42 42
 
43
-	/**
44
-	 * @param Factory $appDataFactory
45
-	 * @param IClientService $clientService
46
-	 * @param ITimeFactory $timeFactory
47
-	 * @param IConfig $config
48
-	 * @param CompareVersion $compareVersion
49
-	 * @param ILogger $logger
50
-	 */
51
-	public function __construct(Factory $appDataFactory,
52
-								IClientService $clientService,
53
-								ITimeFactory $timeFactory,
54
-								IConfig $config,
55
-								CompareVersion $compareVersion,
56
-								ILogger $logger) {
57
-		parent::__construct(
58
-			$appDataFactory,
59
-			$clientService,
60
-			$timeFactory,
61
-			$config,
62
-			$logger
63
-		);
43
+    /**
44
+     * @param Factory $appDataFactory
45
+     * @param IClientService $clientService
46
+     * @param ITimeFactory $timeFactory
47
+     * @param IConfig $config
48
+     * @param CompareVersion $compareVersion
49
+     * @param ILogger $logger
50
+     */
51
+    public function __construct(Factory $appDataFactory,
52
+                                IClientService $clientService,
53
+                                ITimeFactory $timeFactory,
54
+                                IConfig $config,
55
+                                CompareVersion $compareVersion,
56
+                                ILogger $logger) {
57
+        parent::__construct(
58
+            $appDataFactory,
59
+            $clientService,
60
+            $timeFactory,
61
+            $config,
62
+            $logger
63
+        );
64 64
 
65
-		$this->fileName = 'apps.json';
66
-		$this->setEndpoint();
67
-		$this->compareVersion = $compareVersion;
68
-	}
65
+        $this->fileName = 'apps.json';
66
+        $this->setEndpoint();
67
+        $this->compareVersion = $compareVersion;
68
+    }
69 69
 
70
-	/**
71
-	 * Only returns the latest compatible app release in the releases array
72
-	 *
73
-	 * @param string $ETag
74
-	 * @param string $content
75
-	 *
76
-	 * @return array
77
-	 */
78
-	protected function fetch($ETag, $content) {
79
-		/** @var mixed[] $response */
80
-		$response = parent::fetch($ETag, $content);
70
+    /**
71
+     * Only returns the latest compatible app release in the releases array
72
+     *
73
+     * @param string $ETag
74
+     * @param string $content
75
+     *
76
+     * @return array
77
+     */
78
+    protected function fetch($ETag, $content) {
79
+        /** @var mixed[] $response */
80
+        $response = parent::fetch($ETag, $content);
81 81
 
82
-		foreach($response['data'] as $dataKey => $app) {
83
-			$releases = [];
82
+        foreach($response['data'] as $dataKey => $app) {
83
+            $releases = [];
84 84
 
85
-			// Filter all compatible releases
86
-			foreach($app['releases'] as $release) {
87
-				// Exclude all nightly and pre-releases
88
-				if($release['isNightly'] === false
89
-					&& strpos($release['version'], '-') === false) {
90
-					// Exclude all versions not compatible with the current version
91
-					try {
92
-						$versionParser = new VersionParser();
93
-						$version = $versionParser->getVersion($release['rawPlatformVersionSpec']);
94
-						$ncVersion = $this->getVersion();
95
-						$min = $version->getMinimumVersion();
96
-						$max = $version->getMaximumVersion();
97
-						$minFulfilled = $this->compareVersion->isCompatible($ncVersion, $min, '>=');
98
-						$maxFulfilled = $max !== '' &&
99
-							$this->compareVersion->isCompatible($ncVersion, $max, '<=');
100
-						if ($minFulfilled && $maxFulfilled) {
101
-							$releases[] = $release;
102
-						}
103
-					} catch (\InvalidArgumentException $e) {
104
-						$this->logger->logException($e, ['app' => 'appstoreFetcher', 'level' => Util::WARN]);
105
-					}
106
-				}
107
-			}
85
+            // Filter all compatible releases
86
+            foreach($app['releases'] as $release) {
87
+                // Exclude all nightly and pre-releases
88
+                if($release['isNightly'] === false
89
+                    && strpos($release['version'], '-') === false) {
90
+                    // Exclude all versions not compatible with the current version
91
+                    try {
92
+                        $versionParser = new VersionParser();
93
+                        $version = $versionParser->getVersion($release['rawPlatformVersionSpec']);
94
+                        $ncVersion = $this->getVersion();
95
+                        $min = $version->getMinimumVersion();
96
+                        $max = $version->getMaximumVersion();
97
+                        $minFulfilled = $this->compareVersion->isCompatible($ncVersion, $min, '>=');
98
+                        $maxFulfilled = $max !== '' &&
99
+                            $this->compareVersion->isCompatible($ncVersion, $max, '<=');
100
+                        if ($minFulfilled && $maxFulfilled) {
101
+                            $releases[] = $release;
102
+                        }
103
+                    } catch (\InvalidArgumentException $e) {
104
+                        $this->logger->logException($e, ['app' => 'appstoreFetcher', 'level' => Util::WARN]);
105
+                    }
106
+                }
107
+            }
108 108
 
109
-			// Get the highest version
110
-			$versions = [];
111
-			foreach($releases as $release) {
112
-				$versions[] = $release['version'];
113
-			}
114
-			usort($versions, 'version_compare');
115
-			$versions = array_reverse($versions);
116
-			$compatible = false;
117
-			if(isset($versions[0])) {
118
-				$highestVersion = $versions[0];
119
-				foreach ($releases as $release) {
120
-					if ((string)$release['version'] === (string)$highestVersion) {
121
-						$compatible = true;
122
-						$response['data'][$dataKey]['releases'] = [$release];
123
-						break;
124
-					}
125
-				}
126
-			}
127
-			if(!$compatible) {
128
-				unset($response['data'][$dataKey]);
129
-			}
130
-		}
109
+            // Get the highest version
110
+            $versions = [];
111
+            foreach($releases as $release) {
112
+                $versions[] = $release['version'];
113
+            }
114
+            usort($versions, 'version_compare');
115
+            $versions = array_reverse($versions);
116
+            $compatible = false;
117
+            if(isset($versions[0])) {
118
+                $highestVersion = $versions[0];
119
+                foreach ($releases as $release) {
120
+                    if ((string)$release['version'] === (string)$highestVersion) {
121
+                        $compatible = true;
122
+                        $response['data'][$dataKey]['releases'] = [$release];
123
+                        break;
124
+                    }
125
+                }
126
+            }
127
+            if(!$compatible) {
128
+                unset($response['data'][$dataKey]);
129
+            }
130
+        }
131 131
 
132
-		$response['data'] = array_values($response['data']);
133
-		return $response;
134
-	}
132
+        $response['data'] = array_values($response['data']);
133
+        return $response;
134
+    }
135 135
 
136
-	private function setEndpoint() {
137
-		$versionArray = explode('.', $this->getVersion());
138
-		$this->endpointUrl = sprintf(
139
-			'https://apps.nextcloud.com/api/v1/platform/%d.%d.%d/apps.json',
140
-			$versionArray[0],
141
-			$versionArray[1],
142
-			$versionArray[2]
143
-		);
144
-	}
136
+    private function setEndpoint() {
137
+        $versionArray = explode('.', $this->getVersion());
138
+        $this->endpointUrl = sprintf(
139
+            'https://apps.nextcloud.com/api/v1/platform/%d.%d.%d/apps.json',
140
+            $versionArray[0],
141
+            $versionArray[1],
142
+            $versionArray[2]
143
+        );
144
+    }
145 145
 
146
-	/**
147
-	 * @param string $version
148
-	 * @param string $fileName
149
-	 */
150
-	public function setVersion(string $version, string $fileName = 'apps.json') {
151
-		parent::setVersion($version);
152
-		$this->fileName = $fileName;
153
-		$this->setEndpoint();
154
-	}
146
+    /**
147
+     * @param string $version
148
+     * @param string $fileName
149
+     */
150
+    public function setVersion(string $version, string $fileName = 'apps.json') {
151
+        parent::setVersion($version);
152
+        $this->fileName = $fileName;
153
+        $this->setEndpoint();
154
+    }
155 155
 }
Please login to merge, or discard this patch.
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -79,13 +79,13 @@  discard block
 block discarded – undo
79 79
 		/** @var mixed[] $response */
80 80
 		$response = parent::fetch($ETag, $content);
81 81
 
82
-		foreach($response['data'] as $dataKey => $app) {
82
+		foreach ($response['data'] as $dataKey => $app) {
83 83
 			$releases = [];
84 84
 
85 85
 			// Filter all compatible releases
86
-			foreach($app['releases'] as $release) {
86
+			foreach ($app['releases'] as $release) {
87 87
 				// Exclude all nightly and pre-releases
88
-				if($release['isNightly'] === false
88
+				if ($release['isNightly'] === false
89 89
 					&& strpos($release['version'], '-') === false) {
90 90
 					// Exclude all versions not compatible with the current version
91 91
 					try {
@@ -108,23 +108,23 @@  discard block
 block discarded – undo
108 108
 
109 109
 			// Get the highest version
110 110
 			$versions = [];
111
-			foreach($releases as $release) {
111
+			foreach ($releases as $release) {
112 112
 				$versions[] = $release['version'];
113 113
 			}
114 114
 			usort($versions, 'version_compare');
115 115
 			$versions = array_reverse($versions);
116 116
 			$compatible = false;
117
-			if(isset($versions[0])) {
117
+			if (isset($versions[0])) {
118 118
 				$highestVersion = $versions[0];
119 119
 				foreach ($releases as $release) {
120
-					if ((string)$release['version'] === (string)$highestVersion) {
120
+					if ((string) $release['version'] === (string) $highestVersion) {
121 121
 						$compatible = true;
122 122
 						$response['data'][$dataKey]['releases'] = [$release];
123 123
 						break;
124 124
 					}
125 125
 				}
126 126
 			}
127
-			if(!$compatible) {
127
+			if (!$compatible) {
128 128
 				unset($response['data'][$dataKey]);
129 129
 			}
130 130
 		}
Please login to merge, or discard this patch.