Fix models and uploads for Mike's NAM

This commit is contained in:
Robin E. R. Davies
2025-02-20 08:19:09 -05:00
parent aac4162539
commit 2e5b63b907
5 changed files with 77 additions and 10 deletions
BIN
View File
Binary file not shown.
+16 -9
View File
@@ -681,19 +681,26 @@ Lv2PluginInfo::FindWritablePathProperties(PluginHost *lv2Host, const LilvPlugin
std::filesystem::path bundleDirectoryName = std::filesystem::path(bundle_path()).parent_path().filename();
std::filesystem::path legacyUploadPath = lv2Host->MapPath(bundleDirectoryName.string());
if (std::filesystem::exists(legacyUploadPath))
{
if (!std::filesystem::exists(legacyUploadPath / ".migrated"))
{
fileProperty->useLegacyModDirectory(true);
fileProperty->directory(bundleDirectoryName);
}
modFileTypes.rootDirectories().push_back(bundleDirectoryName.filename()); // push the private directory!
}
fileProperty->setModFileTypes(modFileTypes);
fileProperty->directory(bundleDirectoryName);
if (std::filesystem::exists(legacyUploadPath)
&& !std::filesystem::exists(legacyUploadPath / ".migrated"))
{
fileProperty->useLegacyModDirectory(true);
fileProperty->directory(bundleDirectoryName);
modFileTypes.rootDirectories().push_back(bundleDirectoryName.filename()); // push the private directory!
} else {
if (modFileTypes.rootDirectories().size() == 1)
{
std::string modName = modFileTypes.rootDirectories()[0];
auto modDirectory = modFileTypes.GetModDirectory(modName);
fileProperty->directory(modDirectory->pipedalPath);
}
}
fileProperties.push_back(fileProperty);
} else {
unsupportedPatchProperty = true;
+45 -1
View File
@@ -636,6 +636,40 @@ std::string GetFromAddress(const tcp::socket &socket)
s << socket.remote_endpoint().address().to_string() << ':' << socket.remote_endpoint().port();
return s.str();
}
static bool encoding_allowed(const std::string&acceptEncodingHeader,const std::string&encoding)
{
auto npos = acceptEncodingHeader.find(encoding);
if (npos == std::string::npos)
return false;
std::vector<std::string> encodings = split(acceptEncodingHeader, ',');
for (auto &e : encodings)
{
if (e.starts_with(encoding)) {
if (e.length() == encoding.length())
return true;
if (e[encoding.length()] == ';')
return true;
}
}
return false;
}
static bool can_use_gzip_encoding(
const std::string &acceptEncodingHeader,
const std::filesystem::path &filename,
std::filesystem::path *gzName)
{
if (!encoding_allowed(acceptEncodingHeader, "gzip"))
return false;
*gzName = filename.string() + ".gz";
if (std::filesystem::exists(*gzName)) {
return true;
}
return false;
}
namespace pipedal
{
@@ -1125,12 +1159,22 @@ namespace pipedal
}
}
std::string mimeType = mime_type(filename);
std::filesystem::path gzName;
if (can_use_gzip_encoding(req.get(HttpField::accept_encoding) ,filename,&gzName) )
{
filename = gzName;
res.set(HttpField::content_encoding,"gzip");
}
if (req.method() != HttpVerb::get)
{
ServerError(*con, "Unknown HTTP-Method");
return;
}
std::string mimeType = mime_type(filename);
file.open(filename.c_str(), std::ios::in);
if (!file)
+2
View File
@@ -71,6 +71,8 @@ public:
constexpr static const char* date = "Date";
constexpr static const char* referer = "Referer";
constexpr static const char * location = "Location";
constexpr static const char* accept_encoding = "Accept-Encoding";
constexpr static const char* content_encoding = "Content-Encoding";
};
Executable
+14
View File
@@ -0,0 +1,14 @@
#!/bin/bash
npm run build && \
#remove any existing .gz files.
if ls dist/assets/index*.js.gz 1> /dev/null 2>&1; then
rm dist/assets/index*.js.gz
fi
# generate a .gz file for each index*.js file
if ls dist/assets/index*.js 1> /dev/null 2>&1; then
for file in dist/assets/index*.js; do
# generate a .gz file
gzip -c $file > $file.gz
done
fi