using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; using Nancy; using Nancy.ModelBinding; using Sony.Filtr.Applications; using Sony.Filtr.Globalization; namespace Sony.Filtr.AdminAPI.Modules.Globalization { public class GlobalizationModule : BaseModule { public GlobalizationModule(GlobalizationHandler2 globalizationHandler, ApplicationInstanceManager applicationInstanceManager) : base(applicationInstanceManager) { Get["GetGlobalizationLanguages", "/globalization/Languages"] = parameters => { var allCultures = CultureInfo.GetCultures(CultureTypes.AllCultures); var cultureViewModels = allCultures.Select(c => new { DisplayName = c.DisplayName, Code = c.Name }).ToList(); return Response.AsJson(cultureViewModels); }; Get["GetGlobalizationKeys", "/globalization/Keys"] = parameters => { var keys = globalizationHandler.GetKeys(); return Response.AsJson(keys); }; Post["AddGlobalizationKey", "/globalization/Keys/"] = parameters => { string key = new StreamReader(Request.Body).ReadToEnd(); if (string.IsNullOrWhiteSpace(key)) return HttpStatusCode.BadRequest; var existingKey = globalizationHandler.GetKeys().FirstOrDefault(k => k.Key.Equals(key, StringComparison.InvariantCulture)); if (existingKey != null) return HttpStatusCode.BadRequest; var addedKey = globalizationHandler.AddKey(key); return Response.AsJson(addedKey); }; Delete["DeleteGlobalizationKey", "/globalization/Keys/{keyId}"] = parameters => { int keyId = int.Parse(parameters.keyId); var key = globalizationHandler.GetKey(keyId); globalizationHandler.DeleteKey(key); return HttpStatusCode.Accepted; }; Get["GetGlobalizationValues", "/globalization/{cultureValue}/Values"] = parameters => { string cultureValue = (string) parameters.cultureValue; if (string.IsNullOrWhiteSpace(cultureValue)) return HttpStatusCode.BadRequest; var culture = CultureInfo.GetCultureInfo(cultureValue); var globalization = globalizationHandler.GetTranslations(culture); return Response.AsJson(globalization); }; Post["AddGlobalizationValues", "/globalization/{cultureValue}/Values"] = parameters => { string cultureValue = (string) parameters.cultureValue; if (string.IsNullOrWhiteSpace(cultureValue)) return HttpStatusCode.BadRequest; var culture = CultureInfo.GetCultureInfo(cultureValue); var globalizationValues = this.Bind(); if (globalizationValues == null || globalizationValues.Values == null || !globalizationValues.Values.Any()) return HttpStatusCode.BadRequest; foreach (var globalizationValue in globalizationValues.Values) { var key = globalizationHandler.GetKey(globalizationValue.KeyId); globalizationHandler.SetTranslation(key, culture, globalizationValue.Value); } return Response.AsJson(globalizationHandler.GetTranslations(culture)); }; //Put["/globalization/{cultureValue}/Values/{keyId}"] = parameters => //{ // string cultureValue = (string)parameters.cultureValue; // if (string.IsNullOrWhiteSpace(cultureValue)) // return HttpStatusCode.BadRequest; // var culture = CultureInfo.GetCultureInfo(cultureValue); // int keyId = (int) parameters.keyId; // if (keyId == default(int)) // return HttpStatusCode.BadRequest; // var globalizationKey = globalizationHandler.GetKey(keyId); // string value = new StreamReader(Request.Body).ReadToEnd(); // if (string.IsNullOrWhiteSpace(value)) // return HttpStatusCode.BadRequest; // globalizationHandler.SetTranslation(globalizationKey, culture, value); // return Response.AsText(value); //}; } public class GlobalizationValues { public List Values { get; set; } } public class GlobalizationValue { public int KeyId { get; set; } public string Value { get; set; } } } }