Skip to content
This repository was archived by the owner on Apr 14, 2024. It is now read-only.

Commit 6776748

Browse files
author
Julien Neuhart
authored
updating for 5.0.0 (#7)
1 parent e2a0ddc commit 6776748

9 files changed

+105
-94
lines changed

docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ services:
1212
- ./:/usr/src/app:rw
1313

1414
gotenberg:
15-
image: thecodingmachine/gotenberg:4.1
15+
image: thecodingmachine/gotenberg:5.0.0
1616
container_name: gotenberg
1717
restart: 'no'

src/ChromeRequest.php

+32-26
Original file line numberDiff line numberDiff line change
@@ -4,44 +4,53 @@
44

55
abstract class ChromeRequest extends Request implements GotenbergRequestInterface
66
{
7+
private const WAIT_DELAY = 'waitDelay';
8+
private const PAPER_WIDTH = 'paperWidth';
9+
private const PAPER_HEIGHT = 'paperHeight';
10+
private const MARGIN_TOP = 'marginTop';
11+
private const MARGIN_BOTTOM = 'marginBottom';
12+
private const MARGIN_LEFT = 'marginLeft';
13+
private const MARGIN_RIGHT = 'marginRight';
14+
private const LANDSCAPE = 'landscape';
15+
16+
/** @var float|null */
17+
private $waitDelay;
18+
719
/** @var Document|null */
8-
protected $header;
20+
private $header;
921

1022
/** @var Document|null */
11-
protected $footer;
23+
private $footer;
1224

1325
/** @var float|null */
14-
protected $paperWidth;
26+
private $paperWidth;
1527

1628
/** @var float|null */
17-
protected $paperHeight;
29+
private $paperHeight;
1830

1931
/** @var float|null */
20-
protected $marginTop;
32+
private $marginTop;
2133

2234
/** @var float|null */
23-
protected $marginBottom;
35+
private $marginBottom;
2436

2537
/** @var float|null */
26-
protected $marginLeft;
38+
private $marginLeft;
2739

2840
/** @var float|null */
29-
protected $marginRight;
41+
private $marginRight;
3042

3143
/** @var bool */
32-
protected $landscape;
33-
34-
/** @var int|null */
35-
protected $webFontsTimeout;
44+
private $landscape;
3645

3746
/**
3847
* @return array<string,mixed>
3948
*/
4049
public function getFormValues(): array
4150
{
42-
$values = [];
43-
if (!empty($this->webhookURL)) {
44-
$values[self::WEBHOOK_URL] = $this->webhookURL;
51+
$values = parent::getFormValues();
52+
if (!is_null($this->waitDelay)) {
53+
$values[self::WAIT_DELAY] = $this->waitDelay;
4554
}
4655
if (!is_null($this->paperWidth)) {
4756
$values[self::PAPER_WIDTH] = $this->paperWidth;
@@ -61,9 +70,6 @@ public function getFormValues(): array
6170
if (!is_null($this->marginRight)) {
6271
$values[self::MARGIN_RIGHT] = $this->marginRight;
6372
}
64-
if (!is_null($this->webFontsTimeout)) {
65-
$values[self::WEB_FONTS_TIMEOUT] = $this->webFontsTimeout;
66-
}
6773
$values[self::LANDSCAPE] = $this->landscape;
6874
return $values;
6975
}
@@ -83,6 +89,14 @@ public function getFormFiles(): array
8389
return $files;
8490
}
8591

92+
/**
93+
* @param float|null $waitDelay
94+
*/
95+
public function setWaitDelay(?float $waitDelay): void
96+
{
97+
$this->waitDelay = $waitDelay;
98+
}
99+
86100
/**
87101
* @param float[] $paperSize
88102
* @throws RequestException
@@ -182,12 +196,4 @@ public function setLandscape(bool $landscape): void
182196
{
183197
$this->landscape = $landscape;
184198
}
185-
186-
/**
187-
* @param int|null $webFontsTimeout
188-
*/
189-
public function setWebFontsTimeout(?int $webFontsTimeout): void
190-
{
191-
$this->webFontsTimeout = $webFontsTimeout;
192-
}
193199
}

src/HTMLRequest.php

+3-31
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
namespace TheCodingMachine\Gotenberg;
44

5-
class HTMLRequest extends ChromeRequest
5+
class HTMLRequest extends ChromeRequest implements GotenbergRequestInterface
66
{
77
/** @var Document */
8-
protected $index;
8+
private $index;
99

1010
/** @var Document[] */
11-
protected $assets;
11+
private $assets;
1212

1313
/**
1414
* HTMLRequest constructor.
@@ -41,34 +41,6 @@ public function getFormFiles(): array
4141
return $files;
4242
}
4343

44-
/**
45-
* @param float[] $paperSize
46-
* @throws RequestException
47-
*/
48-
public function setPaperSize(array $paperSize): void
49-
{
50-
if (count($paperSize) !== 2) {
51-
throw new RequestException('Wrong paper size.');
52-
}
53-
$this->paperWidth = $paperSize[0];
54-
$this->paperHeight = $paperSize[1];
55-
}
56-
57-
/**
58-
* @param float[] $margins
59-
* @throws RequestException
60-
*/
61-
public function setMargins(array $margins): void
62-
{
63-
if (count($margins) !== 4) {
64-
throw new RequestException('Wrong margins.');
65-
}
66-
$this->marginTop = $margins[0];
67-
$this->marginBottom = $margins[1];
68-
$this->marginLeft = $margins[2];
69-
$this->marginRight = $margins[3];
70-
}
71-
7244
/**
7345
* @param Document[] $assets
7446
*/

src/MarkdownRequest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace TheCodingMachine\Gotenberg;
44

5-
final class MarkdownRequest extends HTMLRequest
5+
final class MarkdownRequest extends HTMLRequest implements GotenbergRequestInterface
66
{
77
/** @var Document[] */
88
private $markdowns;

src/MergeRequest.php

+1-13
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,7 @@ public function __construct(array $files)
2222
*/
2323
public function getPostURL(): string
2424
{
25-
return '/merge';
26-
}
27-
28-
/**
29-
* @return array<string,mixed>
30-
*/
31-
public function getFormValues(): array
32-
{
33-
$values = [];
34-
if (!empty($this->webhookURL)) {
35-
$values[self::WEBHOOK_URL] = $this->webhookURL;
36-
}
37-
return $values;
25+
return '/convert/merge';
3826
}
3927

4028
/**

src/OfficeRequest.php

+3-5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
final class OfficeRequest extends Request implements GotenbergRequestInterface
66
{
7+
private const LANDSCAPE = 'landscape';
8+
79
/** @var Document[] */
810
private $files;
911

@@ -19,7 +21,6 @@ public function __construct(array $files)
1921
$this->files = $files;
2022
}
2123

22-
2324
/**
2425
* @return string
2526
*/
@@ -33,10 +34,7 @@ public function getPostURL(): string
3334
*/
3435
public function getFormValues(): array
3536
{
36-
$values = [];
37-
if (!empty($this->webhookURL)) {
38-
$values[self::WEBHOOK_URL] = $this->webhookURL;
39-
}
37+
$values = parent::getFormValues();
4038
$values[self::LANDSCAPE] = $this->landscape;
4139
return $values;
4240
}

src/Request.php

+44-11
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,52 @@ abstract class Request
1616
public const NORMAL_MARGINS = [1, 1, 1, 1];
1717
public const LARGE_MARGINS = [2, 2, 2, 2];
1818

19-
protected const REMOTE_URL = 'remoteURL';
20-
protected const WEBHOOK_URL = 'webhookURL';
21-
protected const PAPER_WIDTH = 'paperWidth';
22-
protected const PAPER_HEIGHT = 'paperHeight';
23-
protected const MARGIN_TOP = 'marginTop';
24-
protected const MARGIN_BOTTOM = 'marginBottom';
25-
protected const MARGIN_LEFT = 'marginLeft';
26-
protected const MARGIN_RIGHT = 'marginRight';
27-
protected const LANDSCAPE = 'landscape';
28-
protected const WEB_FONTS_TIMEOUT = 'webFontsTimeout';
19+
private const RESULT_FILENAME = 'resultFilename';
20+
private const WAIT_TIMEOUT = 'waitTimeout';
21+
private const WEBHOOK_URL = 'webhookURL';
2922

3023
/** @var string|null */
31-
protected $webhookURL;
24+
private $resultFilename;
25+
26+
/** @var float|null */
27+
private $waitTimeout;
28+
29+
/** @var string|null */
30+
private $webhookURL;
31+
32+
/**
33+
* @return array<string,mixed>
34+
*/
35+
public function getFormValues(): array
36+
{
37+
$values = [];
38+
if (!empty($this->resultFilename)) {
39+
$values[self::RESULT_FILENAME] = $this->resultFilename;
40+
}
41+
if (!is_null($this->waitTimeout)) {
42+
$values[self::WAIT_TIMEOUT] = $this->waitTimeout;
43+
}
44+
if (!empty($this->webhookURL)) {
45+
$values[self::WEBHOOK_URL] = $this->webhookURL;
46+
}
47+
return $values;
48+
}
49+
50+
/**
51+
* @param string|null $resultFilename
52+
*/
53+
public function setResultFilename(?string $resultFilename): void
54+
{
55+
$this->resultFilename = $resultFilename;
56+
}
57+
58+
/**
59+
* @param float|null $waitTimeout
60+
*/
61+
public function setWaitTimeout(?float $waitTimeout): void
62+
{
63+
$this->waitTimeout = $waitTimeout;
64+
}
3265

3366
/**
3467
* @param string|null $webhookURL

src/URLRequest.php

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
namespace TheCodingMachine\Gotenberg;
44

5-
class URLRequest extends ChromeRequest
5+
final class URLRequest extends ChromeRequest implements GotenbergRequestInterface
66
{
7+
private const REMOTE_URL = 'remoteURL';
8+
79
/** @var string */
8-
protected $URL;
10+
private $URL;
911

1012
/**
1113
* HTMLRequest constructor.

tests/ClientTest.php

+16-4
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,14 @@ private function createHTMLRequest(): HTMLRequest
5151
DocumentFactory::makeFromPath('style.css', __DIR__ . '/assets/html/style.css'),
5252
];
5353
$request = new HTMLRequest($index);
54+
$request->setResultFilename('foo.pdf');
55+
$request->setWaitTimeout(5);
56+
$request->setWaitDelay(1);
5457
$request->setHeader($header);
5558
$request->setFooter($footer);
5659
$request->setAssets($assets);
5760
$request->setPaperSize(Request::A4);
5861
$request->setMargins(Request::NO_MARGINS);
59-
$request->setWebFontsTimeout(500);
6062
return $request;
6163
}
6264

@@ -69,11 +71,13 @@ private function createURLRequest(): URLRequest
6971
$header = DocumentFactory::makeFromPath('header.html', __DIR__ . '/assets/url/header.html');
7072
$footer = DocumentFactory::makeFromPath('footer.html', __DIR__ . '/assets/url/footer.html');
7173
$request = new URLRequest('https://google.com');
74+
$request->setResultFilename('foo.pdf');
75+
$request->setWaitTimeout(5);
76+
$request->setWaitDelay(1);
7277
$request->setHeader($header);
7378
$request->setFooter($footer);
7479
$request->setPaperSize(Request::A4);
7580
$request->setMargins(Request::NO_MARGINS);
76-
$request->setWebFontsTimeout(500);
7781
return $request;
7882
}
7983

@@ -97,12 +101,14 @@ public function createMarkdownRequest(): MarkdownRequest
97101
DocumentFactory::makeFromPath('style.css', __DIR__ . '/assets/markdown/style.css'),
98102
];
99103
$request = new MarkdownRequest($index, $markdowns);
104+
$request->setResultFilename('foo.pdf');
105+
$request->setWaitTimeout(5);
106+
$request->setWaitDelay(1);
100107
$request->setHeader($header);
101108
$request->setFooter($footer);
102109
$request->setAssets($assets);
103110
$request->setPaperSize(Request::A4);
104111
$request->setMargins(Request::NO_MARGINS);
105-
$request->setWebFontsTimeout(500);
106112
return $request;
107113
}
108114

@@ -115,6 +121,9 @@ public function createOfficeRequest(): OfficeRequest
115121
DocumentFactory::makeFromPath('document.docx', __DIR__ . '/assets/office/document.docx'),
116122
];
117123
$request = new OfficeRequest($files);
124+
$request->setResultFilename('foo.pdf');
125+
$request->setWaitTimeout(5);
126+
$request->setLandscape(false);
118127
return $request;
119128
}
120129

@@ -128,12 +137,14 @@ public function createMergeRequest(): MergeRequest
128137
DocumentFactory::makeFromPath('gotenberg2.pdf', __DIR__ . '/assets/pdf/gotenberg.pdf'),
129138
];
130139
$request = new MergeRequest($files);
131-
140+
$request->setResultFilename('foo.pdf');
141+
$request->setWaitTimeout(5);
132142
return $request;
133143
}
134144

135145
/**
136146
* @throws ClientException
147+
* @throws \HTTP\Client\Exception
137148
*/
138149
function testPost()
139150
{
@@ -163,6 +174,7 @@ function testPost()
163174
/**
164175
* @throws ClientException
165176
* @throws FilesystemException
177+
* @throws \HTTP\Client\Exception
166178
*/
167179
function testStore()
168180
{

0 commit comments

Comments
 (0)