After a bit of bit of refactoring I’ve now split azurecopy into a executable project as well as a core dll that does most of the work. The dll is now available via Nuget (search for azurecopy) for anyone to start using the library for their own projects.
An example of how to use the library can be taken directly from the azurecopy executable project (https://github.com/kpfaulkner/azurecopy/blob/master/azurecopycommand/Program.cs).
At its simplest, you need to make 2 instances BlobHandlers (AzureHandler, S3Hander, SkydriveHander or FileSystemHandler). Each of these handlers implement the IBlobHandler interface which provides basic functionality (read, write, list).
For example you can do:
var azureBlobHandler = new AzureHandler();
var s3BlobHandler = new S3Handler();
var blob = s3BlobHandler.ReadBlob( <my s3 url….>);
azureBlobHandler( <my azure url>, blob )
And that will simply copy from S3 to Azure.
The AzureCopy assembly uses an App.Config file to get its configuration. The client executable that is referencing this dll will need to provide the file. Eventually the configuration will be injected from the executable to the client lib, but due to recent refactorings that has not been done yet.