GalleryShare - Share a folder on your computer with a friend
Just yesterday, I was browsing my repositories on both my personal git server (git.starbeamrainbowlabs.com) and GitHub, and I stumbled across a program I wrote a while ago and then completely forgot about. It lets you share a directory of files and pictures via http. The picture above is from the wallpapers folder on my laptop here!
On further inspection, I discovered that it didn't require too much work to tidy it up for a release, so I spent an hour or two tidying up a few things, and here is version 0.1! My, it's been far too long since I've blogged about a release of something on here....
If you want to share things yourself, you can download the latest version over here.
In the future, I might add an optional graphical interface to make it even easier for people to use :D
It's actually quite simple. It's powered by the System.Net.HttpServer
class (so Windows users will either need to install mono or give it administrative privileges, which is a real shame) since I originally wrote it before I put the GlidingSquirrel together, though it does have it's own routing system of my own devising.
The pages it serves themselves are actually plain XML files, which are rendered with XSLT by the user's browser. This keeps the content that GalleryShare has to dynamically generate simple, and has the added benefit that it can be generated with C&csharp;'s System.Xml.XmlWriter
class. It's practically a browser-side templating system, which also has the added benefit of providing an XML-based API for others to consume.
Thumbnails are generated with C♯'s inbuilt System.Drawing
image handling functions - I did initially want to use Magick.NET (C♯ bindings for the awesome ImageMagick library) has the System.Drawing
classes appear to be a bit funny about the images they'll accept, but Linux support doesn't seem to have landed just yet.
Are you interested in a more in-depth look at how GalleryShare renders thumbnails, or outputs XML? Perhaps the XSLT has caught your eye. Let me know in the comments below!