public void FetchGeoInformations(IManosContext ctx, string id)
{
if (string.IsNullOrEmpty (id))
ctx.Response.HandleEmptyJson ();
string json;
if (store.GetPictureGeo (id, out json)) {
ctx.Response.HandleJson (json);
return;
}
if (!File.Exists (Path.Combine (imgDirectory, id))) {
ctx.Response.HandleEmptyJson ();
return;
}
Task.Factory.StartNew (() => {
json = string.Empty;
JsonStringDictionary dict = new JsonStringDictionary ();
TagLibMetadata metadata = new TagLibMetadata (imgDirectory, id);
if (!metadata.IsValid) {
Log.Info (id + " is invalid file");
} else {
var coordinates = metadata.GeoCoordinates;
if (coordinates != null) {
var invCult = System.Globalization.CultureInfo.InvariantCulture;
dict["latitude"] = coordinates.Item1.ToString (invCult);
dict["longitude"] = coordinates.Item2.ToString (invCult);
json = dict.Json;
}
}
metadata.Close ();
store.SetPictureGeo (id, json);
ctx.Response.HandleJson (json);
});
}