This repository has been archived by the owner on Dec 29, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathfile_generator.js
77 lines (64 loc) · 1.78 KB
/
file_generator.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// Copyright 2019 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
const fs = require('fs');
const puppeteer = require('puppeteer');
const readline = require('readline');
module.exports = class FileGenerator {
constructor(config) {
}
initialize() {
return new Promise((resolve, reject) => {
puppeteer
.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox']
})
.then((browser) => {
this.browser = browser;
return this.browser;
})
.then(() => this.browser.newPage())
.then((page) => {
this.page = page;
return this.page;
})
.then(() => resolve(this))
.catch((error) => reject(error));
});
}
load(value) {
return this.page.goto(value, {waitUntil: 'networkidle2'});
}
cleanup() {
this.browser.close();
}
precapture(config, default_config) {
config = Object.assign({}, default_config, config);
if (!config.path) throw('File generator missing path argument.');
if (config.viewport) {
this.page.setViewport(config.viewport);
delete config.viewport;
}
return config;
}
pdf(config) {
config = this.precapture(config, {
printBackground: true
});
return this.page.pdf(config);
}
screenshot(config) {
config = this.precapture(config, {});
return this.page.screenshot(config);
}
}