public async Task<HttpResponseMessage> Manifest(string filename)
{
filename = Uri.UnescapeDataString(filename);
FileAndPages fileAndPages = null;
try
{
Storage.Batch(accessor => fileAndPages = accessor.GetFile(filename, 0, 0));
}
catch (FileNotFoundException)
{
Log.Debug("Signature manifest for a file '{0}' was not found", filename);
return Request.CreateResponse(HttpStatusCode.NotFound);
}
long? fileLength = fileAndPages.TotalSize;
using (var signatureRepository = new StorageSignatureRepository(Storage, filename))
{
var rdcManager = new LocalRdcManager(signatureRepository, Storage, SigGenerator);
var signatureManifest =
await rdcManager.GetSignatureManifestAsync(new DataInfo
{
Name = filename,
CreatedAt =
Convert.ToDateTime(fileAndPages.Metadata["Last-Modified"])
.ToUniversalTime()
});
signatureManifest.FileLength = fileLength ?? 0;
Log.Debug("Signature manifest for a file '{0}' was downloaded. Signatures count was {1}", filename,
signatureManifest.Signatures.Count);
return Request.CreateResponse(HttpStatusCode.OK, signatureManifest);
}
}