Skip to content

Commit 7d58aa8

Browse files
Merge pull request #682 from GDATASoftwareAG/php/http_api_options_proposal
refactors the forXXX-options
2 parents dab1c4a + 926e18e commit 7d58aa8

File tree

5 files changed

+55
-91
lines changed

5 files changed

+55
-91
lines changed

php/src/vaas/Options/ForFileOptions.php

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@
44

55
class ForFileOptions
66
{
7-
public bool $useCache;
8-
public bool $useHashLookup;
9-
public ?string $vaasRequestId;
7+
const DEFAULT_REQUEST_ID = null;
8+
9+
public function __construct(
10+
public bool $useCache = true,
11+
public bool $useHashLookup = true,
12+
public ?string $vaasRequestId = self::DEFAULT_REQUEST_ID) {}
1013

11-
public function __construct(array $options = [])
14+
public static function fromVaasOptions(VaasOptions $options): self
1215
{
13-
$this->useCache = $options['useCache'] ?? true;
14-
$this->useHashLookup = $options['useHashLookup'] ?? true;
15-
$this->vaasRequestId = $options['vaasRequestId'] ?? null;
16-
}
17-
18-
public static function default(): self
19-
{
20-
return new self();
16+
return new self(
17+
$options->useCache,
18+
$options->useHashLookup,
19+
self::DEFAULT_REQUEST_ID
20+
);
2121
}
2222
}

php/src/vaas/Options/ForSha256Options.php

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@
44

55
class ForSha256Options
66
{
7-
public bool $useCache;
8-
public bool $useHashLookup;
9-
public ?string $vaasRequestId;
7+
const DEFAULT_REQUEST_ID = null;
108

11-
public function __construct(array $options = [])
12-
{
13-
$this->useCache = $options['useCache'] ?? true;
14-
$this->useHashLookup = $options['useHashLookup'] ?? true;
15-
$this->vaasRequestId = $options['vaasRequestId'] ?? null;
16-
}
9+
public function __construct(
10+
public bool $useCache = true,
11+
public bool $useHashLookup = true,
12+
public ?string $vaasRequestId = self::DEFAULT_REQUEST_ID) {}
1713

18-
public static function default(): self
14+
public static function fromVaasOptions(VaasOptions $options): self
1915
{
20-
return new self();
16+
return new self(
17+
$options->useCache,
18+
$options->useHashLookup,
19+
self::DEFAULT_REQUEST_ID
20+
);
2121
}
2222
}

php/src/vaas/Options/ForStreamOptions.php

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,20 @@
44

55
class ForStreamOptions
66
{
7-
public bool $useHashLookup;
8-
public int $timeout;
9-
public ?string $vaasRequestId;
7+
const DEFAULT_TIMEOUT = 300;
8+
const DEFAULT_REQUEST_ID = null;
109

11-
public function __construct(array $options = [])
12-
{
13-
$this->useHashLookup = $options['useHashLookup'] ?? true;
14-
$this->timeout = $options['timeout'] ?? 300;
15-
$this->vaasRequestId = $options['vaasRequestId'] ?? null;
16-
}
10+
public function __construct(
11+
public bool $useHashLookup = true,
12+
public int $timeout = self::DEFAULT_TIMEOUT,
13+
public ?string $vaasRequestId = self::DEFAULT_REQUEST_ID) {}
1714

18-
public static function default(): self
15+
public static function fromVaasOptions(VaasOptions $options): self
1916
{
20-
return new self();
17+
return new self(
18+
$options->useCache,
19+
self::DEFAULT_TIMEOUT,
20+
self::DEFAULT_REQUEST_ID
21+
);
2122
}
2223
}

php/src/vaas/Options/ForUrlOptions.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44

55
class ForUrlOptions
66
{
7-
public bool $useHashLookup;
8-
public ?string $vaasRequestId;
7+
const DEFAULT_REQUEST_ID = null;
98

10-
public function __construct(array $options = [])
11-
{
12-
$this->useHashLookup = $options['useHashLookup'] ?? true;
13-
$this->vaasRequestId = $options['vaasRequestId'] ?? null;
14-
}
9+
public function __construct(
10+
public bool $useHashLookup = true,
11+
public ?string $vaasRequestId = self::DEFAULT_REQUEST_ID) {}
1512

16-
public static function default(): self
13+
public static function fromVaasOptions(VaasOptions $options): self
1714
{
18-
return new self();
15+
return new self(
16+
$options->useHashLookup,
17+
self::DEFAULT_REQUEST_ID
18+
);
1919
}
2020
}

php/src/vaas/Vaas.php

Lines changed: 11 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,8 @@ public function forSha256Async(Sha256 $sha256, ?ForSha256Options $options = null
8181
return async(function () use ($sha256, $options, $cancellation) {
8282
$this->logger->debug("Requesting verdict for SHA256: $sha256");
8383

84-
if ($options === null) {
85-
$options = new ForSha256Options(
86-
[
87-
'vaasRequestId' => null,
88-
'useHashLookup' => $this->options->useHashLookup ?? true,
89-
'useCache' => $this->options->useCache ?? true,
90-
]
91-
);
92-
}
84+
$options = $options ?? ForSha256Options::fromVaasOptions($this->options);
85+
9386
$url = sprintf('%s/files/%s/report/?useCache=%s&useHashLookup=%s',
9487
$this->options->vaasUrl,
9588
$sha256,
@@ -146,22 +139,11 @@ public function forFileAsync(string $path, ?ForFileOptions $options = null, ?Can
146139
throw new VaasClientException('File does not exist');
147140
}
148141

149-
if ($options === null) {
150-
$options = new ForFileOptions(
151-
[
152-
'vaasRequestId' => null,
153-
'useHashLookup' => $this->options->useHashLookup ?? true,
154-
'useCache' => $this->options->useCache ?? true,
155-
]
156-
);
157-
}
142+
$options = $options ?? ForFileOptions::fromVaasOptions($this->options);
158143

159144
if ($options->useCache || $options->useHashLookup) {
160-
$forSha256Options = new ForSha256Options([
161-
'vaasRequestId' => $options->vaasRequestId,
162-
'useHashLookup' => $options->useHashLookup,
163-
'useCache' => $options->useCache,
164-
]);
145+
$forSha256Options = new ForSha256Options(
146+
$options->useCache, $options->useHashLookup, $options->vaasRequestId);
165147
$sha256 = Sha256::TryFromFile($path);
166148
$this->logger->debug("Check if file $path is already known by its SHA256: $sha256");
167149
$response = $this->forSha256Async($sha256, $forSha256Options, $cancellation)->await();
@@ -174,10 +156,7 @@ public function forFileAsync(string $path, ?ForFileOptions $options = null, ?Can
174156

175157
$stream = openFile($path, 'r');
176158

177-
$forStreamOptions = new ForStreamOptions([
178-
'vaasRequestId' => $options->vaasRequestId,
179-
'useHashLookup' => $options->useHashLookup,
180-
]);
159+
$forStreamOptions = new ForStreamOptions($options->useHashLookup, 300, $options->vaasRequestId);
181160

182161
$this->logger->debug("Requesting verdict for $path as file stream");
183162
return $this->forStreamAsync($stream, filesize($path), $forStreamOptions)->await();
@@ -203,15 +182,8 @@ public function forStreamAsync(ReadableStream $stream, int $fileSize, ?ForStream
203182
throw new VaasClientException('Stream is not readable');
204183
}
205184

206-
if ($options === null) {
207-
$options = new ForStreamOptions(
208-
[
209-
'vaasRequestId' => null,
210-
'timeout' => $this->options->timeout,
211-
'useHashLookup' => $this->options->useHashLookup ?? true,
212-
]
213-
);
214-
}
185+
$options = $options ?? ForStreamOptions::fromVaasOptions($this->options);
186+
215187
$url = sprintf('%s/files?useHashLookup=%s', $this->options->vaasUrl, json_encode($options->useHashLookup));
216188

217189
$request = new Request($url, 'POST');
@@ -243,10 +215,7 @@ public function forStreamAsync(ReadableStream $stream, int $fileSize, ?ForStream
243215
throw $this->parseVaasError($response);
244216
}
245217

246-
$forSha256Options = new ForSha256Options([
247-
'vaasRequestId' => $options->vaasRequestId,
248-
'useHashLookup' => $options->useHashLookup,
249-
]);
218+
$forSha256Options = new ForSha256Options(true, $options->useHashLookup, $options->vaasRequestId);
250219

251220
if (!isset($fileAnalysisStarted['sha256'])) {
252221
$this->logger->error("Unexpected response from the server for stream");
@@ -272,14 +241,8 @@ public function forUrlAsync(string $uri, ?ForUrlOptions $options = null, ?Cancel
272241
$this->logger->debug("Requesting verdict for URL: $uri");
273242
$uri = Vaas::validUri($uri);
274243

275-
if ($options === null) {
276-
$options = new ForUrlOptions(
277-
[
278-
'vaasRequestId' => null,
279-
'useHashLookup' => $this->options->useHashLookup ?? true,
280-
]
281-
);
282-
}
244+
$options = $options ?? ForUrlOptions::fromVaasOptions($this->options);
245+
283246
$urlAnalysisUri = sprintf('%s/urls', $this->options->vaasUrl);
284247

285248
$urlAnalysisRequest = new Request($urlAnalysisUri, 'POST');

0 commit comments

Comments
 (0)