All files / controllers resources_controller.ts

33.96% Statements 18/53
22.72% Branches 5/22
28.57% Functions 2/7
33.96% Lines 18/53

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122                    1x                               1x                         1x                         1x                             1x                               1x 6x 6x     4x   2x 2x             1x 2x 2x 2x   2x 1x     1x                            
import { Request, Response } from 'express';
import { config } from '../config/config';
import fs from 'fs';
import path from 'path';
import { uploadResume, uploadImage, uploadFile } from '../services/resources_service';
import multer from 'multer';
import {CustomRequest} from "types/customRequest";
import {updateUserById} from "../services/users_service";
import {handleError} from "../utils/handle_error";
 
const createUserImageResource = async (req: CustomRequest, res: Response) => {
    try {
        const imageFilename = await uploadImage(req);
 
        const updatedUser = updateUserById(req.user.id, {imageFilename});
 
        return res.status(201).send(updatedUser);
    } catch (error) {
        if (error instanceof multer.MulterError || error instanceof TypeError) {
            return res.status(400).send({ message: error.message });
        } else {
            handleError(error, res);
        }
    }
};
 
const createImageResource = async (req: Request, res: Response) => {
    try {
        const imageFilename = await uploadImage(req);
        return res.status(201).send(imageFilename);
    } catch (error) {
        if (error instanceof multer.MulterError || error instanceof TypeError) {
            return res.status(400).send({ message: error.message });
        } else {
            handleError(error, res);
        }
    }
};
 
const createFileResource = async (req: Request, res: Response) => {
    try {
        const filename = await uploadFile(req);
        return res.status(201).send(filename);
    } catch (error) {
        if (error instanceof multer.MulterError || error instanceof TypeError) {
            return res.status(400).send({ message: error.message });
        } else {
            handleError(error, res);
        }
    }
};
 
const getImageResource = async (req: Request, res: Response) => {
    try {
        const { filename } = req.params;
        const imagePath = path.resolve(config.resources.imagesDirectoryPath(), filename);
 
        if (!fs.existsSync(imagePath)) {
            return res.status(404).send('Image not found');
        }
 
        res.sendFile(imagePath);
    } catch (error) {
        handleError(error, res);
    }
};
 
const getFileResource = async (req: Request, res: Response) => {
    try {
        const { filename } = req.params;
        const filePath = path.resolve(config.resources.filesDirectoryPath(), filename);
 
        if (!fs.existsSync(filePath)) {
            return res.status(404).send('File not found');
        }
 
        // res.sendFile(filePath);
        return res.download(filePath);
    } catch (error) {
        handleError(error, res);
    }
};
 
const createResumeResource = async (req: Request, res: Response) => {
    try {
        const resumeFilename = await uploadResume(req);
 
 
        return res.status(201).send(resumeFilename);
    } catch (error) {
        if (error instanceof multer.MulterError || error instanceof TypeError) {
            return res.status(400).send({ message: error.message });
        } else E{
            handleError(error, res);
        }
    }
};
 
const getResumeResource = async (req: Request, res: Response) => {
    try {
        const { filename } = req.params;
        const resumePath = path.resolve(config.resources.resumesDirectoryPath(), filename);
 
        if (!fs.existsSync(resumePath)) {
            return res.status(404).send('Resume not found');
        }
 
        res.sendFile(resumePath);
    } catch (error) {
        handleError(error, res);
    }
};
 
export default {
    createUserImageResource,
    createImageResource,
    createFileResource,
    getImageResource,
    getFileResource,
    getResumeResource,
    createResumeResource
};