public static void UpdateSettings()

in src/Microsoft.IIS.Administration.WebServer.DirectoryBrowsing/DirectoryBrowsingHelper.cs [21:102]


        public static void UpdateSettings(dynamic model, Site site, string path, string configPath = null)
        {
            if (model == null) {
                throw new ApiArgumentException("model");
            }

            var section = GetDirectoryBrowseSection(site, path, configPath);

            try {

                DynamicHelper.If<bool>((object)model.enabled, v => section.Enabled = v);

                if (model.allowed_attributes != null) {

                    Dictionary<string, bool> showDictionary = JsonConvert.DeserializeObject<Dictionary<string, bool>>(model.allowed_attributes.ToString());

                    if (showDictionary == null) {
                        throw new ApiArgumentException("allowed_attributes");
                    }

                    DirectoryBrowseShowFlags showFlags = section.ShowFlags;
                    if (showDictionary.ContainsKey("date")) {
                        if (showDictionary["date"]) {
                            showFlags |= DirectoryBrowseShowFlags.Date;
                        }
                        else {
                            showFlags &= ~DirectoryBrowseShowFlags.Date;
                        }
                    }
                    if (showDictionary.ContainsKey("time")) {
                        if (showDictionary["time"]) {
                            showFlags |= DirectoryBrowseShowFlags.Time;
                        }
                        else {
                            showFlags &= ~DirectoryBrowseShowFlags.Time;
                        }
                    }
                    if (showDictionary.ContainsKey("size")) {
                        if (showDictionary["size"]) {
                            showFlags |= DirectoryBrowseShowFlags.Size;
                        }
                        else {
                            showFlags &= ~DirectoryBrowseShowFlags.Size;
                        }
                    }
                    if (showDictionary.ContainsKey("extension")) {
                        if (showDictionary["extension"]) {
                            showFlags |= DirectoryBrowseShowFlags.Extension;
                        }
                        else {
                            showFlags &= ~DirectoryBrowseShowFlags.Extension;
                        }
                    }
                    if (showDictionary.ContainsKey("long_date")) {
                        if (showDictionary["long_date"]) {
                            showFlags |= DirectoryBrowseShowFlags.LongDate;
                        }
                        else {
                            showFlags &= ~DirectoryBrowseShowFlags.LongDate;
                        }
                    }

                    section.ShowFlags = showFlags;
                }


                if (model.metadata != null) {

                    DynamicHelper.If<OverrideMode>((object)model.metadata.override_mode, v => section.OverrideMode = v);
                }
            }
            catch (JsonSerializationException e) {
                throw new ApiArgumentException("allowed_attributes", e);
            }
            catch(FileLoadException e) {
                throw new LockedException(section.SectionPath, e);
            }
            catch (DirectoryNotFoundException e) {
                throw new ConfigScopeNotFoundException(e);
            }

        }