reworked FileHandler for exyus
i spent a block of time today reworking the FileHandler
module for the exyus engine and i like the results.
first, i added flags to control whether DELETE
, POST
, or PUT (create)
are allowed. while this *could* be controlled by overriding the handler and adding custom traps for the methods, the flags make it easier to re-use the class i typical scenarios. not all, but typical.
second, i used a bit of reflection code to eliminate the need to declare a LocationUri
for each resource. now, if none is declared, the UriPattern
attribute is used for the LocationUri
, too. that just makes sense. in fact, i might not need to expose the LocationUri
anymore, but i'll hold off on that for now.
finally (resource-wise), i updated the class to fully support regular expressions for CacheUriTemplates
. this kinda closes the loop on the whole UriPattern, LocationUri, CacheUriTemplates
pattern. it's all leveraging RegEx and that's a good thing 'cuz that's another engine[grin]!
so a typical resource declaration now looks like this:
// example xmlfile handler [UriPattern(@"/users/(?<uid>[^/]*)(?<tail>\.xcs)")] public class userFile : FileHandler { public userFile() { this.AllowPost = false; this.AllowCreateOnPut = true; this.DocumentsFolder = "~/documents/users/"; this.StorageFolder = "~/storage/users/"; this.XHtmlNodes = new string[] { "//notes" }; this.LocalMaxAge = 600; this.ImmediateCacheUriTemplates = new string[] { "/users/", "/users/{uid}" }; } }
i did another major update to the engine by cleaning up my use of XSLT/XSD. that's in my next post.