Skip to content

Commit 1f00895

Browse files
committed
Added columns
New functions
1 parent dfe859d commit 1f00895

File tree

6 files changed

+37
-21
lines changed

6 files changed

+37
-21
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## [0.4.0] - 2020-11-04
8+
### Added
9+
- Changed the saving workflow cause file creation took to long
10+
- Fixed some minor issues
11+
712
## [0.3.2] - 2020-08-09
813
### Added
914
- Add update controller method

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/browser/browse.entity.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ export class Browse {
99
@Column()
1010
filename: string;
1111

12+
@Column()
13+
filename_return: string;
14+
1215
@CreateDateColumn({type: "date"})
1316
created_at: Date;
1417

src/browser/browser.controller.ts

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ export class BrowserController {
7373
let stream;
7474

7575
try {
76+
77+
if (!params) {
78+
throw "Incorrect params";
79+
}
7680

7781
fileEntry = await this.browserService.find(params.id);
7882

@@ -88,7 +92,7 @@ export class BrowserController {
8892
res.set({
8993
'Content-Type': 'application/pdf',
9094
'Content-Length': stream.length,
91-
'Content-Disposition': 'form-data;filename="' + fileEntry.filename +'"'
95+
'Content-Disposition': 'form-data;filename="' + fileEntry.filename_return +'.pdf"'
9296
});
9397

9498
stream.pipe(oppressor(req)).pipe(res);
@@ -131,7 +135,7 @@ export class BrowserController {
131135
res.status(HttpStatus.OK).json(
132136
{
133137
"id": fileEntry.id,
134-
"filename": fileEntry.filename,
138+
"filename": fileEntry.filename_return,
135139
"path": this.signature.sign(`${req.protocol}://${req.headers.host}/api/browse/${fileEntry.id}`),
136140
"created_at": fileEntry.created_at,
137141
"updated_at": fileEntry.updated_at,
@@ -174,9 +178,19 @@ export class BrowserController {
174178
@ApiTags("Create pdf documents")
175179
async create(@Body() createSession: CreateBrowserDto, @Res() res: Response, @Req() request:Request) {
176180

177-
let result = await this.browserService.savePage(createSession.url);
181+
// Create the database entry for the file
182+
let browseEntry: Browse = new Browse();
183+
184+
browseEntry.id = uuidv4();
185+
browseEntry.filename = browseEntry.id;
186+
browseEntry.filename_return = (createSession.filename ? createSession.filename.toString() : browseEntry.id.toString());
187+
browseEntry.autodelete = createSession.autodelete;
188+
189+
this.browserService.create(browseEntry);
190+
191+
let result = await this.browserService.savePage(createSession.url, browseEntry.id, createSession.filename ? createSession.filename : browseEntry.id );
178192
let resultUpload = false;
179-
let resultUploadFailed = false;
193+
let resultUploadFailed = false;
180194

181195
createSession.autodelete = createSession.autodelete == true;
182196
createSession.postBackWait = createSession.postBackWait == true;
@@ -206,21 +220,12 @@ export class BrowserController {
206220

207221
}
208222

209-
// Create the database entry for the file
210-
let browseEntry: Browse = new Browse();
211-
212-
browseEntry.id = result.id.toString();
213-
browseEntry.filename = (createSession.filename ? createSession.filename.toString() : result.id.toString()) + '.pdf';
214-
browseEntry.autodelete = resultUploadFailed || createSession.autodelete;
215-
216-
this.browserService.create(browseEntry);
217-
218223
res.status(HttpStatus.OK).json(new PdfResult({
219224
statusCode: HttpStatus.OK,
220225
requestUrl: createSession.url,
221226
downloadUrl: resultUpload == false ? this.signature.sign(`${request.protocol}://${request.headers.host}/api/browse/${result.id}`) : null,
222227
id: result.id,
223-
filename: browseEntry.filename,
228+
filename: browseEntry.filename_return,
224229
uploaded: resultUpload,
225230
waited: createSession.postBackWait,
226231
autodelete: createSession.autodelete

src/browser/browser.service.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export class BrowserService {
5656
* @param path
5757
* @param filename
5858
*/
59-
async savePage(path: String, filename?: String): Promise<CreateBrowserResponseDto> {
59+
async savePage(path: String, entityId:String, filename?: String): Promise<CreateBrowserResponseDto> {
6060

6161
const executablePath = this.configService.get<string>('browser');
6262
let settings:any = {headless:true, 'args':["--no-sandbox", "--disable-setuid-sandbox"]};
@@ -65,17 +65,18 @@ export class BrowserService {
6565
settings.executablePath = this.configService.get<string>('browser');
6666
}
6767

68-
filename ? filename : filename = uuidv4();
69-
const pathToFile = `storage/${filename}.pdf`;
68+
filename ? filename : filename = entityId;
69+
70+
const pathToFile = `storage/${entityId}.pdf`;
7071
const browser = await puppeteer.launch(settings);
7172
const page = await browser.newPage();
7273

73-
await page.goto(path, {waitUntil: 'networkidle2'});
74+
await page.goto(path, {waitUntil: 'networkidle0'});
7475
await page.pdf({path: pathToFile, format: 'A4'});
7576
await browser.close();
7677

7778
return new Promise((resolve, rejects) => {
78-
resolve(new CreateBrowserResponseDto(filename, path, pathToFile));
79+
resolve(new CreateBrowserResponseDto(entityId, path, pathToFile, filename));
7980
});
8081

8182
}

src/dto/create-browser.dto.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,12 @@ export class CreateBrowserResponseDto {
5454
url: String;
5555
id: String;
5656
storagePath: String;
57+
filename: String;
5758

58-
constructor(id:String, url:String, path: String){
59+
constructor(id:String, url:String, path: String, filename:String){
5960
this.id = id;
6061
this.url = url;
6162
this.storagePath = path;
63+
this.filename = filename;
6264
}
6365
}

0 commit comments

Comments
 (0)