mirror of
https://github.com/gotenberg/gotenberg.git
synced 2026-08-17 12:42:16 +01:00
adding PHP example for custom HTTP headers in documentation + improving logs for custom HTTP headers
This commit is contained in:
@@ -18,7 +18,7 @@ Unless your project already has a PSR7 `HttpClient`, install `php-http/guzzle6-a
|
|||||||
$ composer require php-http/guzzle6-adapter
|
$ composer require php-http/guzzle6-adapter
|
||||||
```
|
```
|
||||||
|
|
||||||
Then the PHP client:
|
Then the [PHP client](https://github.com/thecodingmachine/gotenberg-php-client):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ composer require thecodingmachine/gotenberg-php-client
|
$ composer require thecodingmachine/gotenberg-php-client
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ use TheCodingMachine\Gotenberg\HTMLRequest;
|
|||||||
$client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client());
|
$client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client());
|
||||||
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
||||||
$request = new HTMLRequest($index);
|
$request = new HTMLRequest($index);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ $footer = DocumentFactory::makeFromPath('footer.html', 'footer.html');
|
|||||||
$request = new HTMLRequest($index);
|
$request = new HTMLRequest($index);
|
||||||
$request->setHeader($header);
|
$request->setHeader($header);
|
||||||
$request->setFooter($footer);
|
$request->setFooter($footer);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -237,7 +237,7 @@ $assets = [
|
|||||||
];
|
];
|
||||||
$request = new HTMLRequest($index);
|
$request = new HTMLRequest($index);
|
||||||
$request->setAssets($assets);
|
$request->setAssets($assets);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -296,7 +296,7 @@ $request = new HTMLRequest($index);
|
|||||||
$request->setPaperSize(Request::A4);
|
$request->setPaperSize(Request::A4);
|
||||||
$request->setMargins(Request::NO_MARGINS);
|
$request->setMargins(Request::NO_MARGINS);
|
||||||
$request->setLandscape(true);
|
$request->setLandscape(true);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -345,7 +345,7 @@ $client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client()
|
|||||||
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
||||||
$request = new HTMLRequest($index);
|
$request = new HTMLRequest($index);
|
||||||
$request->setWaitDelay(5.5);
|
$request->setWaitDelay(5.5);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -397,6 +397,6 @@ $client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client()
|
|||||||
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
||||||
$request = new HTMLRequest($index);
|
$request = new HTMLRequest($index);
|
||||||
$request->setGoogleChromeRpccBufferSize(1048576);
|
$request->setGoogleChromeRpccBufferSize(1048576);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ use TheCodingMachine\Gotenberg\URLRequest;
|
|||||||
$client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client());
|
$client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client());
|
||||||
$request = new URLRequest('https://google.com');
|
$request = new URLRequest('https://google.com');
|
||||||
$request->setMargins(Request::NO_MARGINS);
|
$request->setMargins(Request::NO_MARGINS);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -85,4 +85,13 @@ $ curl --request POST \
|
|||||||
|
|
||||||
### PHP
|
### PHP
|
||||||
|
|
||||||
// TODO
|
```php
|
||||||
|
use TheCodingMachine\Gotenberg\Client;
|
||||||
|
use TheCodingMachine\Gotenberg\URLRequest;
|
||||||
|
|
||||||
|
$client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client());
|
||||||
|
$request = new URLRequest('https://google.com');
|
||||||
|
$request->addRemoteURLHTTPHeader('Your-Header', 'Foo')
|
||||||
|
$dest = 'result.pdf';
|
||||||
|
$client->store($request, $dest);
|
||||||
|
```
|
||||||
|
|||||||
@@ -65,6 +65,6 @@ $markdowns = [
|
|||||||
DocumentFactory::makeFromPath('file.md', 'file.md'),
|
DocumentFactory::makeFromPath('file.md', 'file.md'),
|
||||||
];
|
];
|
||||||
$request = new MarkdownRequest($index, $markdowns);
|
$request = new MarkdownRequest($index, $markdowns);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ $files = [
|
|||||||
DocumentFactory::makeFromPath('document2.docx', 'document2.docx'),
|
DocumentFactory::makeFromPath('document2.docx', 'document2.docx'),
|
||||||
];
|
];
|
||||||
$request = new OfficeRequest($files);
|
$request = new OfficeRequest($files);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -112,6 +112,6 @@ $files = [
|
|||||||
];
|
];
|
||||||
$request = new OfficeRequest($files);
|
$request = new OfficeRequest($files);
|
||||||
$request->setLandscape(true);
|
$request->setLandscape(true);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -50,6 +50,6 @@ $files = [
|
|||||||
DocumentFactory::makeFromPath('file2.pdf', 'file2.pdf'),
|
DocumentFactory::makeFromPath('file2.pdf', 'file2.pdf'),
|
||||||
];
|
];
|
||||||
$request = new MergeRequest($files);
|
$request = new MergeRequest($files);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -48,6 +48,6 @@ $client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client()
|
|||||||
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
||||||
$request = new HTMLRequest($index);
|
$request = new HTMLRequest($index);
|
||||||
$request->setWaitTimeout(2.5);
|
$request->setWaitTimeout(2.5);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -128,4 +128,15 @@ $ curl --request POST \
|
|||||||
|
|
||||||
### PHP
|
### PHP
|
||||||
|
|
||||||
// TODO
|
```php
|
||||||
|
use TheCodingMachine\Gotenberg\Client;
|
||||||
|
use TheCodingMachine\Gotenberg\DocumentFactory;
|
||||||
|
use TheCodingMachine\Gotenberg\HTMLRequest;
|
||||||
|
|
||||||
|
$client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client());
|
||||||
|
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
||||||
|
$request = new HTMLRequest($index);
|
||||||
|
$request->setWebhookURL('http://myapp.com/webhook/');
|
||||||
|
$request->addWebhookURLHTTPHeader('Your-Header', 'Foo');
|
||||||
|
$resp = $client->post($request);
|
||||||
|
```
|
||||||
@@ -233,7 +233,7 @@ Gotenberg API is available at <a href="http://localhost:3000">http://localhost:3
|
|||||||
<pre class="chroma">$ composer require php-http/guzzle6-adapter
|
<pre class="chroma">$ composer require php-http/guzzle6-adapter
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p>Then the PHP client:</p>
|
<p>Then the <a href="https://github.com/thecodingmachine/gotenberg-php-client">PHP client</a>:</p>
|
||||||
|
|
||||||
<pre class="chroma">$ composer require thecodingmachine/gotenberg-php-client
|
<pre class="chroma">$ composer require thecodingmachine/gotenberg-php-client
|
||||||
</pre>
|
</pre>
|
||||||
@@ -474,7 +474,7 @@ use TheCodingMachine\Gotenberg\HTMLRequest;
|
|||||||
$client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client());
|
$client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client());
|
||||||
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
||||||
$request = new HTMLRequest($index);
|
$request = new HTMLRequest($index);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@@ -569,7 +569,7 @@ $footer = DocumentFactory::makeFromPath('footer.html', 'footer.html&
|
|||||||
$request = new HTMLRequest($index);
|
$request = new HTMLRequest($index);
|
||||||
$request->setHeader($header);
|
$request->setHeader($header);
|
||||||
$request->setFooter($footer);
|
$request->setFooter($footer);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@@ -665,7 +665,7 @@ $assets = [
|
|||||||
];
|
];
|
||||||
$request = new HTMLRequest($index);
|
$request = new HTMLRequest($index);
|
||||||
$request->setAssets($assets);
|
$request->setAssets($assets);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@@ -731,7 +731,7 @@ $request = new HTMLRequest($index);
|
|||||||
$request->setPaperSize(Request::A4);
|
$request->setPaperSize(Request::A4);
|
||||||
$request->setMargins(Request::NO_MARGINS);
|
$request->setMargins(Request::NO_MARGINS);
|
||||||
$request->setLandscape(true);
|
$request->setLandscape(true);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@@ -787,7 +787,7 @@ $client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\
|
|||||||
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
||||||
$request = new HTMLRequest($index);
|
$request = new HTMLRequest($index);
|
||||||
$request->setWaitDelay(5.5);
|
$request->setWaitDelay(5.5);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@@ -846,7 +846,7 @@ $client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\
|
|||||||
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
||||||
$request = new HTMLRequest($index);
|
$request = new HTMLRequest($index);
|
||||||
$request->setGoogleChromeRpccBufferSize(1048576);
|
$request->setGoogleChromeRpccBufferSize(1048576);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@@ -912,7 +912,7 @@ use TheCodingMachine\Gotenberg\URLRequest;
|
|||||||
$client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client());
|
$client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client());
|
||||||
$request = new URLRequest('https://google.com');
|
$request = new URLRequest('https://google.com');
|
||||||
$request->setMargins(Request::NO_MARGINS);
|
$request->setMargins(Request::NO_MARGINS);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@@ -955,7 +955,15 @@ canonical key for <code>accept-encoding</code> is <code>Accept-Encoding</code>.<
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>
|
||||||
</a>PHP</h3>
|
</a>PHP</h3>
|
||||||
|
|
||||||
<p>// TODO</p>
|
<pre class="chroma">use TheCodingMachine\Gotenberg\Client;
|
||||||
|
use TheCodingMachine\Gotenberg\URLRequest;
|
||||||
|
|
||||||
|
$client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client());
|
||||||
|
$request = new URLRequest('https://google.com');
|
||||||
|
$request->addRemoteURLHTTPHeader('Your-Header', 'Foo')
|
||||||
|
$dest = 'result.pdf';
|
||||||
|
$client->store($request, $dest);
|
||||||
|
</pre>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -1030,7 +1038,7 @@ $markdowns = [
|
|||||||
DocumentFactory::makeFromPath('file.md', 'file.md'),
|
DocumentFactory::makeFromPath('file.md', 'file.md'),
|
||||||
];
|
];
|
||||||
$request = new MarkdownRequest($index, $markdowns);
|
$request = new MarkdownRequest($index, $markdowns);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@@ -1111,7 +1119,7 @@ $files = [
|
|||||||
DocumentFactory::makeFromPath('document2.docx', 'document2.docx'),
|
DocumentFactory::makeFromPath('document2.docx', 'document2.docx'),
|
||||||
];
|
];
|
||||||
$request = new OfficeRequest($files);
|
$request = new OfficeRequest($files);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@@ -1164,7 +1172,7 @@ $files = [
|
|||||||
];
|
];
|
||||||
$request = new OfficeRequest($files);
|
$request = new OfficeRequest($files);
|
||||||
$request->setLandscape(true);
|
$request->setLandscape(true);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@@ -1229,7 +1237,7 @@ $files = [
|
|||||||
DocumentFactory::makeFromPath('file2.pdf', 'file2.pdf'),
|
DocumentFactory::makeFromPath('file2.pdf', 'file2.pdf'),
|
||||||
];
|
];
|
||||||
$request = new MergeRequest($files);
|
$request = new MergeRequest($files);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@@ -1292,7 +1300,7 @@ $client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\
|
|||||||
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
||||||
$request = new HTMLRequest($index);
|
$request = new HTMLRequest($index);
|
||||||
$request->setWaitTimeout(2.5);
|
$request->setWaitTimeout(2.5);
|
||||||
$dest = "result.pdf";
|
$dest = 'result.pdf';
|
||||||
$client->store($request, $dest);
|
$client->store($request, $dest);
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@@ -1449,7 +1457,17 @@ canonical key for <code>accept-encoding</code> is <code>Accept-Encoding</code>.<
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>
|
||||||
</a>PHP</h3>
|
</a>PHP</h3>
|
||||||
|
|
||||||
<p>// TODO</p>
|
<pre class="chroma">use TheCodingMachine\Gotenberg\Client;
|
||||||
|
use TheCodingMachine\Gotenberg\DocumentFactory;
|
||||||
|
use TheCodingMachine\Gotenberg\HTMLRequest;
|
||||||
|
|
||||||
|
$client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client());
|
||||||
|
$index = DocumentFactory::makeFromPath('index.html', 'index.html');
|
||||||
|
$request = new HTMLRequest($index);
|
||||||
|
$request->setWebhookURL('http://myapp.com/webhook/');
|
||||||
|
$request->addWebhookURLHTTPHeader('Your-Header', 'Foo');
|
||||||
|
$resp = $client->post($request);
|
||||||
|
</pre>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ func urlHandler(c echo.Context) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
opts.CustomHeaders = resource.RemoteURLCustomHeaders(r)
|
opts.CustomHTTPHeaders = resource.RemoteURLCustomHTTPHeaders(r)
|
||||||
if !r.HasArg(resource.RemoteURLArgKey) {
|
if !r.HasArg(resource.RemoteURLArgKey) {
|
||||||
return xerror.Invalid(
|
return xerror.Invalid(
|
||||||
op,
|
op,
|
||||||
@@ -338,14 +338,14 @@ func convertAsync(ctx context.Context, p printer.Printer, filename, fpath string
|
|||||||
}
|
}
|
||||||
req.Header.Set(echo.HeaderContentType, "application/pdf")
|
req.Header.Set(echo.HeaderContentType, "application/pdf")
|
||||||
// set custom headers (if any).
|
// set custom headers (if any).
|
||||||
customHeaders := resource.WebhookURLCustomHeaders(r)
|
customHeaders := resource.WebhookURLCustomHTTPHeaders(r)
|
||||||
if len(customHeaders) > 0 {
|
if len(customHeaders) > 0 {
|
||||||
for key, value := range customHeaders {
|
for key, value := range customHeaders {
|
||||||
req.Header.Set(key, value)
|
req.Header.Set(key, value)
|
||||||
logger.DebugfOp(op, "set '%s' to custom header '%s'", value, key)
|
logger.DebugfOp(op, "set '%s' to custom HTTP header '%s'", value, key)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.DebugOp(op, "skipping custom headers as none have been provided...")
|
logger.DebugOp(op, "skipping custom HTTP headers as none have been provided...")
|
||||||
}
|
}
|
||||||
// send the result file.
|
// send the result file.
|
||||||
logger.DebugfOp(
|
logger.DebugfOp(
|
||||||
|
|||||||
@@ -582,7 +582,7 @@ func TestOfficeHandler(t *testing.T) {
|
|||||||
|
|
||||||
func TestWebhook(t *testing.T) {
|
func TestWebhook(t *testing.T) {
|
||||||
customHeaderRealKey := http.CanonicalHeaderKey("MyCustomHeader")
|
customHeaderRealKey := http.CanonicalHeaderKey("MyCustomHeader")
|
||||||
customHeaderKey := fmt.Sprintf("%s%s", resource.WebhookURLCustomHeaderCanonicalBaseKey, customHeaderRealKey)
|
customHeaderKey := fmt.Sprintf("%s%s", resource.WebhookURLCustomHTTPHeaderCanonicalBaseKey, customHeaderRealKey)
|
||||||
customHeaderValue := "foo"
|
customHeaderValue := "foo"
|
||||||
status := make(chan error, 2)
|
status := make(chan error, 2)
|
||||||
rcv := echo.New()
|
rcv := echo.New()
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ func (ctx *Context) WithResource(directoryName string) error {
|
|||||||
}
|
}
|
||||||
// retrieve custom headers from request.
|
// retrieve custom headers from request.
|
||||||
for key, value := range ctx.Request().Header {
|
for key, value := range ctx.Request().Header {
|
||||||
r.WithCustomHeader(key, value[0])
|
r.WithCustomHTTPHeader(key, value[0])
|
||||||
}
|
}
|
||||||
// retrieve form values from request.
|
// retrieve form values from request.
|
||||||
for _, key := range resource.ArgKeys() {
|
for _, key := range resource.ArgKeys() {
|
||||||
|
|||||||
@@ -5,15 +5,15 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// RemoteURLCustomHeaderCanonicalBaseKey is the base key
|
// RemoteURLCustomHTTPHeaderCanonicalBaseKey is the base key
|
||||||
// of custom headers send to the remote URL.
|
// of custom headers send to the remote URL.
|
||||||
RemoteURLCustomHeaderCanonicalBaseKey string = "Gotenberg-Remoteurl-"
|
RemoteURLCustomHTTPHeaderCanonicalBaseKey string = "Gotenberg-Remoteurl-"
|
||||||
// WebhookURLCustomHeaderCanonicalBaseKey is the base key
|
// WebhookURLCustomHTTPHeaderCanonicalBaseKey is the base key
|
||||||
// of custom headers send to the webhook URL.
|
// of custom headers send to the webhook URL.
|
||||||
WebhookURLCustomHeaderCanonicalBaseKey string = "Gotenberg-Webhookurl-"
|
WebhookURLCustomHTTPHeaderCanonicalBaseKey string = "Gotenberg-Webhookurl-"
|
||||||
)
|
)
|
||||||
|
|
||||||
func fetchCustomHeaders(r Resource, baseKey string) map[string]string {
|
func fetchCustomHTTPHeaders(r Resource, baseKey string) map[string]string {
|
||||||
customHeaders := make(map[string]string)
|
customHeaders := make(map[string]string)
|
||||||
for key, value := range r.customHeaders {
|
for key, value := range r.customHeaders {
|
||||||
if strings.Contains(key, baseKey) {
|
if strings.Contains(key, baseKey) {
|
||||||
@@ -24,14 +24,14 @@ func fetchCustomHeaders(r Resource, baseKey string) map[string]string {
|
|||||||
return customHeaders
|
return customHeaders
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemoteURLCustomHeaders is a helper for retrieving
|
// RemoteURLCustomHTTPHeaders is a helper for retrieving
|
||||||
// the custom headers for the URL conversion.
|
// the custom headers for the URL conversion.
|
||||||
func RemoteURLCustomHeaders(r Resource) map[string]string {
|
func RemoteURLCustomHTTPHeaders(r Resource) map[string]string {
|
||||||
return fetchCustomHeaders(r, RemoteURLCustomHeaderCanonicalBaseKey)
|
return fetchCustomHTTPHeaders(r, RemoteURLCustomHTTPHeaderCanonicalBaseKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
// WebhookURLCustomHeaders is a helper for retrieving
|
// WebhookURLCustomHTTPHeaders is a helper for retrieving
|
||||||
// the custom headers for the webhook URL.
|
// the custom headers for the webhook URL.
|
||||||
func WebhookURLCustomHeaders(r Resource) map[string]string {
|
func WebhookURLCustomHTTPHeaders(r Resource) map[string]string {
|
||||||
return fetchCustomHeaders(r, WebhookURLCustomHeaderCanonicalBaseKey)
|
return fetchCustomHTTPHeaders(r, WebhookURLCustomHTTPHeaderCanonicalBaseKey)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,16 +17,16 @@ func TestRemoteURLCustomHeaders(t *testing.T) {
|
|||||||
// should find the custom header.
|
// should find the custom header.
|
||||||
customHeaderValue := "bar"
|
customHeaderValue := "bar"
|
||||||
customHeaderCanonicalRealKey := "Foo"
|
customHeaderCanonicalRealKey := "Foo"
|
||||||
customHeaderCanonicalKey := http.CanonicalHeaderKey(fmt.Sprintf("%s%s", RemoteURLCustomHeaderCanonicalBaseKey, customHeaderCanonicalRealKey))
|
customHeaderCanonicalKey := http.CanonicalHeaderKey(fmt.Sprintf("%s%s", RemoteURLCustomHTTPHeaderCanonicalBaseKey, customHeaderCanonicalRealKey))
|
||||||
r.WithCustomHeader(customHeaderCanonicalKey, customHeaderValue)
|
r.WithCustomHTTPHeader(customHeaderCanonicalKey, customHeaderValue)
|
||||||
r.WithCustomHeader("Bar", "Bar")
|
r.WithCustomHTTPHeader("Bar", "Bar")
|
||||||
expected := map[string]string{
|
expected := map[string]string{
|
||||||
customHeaderCanonicalRealKey: customHeaderValue,
|
customHeaderCanonicalRealKey: customHeaderValue,
|
||||||
}
|
}
|
||||||
notExpected := map[string]string{
|
notExpected := map[string]string{
|
||||||
customHeaderCanonicalKey: customHeaderValue,
|
customHeaderCanonicalKey: customHeaderValue,
|
||||||
}
|
}
|
||||||
v := RemoteURLCustomHeaders(r)
|
v := RemoteURLCustomHTTPHeaders(r)
|
||||||
assert.Equal(t, expected, v)
|
assert.Equal(t, expected, v)
|
||||||
assert.NotEqual(t, notExpected, v)
|
assert.NotEqual(t, notExpected, v)
|
||||||
}
|
}
|
||||||
@@ -39,16 +39,16 @@ func TestWebhookURLCustomHeaders(t *testing.T) {
|
|||||||
// should find the custom header.
|
// should find the custom header.
|
||||||
customHeaderValue := "bar"
|
customHeaderValue := "bar"
|
||||||
customHeaderCanonicalRealKey := "Foo"
|
customHeaderCanonicalRealKey := "Foo"
|
||||||
customHeaderCanonicalKey := http.CanonicalHeaderKey(fmt.Sprintf("%s%s", WebhookURLCustomHeaderCanonicalBaseKey, customHeaderCanonicalRealKey))
|
customHeaderCanonicalKey := http.CanonicalHeaderKey(fmt.Sprintf("%s%s", WebhookURLCustomHTTPHeaderCanonicalBaseKey, customHeaderCanonicalRealKey))
|
||||||
r.WithCustomHeader(customHeaderCanonicalKey, customHeaderValue)
|
r.WithCustomHTTPHeader(customHeaderCanonicalKey, customHeaderValue)
|
||||||
r.WithCustomHeader("Bar", "Bar")
|
r.WithCustomHTTPHeader("Bar", "Bar")
|
||||||
expected := map[string]string{
|
expected := map[string]string{
|
||||||
customHeaderCanonicalRealKey: customHeaderValue,
|
customHeaderCanonicalRealKey: customHeaderValue,
|
||||||
}
|
}
|
||||||
notExpected := map[string]string{
|
notExpected := map[string]string{
|
||||||
customHeaderCanonicalKey: customHeaderValue,
|
customHeaderCanonicalKey: customHeaderValue,
|
||||||
}
|
}
|
||||||
v := WebhookURLCustomHeaders(r)
|
v := WebhookURLCustomHTTPHeaders(r)
|
||||||
assert.Equal(t, expected, v)
|
assert.Equal(t, expected, v)
|
||||||
assert.NotEqual(t, notExpected, v)
|
assert.NotEqual(t, notExpected, v)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,19 +75,19 @@ func (r Resource) Close() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithCustomHeader add a new custom header to the Resource.
|
// WithCustomHTTPHeader add a new custom header to the Resource.
|
||||||
// Given key should be in canonical format.
|
// Given key should be in canonical format.
|
||||||
func (r *Resource) WithCustomHeader(key string, value string) {
|
func (r *Resource) WithCustomHTTPHeader(key string, value string) {
|
||||||
const op string = "resource.Resource.WithCustomHeader"
|
const op string = "resource.Resource.WithCustomHTTPHeader"
|
||||||
// should already be in canonical format.
|
// should already be in canonical format.
|
||||||
canonicalKey := http.CanonicalHeaderKey(key)
|
canonicalKey := http.CanonicalHeaderKey(key)
|
||||||
if strings.Contains(canonicalKey, RemoteURLCustomHeaderCanonicalBaseKey) ||
|
if strings.Contains(canonicalKey, RemoteURLCustomHTTPHeaderCanonicalBaseKey) ||
|
||||||
strings.Contains(canonicalKey, WebhookURLCustomHeaderCanonicalBaseKey) {
|
strings.Contains(canonicalKey, WebhookURLCustomHTTPHeaderCanonicalBaseKey) {
|
||||||
r.customHeaders[canonicalKey] = value
|
r.customHeaders[canonicalKey] = value
|
||||||
r.logger.DebugfOp(op, "added '%s' with value '%s' to resource custom headers", canonicalKey, value)
|
r.logger.DebugfOp(op, "added '%s' with value '%s' to resource custom HTTP headers", canonicalKey, value)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
r.logger.DebugfOp(op, "skipping '%s' as it is not a custom header...", canonicalKey)
|
r.logger.DebugfOp(op, "skipping '%s' as it is not a custom HTTP header...", canonicalKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithArg add a new argument to the Resource.
|
// WithArg add a new argument to the Resource.
|
||||||
|
|||||||
@@ -31,19 +31,19 @@ type chromePrinter struct {
|
|||||||
// ChromePrinterOptions helps customizing the
|
// ChromePrinterOptions helps customizing the
|
||||||
// Google Chrome Printer behaviour.
|
// Google Chrome Printer behaviour.
|
||||||
type ChromePrinterOptions struct {
|
type ChromePrinterOptions struct {
|
||||||
WaitTimeout float64
|
WaitTimeout float64
|
||||||
WaitDelay float64
|
WaitDelay float64
|
||||||
HeaderHTML string
|
HeaderHTML string
|
||||||
FooterHTML string
|
FooterHTML string
|
||||||
PaperWidth float64
|
PaperWidth float64
|
||||||
PaperHeight float64
|
PaperHeight float64
|
||||||
MarginTop float64
|
MarginTop float64
|
||||||
MarginBottom float64
|
MarginBottom float64
|
||||||
MarginLeft float64
|
MarginLeft float64
|
||||||
MarginRight float64
|
MarginRight float64
|
||||||
Landscape bool
|
Landscape bool
|
||||||
RpccBufferSize int64
|
RpccBufferSize int64
|
||||||
CustomHeaders map[string]string
|
CustomHTTPHeaders map[string]string
|
||||||
}
|
}
|
||||||
|
|
||||||
// DefaultChromePrinterOptions returns the default
|
// DefaultChromePrinterOptions returns the default
|
||||||
@@ -51,19 +51,19 @@ type ChromePrinterOptions struct {
|
|||||||
func DefaultChromePrinterOptions(config conf.Config) ChromePrinterOptions {
|
func DefaultChromePrinterOptions(config conf.Config) ChromePrinterOptions {
|
||||||
const defaultHeaderFooterHTML string = "<html><head></head><body></body></html>"
|
const defaultHeaderFooterHTML string = "<html><head></head><body></body></html>"
|
||||||
return ChromePrinterOptions{
|
return ChromePrinterOptions{
|
||||||
WaitTimeout: config.DefaultWaitTimeout(),
|
WaitTimeout: config.DefaultWaitTimeout(),
|
||||||
WaitDelay: 0.0,
|
WaitDelay: 0.0,
|
||||||
HeaderHTML: defaultHeaderFooterHTML,
|
HeaderHTML: defaultHeaderFooterHTML,
|
||||||
FooterHTML: defaultHeaderFooterHTML,
|
FooterHTML: defaultHeaderFooterHTML,
|
||||||
PaperWidth: 8.27,
|
PaperWidth: 8.27,
|
||||||
PaperHeight: 11.7,
|
PaperHeight: 11.7,
|
||||||
MarginTop: 1.0,
|
MarginTop: 1.0,
|
||||||
MarginBottom: 1.0,
|
MarginBottom: 1.0,
|
||||||
MarginLeft: 1.0,
|
MarginLeft: 1.0,
|
||||||
MarginRight: 1.0,
|
MarginRight: 1.0,
|
||||||
Landscape: false,
|
Landscape: false,
|
||||||
RpccBufferSize: config.DefaultGoogleChromeRpccBufferSize(),
|
RpccBufferSize: config.DefaultGoogleChromeRpccBufferSize(),
|
||||||
CustomHeaders: make(map[string]string),
|
CustomHTTPHeaders: make(map[string]string),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,7 +148,7 @@ func (p chromePrinter) Print(destination string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// add custom headers (if any).
|
// add custom headers (if any).
|
||||||
if err := p.setCustomHeaders(ctx, targetClient); err != nil {
|
if err := p.setCustomHTTPHeaders(ctx, targetClient); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// listen for all events.
|
// listen for all events.
|
||||||
@@ -254,18 +254,18 @@ func (p chromePrinter) enableEvents(ctx context.Context, client *cdp.Client) err
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p chromePrinter) setCustomHeaders(ctx context.Context, client *cdp.Client) error {
|
func (p chromePrinter) setCustomHTTPHeaders(ctx context.Context, client *cdp.Client) error {
|
||||||
const op string = "printer.chromePrinter.setCustomHeaders"
|
const op string = "printer.chromePrinter.setCustomHTTPHeaders"
|
||||||
resolver := func() error {
|
resolver := func() error {
|
||||||
if len(p.opts.CustomHeaders) == 0 {
|
if len(p.opts.CustomHTTPHeaders) == 0 {
|
||||||
p.logger.DebugOp(op, "skipping custom headers as none have been provided...")
|
p.logger.DebugOp(op, "skipping custom HTTP headers as none have been provided...")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
customHeaders := make(map[string]string)
|
customHeaders := make(map[string]string)
|
||||||
// useless but for the logs.
|
// useless but for the logs.
|
||||||
for key, value := range p.opts.CustomHeaders {
|
for key, value := range p.opts.CustomHTTPHeaders {
|
||||||
customHeaders[key] = value
|
customHeaders[key] = value
|
||||||
p.logger.DebugfOp(op, "set '%s' to custom header '%s'", value, key)
|
p.logger.DebugfOp(op, "set '%s' to custom HTTP header '%s'", value, key)
|
||||||
}
|
}
|
||||||
b, err := json.Marshal(customHeaders)
|
b, err := json.Marshal(customHeaders)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user