Libation/FileManager/UNTESTED/WebpageStorage.cs
2019-10-04 16:14:04 -04:00

69 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace FileManager
{
public static class WebpageStorage
{
// not customizable. don't move to config
private static string PagesDirectory { get; }
= new DirectoryInfo(Configuration.Instance.LibationFiles).CreateSubdirectory("Pages").FullName;
private static string BookDetailsDirectory { get; }
= new DirectoryInfo(PagesDirectory).CreateSubdirectory("Book Details").FullName;
public static string GetLibraryBatchName() => "Library_" + DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
public static string SavePageToBatch(string contents, string batchName, string extension)
{
var batch_dir = Path.Combine(PagesDirectory, batchName);
Directory.CreateDirectory(batch_dir);
var file = Path.Combine(batch_dir, batchName + '.' + extension.Trim('.'));
var filename = FileUtility.GetValidFilename(file);
File.WriteAllText(filename, contents);
return filename;
}
public static List<FileInfo> GetJsonFiles(DirectoryInfo libDir)
=> libDir == null
? new List<FileInfo>()
: Directory
.EnumerateFiles(libDir.FullName, "*.json")
.Select(f => new FileInfo(f))
.ToList();
public static DirectoryInfo GetMostRecentLibraryDir()
{
var dir = Directory
.EnumerateDirectories(PagesDirectory, "Library_*")
.OrderBy(a => a)
.LastOrDefault();
if (string.IsNullOrWhiteSpace(dir))
return null;
return new DirectoryInfo(dir);
}
public static FileInfo GetBookDetailHtmFileInfo(string productId)
{
var path = Path.Combine(BookDetailsDirectory, $"BookDetail-{productId}.htm");
return new FileInfo(path);
}
public static FileInfo GetBookDetailJsonFileInfo(string productId)
{
var path = Path.Combine(BookDetailsDirectory, $"BookDetail-{productId}.json");
return new FileInfo(path);
}
public static FileInfo SaveBookDetailsToHtm(string productId, string contents)
{
var fi = GetBookDetailHtmFileInfo(productId);
File.WriteAllText(fi.FullName, contents);
return fi;
}
}
}