Skip to content

Commit

Permalink
Merge pull request #28 from bcgov/file-validation-module
Browse files Browse the repository at this point in the history
File validation module
  • Loading branch information
mgtennant authored Aug 16, 2024
2 parents ad0ed53 + c92a0f7 commit 1f86f58
Show file tree
Hide file tree
Showing 11 changed files with 681 additions and 261 deletions.
2 changes: 2 additions & 0 deletions backend/src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import { NotificationsModule } from "./notifications/notifications.module";
import { AqiApiModule } from "./aqi_api/aqi_api.module";
import { FileParseValidateModule } from "./file_parse_and_validation/file_parse_and_validation.module";
import { FtpModule } from "./ftp/ftp.module";
import { FileValidationModule } from './file_validation/file_validation.module';

const DB_HOST = process.env.POSTGRES_HOST || "localhost";
const DB_USER = process.env.POSTGRES_USER || "postgres";
Expand Down Expand Up @@ -69,6 +70,7 @@ function getMiddlewares() {
FileParseValidateModule,
AqiApiModule,
FtpModule,
FileValidationModule,
],
controllers: [AppController, MetricsController, HealthController],
providers: [AppService, CronJobService],
Expand Down
10 changes: 5 additions & 5 deletions backend/src/file_submissions/file_submissions.module.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { Module } from '@nestjs/common';
import { FileSubmissionsService } from './file_submissions.service';
import { FileSubmissionsController } from './file_submissions.controller';
import { SanitizeService } from 'src/sanitize/sanitize.service';
import { Module } from "@nestjs/common";
import { FileSubmissionsService } from "./file_submissions.service";
import { FileSubmissionsController } from "./file_submissions.controller";
import { SanitizeService } from "src/sanitize/sanitize.service";

@Module({
controllers: [FileSubmissionsController],
providers: [FileSubmissionsService, SanitizeService],
imports: []
exports: [FileSubmissionsService],
})
export class FileSubmissionsModule {}
19 changes: 9 additions & 10 deletions backend/src/file_submissions/file_submissions.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ import { randomUUID } from "crypto";

@Injectable()
export class FileSubmissionsService {
constructor(
private prisma: PrismaService) {}
constructor(private prisma: PrismaService) {}

async create(body: any, file: Express.Multer.File) {
const createFileSubmissionDto = new CreateFileSubmissionDto();
Expand All @@ -25,14 +24,14 @@ export class FileSubmissionsService {

// Call to function that makes API call to save file in the S3 bucket via COMS
let comsSubmissionID = await saveToS3(body.token, file);
const path = require('path');
const extention = path.extname(file.originalname)
const baseName = path.basename(file.originalname, extention)
const newFileName = `${baseName}-${comsSubmissionID}${extention}`
const path = require("path");
const extention = path.extname(file.originalname);
const baseName = path.basename(file.originalname, extention);
const newFileName = `${baseName}-${comsSubmissionID}${extention}`;

// Creating file DTO and inserting it in the database with the file GUID from the S3 bucket
createFileSubmissionDto.submission_id = comsSubmissionID;
createFileSubmissionDto.filename = newFileName;;
createFileSubmissionDto.filename = newFileName;
createFileSubmissionDto.submission_date = new Date();
createFileSubmissionDto.submitter_user_id = body.userID;
createFileSubmissionDto.submission_status_code = (
Expand Down Expand Up @@ -252,20 +251,20 @@ async function saveToS3(token: any, file: Express.Multer.File) {
return fileGUID;
}

async function getFromS3(submission_id: string){
async function getFromS3(submission_id: string) {
const axios = require("axios");

let config = {
method: "get",
maxBodyLength: Infinity,
url: `${process.env.COMS_URI}/v1/object/${submission_id}`,
headers: {
"Accept": "application/json",
Accept: "application/json",
},
};

await axios.request(config).then((response) => {
console.log(response)
console.log(response);
});

return null;
Expand Down
10 changes: 10 additions & 0 deletions backend/src/file_validation/file_validation.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { Module } from "@nestjs/common";
import { FileValidationService } from "./file_validation.service";
import { NotificationsModule } from "src/notifications/notifications.module";

@Module({
imports: [NotificationsModule],
providers: [FileValidationService],
exports: [FileValidationService],
})
export class FileValidationModule {}
18 changes: 18 additions & 0 deletions backend/src/file_validation/file_validation.service.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { Test, TestingModule } from '@nestjs/testing';
import { FileValidationService } from './file_validation.service';

describe('FileValidationService', () => {
let service: FileValidationService;

beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [FileValidationService],
}).compile();

service = module.get<FileValidationService>(FileValidationService);
});

it('should be defined', () => {
expect(service).toBeDefined();
});
});
Loading

0 comments on commit 1f86f58

Please sign in to comment.