Apachai.Apachai.FetchGeoInformations C# (CSharp) Method

FetchGeoInformations() private method

private FetchGeoInformations ( IManosContext ctx, string id ) : void
ctx IManosContext
id string
return void
        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);
            });
        }