1
0
mirror of https://gitlab.com/comunic/comunicapiv2 synced 2024-11-25 23:09:22 +00:00
comunicapiv2/src/utils/UserDataUtils.ts

55 lines
1.3 KiB
TypeScript
Raw Normal View History

2019-11-23 15:10:51 +00:00
import { conf } from "../helpers/ConfigHelper";
import { join } from "path";
import { existsSync, mkdirSync, writeFileSync } from "fs";
2019-11-23 15:10:51 +00:00
/**
* User data utilities
*
* @author Pierre HUBERT
*/
/**
* Get and returns the URL path to an userdata file
*
* @param uri Optionnal, defines the URI pointing on the file
* @param sysPath Optionnal, defines if system path is required instead of URL
* @return The full URL to the userdata file
*/
export function pathUserData(uri: string = "", sysPath: boolean = false) : string {
if(!sysPath)
2019-11-23 15:23:29 +00:00
return join(conf().storageURL, uri).replace(":/", "://");
2019-11-23 15:10:51 +00:00
else
return join(conf().storagePath, uri);
}
/**
* Prepare file creation
*
* @param userID Target user ID
* @param folderName The file directory (based on user_data folder)
*/
export function prepareFileCreation(userID: number, folderName: string) : string {
// Determine subfolder name
let subfolder : string;
if(userID != 0)
subfolder = join(folderName, userID.toString());
else
subfolder = folderName;
const subfolderPath = pathUserData(subfolder, true);
// Check if the path exists
if(!existsSync(subfolderPath)) {
// Create the directory
mkdirSync(subfolderPath, {
recursive: true
});
// Block directory listing
writeFileSync(join(subfolderPath, "index.html"), "");
}
return subfolder;
2019-11-23 15:10:51 +00:00
}