public static object ProviderToJsonModel(Provider provider, Site site, string path, Fields fields = null, bool full = true) { if (provider == null) { return(null); } if (fields == null) { fields = Fields.All; } var providerId = new ProviderId(site?.Id, path, provider.Name); dynamic obj = new ExpandoObject(); // // name if (fields.Exists("name")) { obj.name = provider.Name; } // // id if (fields.Exists("id")) { obj.id = providerId.Uuid; } // // type if (fields.Exists("type")) { obj.type = provider.TypeName; } // // settings if (fields.Exists("settings")) { obj.settings = provider.Settings.Select(s => { return(new { name = s.Key, value = s.Value }); }); } // // url_rewrite if (fields.Exists("url_rewrite")) { obj.url_rewrite = RewriteHelper.ToJsonModelRef(site, path, fields.Filter("url_rewrite")); } return(Core.Environment.Hal.Apply(Defines.ProvidersResource.Guid, obj)); }
public static object SectionToJsonModel(Site site, string path, Fields fields = null, bool full = true) { if (fields == null) { fields = Fields.All; } RewriteId id = new RewriteId(site?.Id, path); var section = GetSection(site, path); dynamic obj = new ExpandoObject(); // // id if (fields.Exists("id")) { obj.id = id.Uuid; } // // scope if (fields.Exists("scope")) { obj.scope = site == null ? string.Empty : site.Name + path; } // // metadata if (fields.Exists("metadata")) { obj.metadata = ConfigurationUtility.MetadataToJson(section.IsLocallyStored, section.IsLocked, section.OverrideMode, section.OverrideModeEffective); } // // rewrite_before_cache if (fields.Exists("rewrite_before_cache")) { obj.rewrite_before_cache = section.RewriteBeforeCache; } // // url_rewrite if (fields.Exists("url_rewrite")) { obj.url_rewrite = RewriteHelper.ToJsonModelRef(site, path); } return(Core.Environment.Hal.Apply(Defines.OutboundRulesSectionResource.Guid, obj, full)); }
public static object SectionToJsonModel(Site site, string path, Fields fields = null, bool full = true) { if (fields == null) { fields = Fields.All; } RewriteId id = new RewriteId(site?.Id, path); var section = GetSection(site, path); dynamic obj = new ExpandoObject(); // // id if (fields.Exists("id")) { obj.id = id.Uuid; } // // scope if (fields.Exists("scope")) { obj.scope = site == null ? string.Empty : site.Name + path; } // // use_original_url_encoding if (fields.Exists("use_original_url_encoding") && section.Schema.HasAttribute(InboundRulesSection.UseOriginalUrlEncodingAttribute)) { obj.use_original_url_encoding = section.UseOriginalURLEncoding; } // // metadata if (fields.Exists("metadata")) { obj.metadata = ConfigurationUtility.MetadataToJson(section.IsLocallyStored, section.IsLocked, section.OverrideMode, section.OverrideModeEffective); } // // url_rewrite if (fields.Exists("url_rewrite")) { obj.url_rewrite = RewriteHelper.ToJsonModelRef(site, path); } return(Core.Environment.Hal.Apply(Defines.InboundRulesSectionResource.Guid, obj, full)); }
public static object ToJsonModel(Site site, string path) { RewriteId serverVariablesId = new RewriteId(site?.Id, path); var section = GetSection(site, path); var obj = new { id = serverVariablesId.Uuid, scope = site == null ? string.Empty : site.Name + path, entries = section.AllowedServerVariables.Select(v => v.Name), metadata = ConfigurationUtility.MetadataToJson(section.IsLocallyStored, section.IsLocked, section.OverrideMode, section.OverrideModeEffective), url_rewrite = RewriteHelper.ToJsonModelRef(site, path) }; return(Environment.Hal.Apply(Defines.ServerVariablesResource.Guid, obj)); }
public static object TagsToJsonModel(TagsElement tags, Site site, string path, Fields fields = null, bool full = true) { if (tags == null) { return(null); } if (fields == null) { fields = Fields.All; } dynamic obj = new ExpandoObject(); // // name if (fields.Exists("name")) { obj.name = tags.Name; } // // id if (fields.Exists("id")) { obj.id = new CustomTagsId(site?.Id, path, tags.Name).Uuid; } // // tags if (fields.Exists("tags")) { obj.tags = tags.Tags.Select(t => new { name = t.Name, attribute = t.Attribute }); } // // url_rewrite if (fields.Exists("url_rewrite")) { obj.url_rewrite = RewriteHelper.ToJsonModelRef(site, path, fields.Filter("url_rewrite")); } return(Core.Environment.Hal.Apply(Defines.CustomTagsResource.Guid, obj, full)); }
public static object MapToJsonModel(RewriteMap map, Site site, string path, Fields fields = null, bool full = true) { if (map == null) { return(null); } if (fields == null) { fields = Fields.All; } var rewriteMapId = new RewriteMapId(site?.Id, path, map.Name); var section = GetSection(site, path); dynamic obj = new ExpandoObject(); // // name if (fields.Exists("name")) { obj.name = map.Name; } // // id if (fields.Exists("id")) { obj.id = rewriteMapId.Uuid; } // // default_value if (fields.Exists("default_value")) { obj.default_value = map.DefaultValue; } // // ignore_case if (fields.Exists("ignore_case")) { obj.ignore_case = map.IgnoreCase; } // // mappings if (fields.Exists("mappings")) { obj.mappings = map.KeyValuePairCollection.Select(kvp => new { name = kvp.Key, value = kvp.Value }); } // // url_rewrite if (fields.Exists("url_rewrite")) { obj.url_rewrite = RewriteHelper.ToJsonModelRef(site, path, fields.Filter("url_rewrite")); } return(Core.Environment.Hal.Apply(Defines.RewriteMapsResource.Guid, obj, full)); }
public static object RuleToJsonModel(InboundRule rule, Site site, string path, Fields fields = null, bool full = true) { if (rule == null) { return(null); } if (fields == null) { fields = Fields.All; } var inboundRuleId = new InboundRuleId(site?.Id, path, rule.Name); dynamic obj = new ExpandoObject(); // // name if (fields.Exists("name")) { obj.name = rule.Name; } // // id if (fields.Exists("id")) { obj.id = inboundRuleId.Uuid; } // // priority if (fields.Exists("priority")) { obj.priority = GetSection(site, path).InboundRules.IndexOf(rule); } // // pattern if (fields.Exists("pattern")) { obj.pattern = rule.Match.Pattern; } // // pattern_syntax if (fields.Exists("pattern_syntax")) { obj.pattern_syntax = PatternSyntaxHelper.ToJsonModel(rule.PatternSyntax); } // // ignore_case if (fields.Exists("ignore_case")) { obj.ignore_case = rule.Match.IgnoreCase; } // // negate if (fields.Exists("negate")) { obj.negate = rule.Match.Negate; } // // stop_processing if (fields.Exists("stop_processing")) { obj.stop_processing = rule.StopProcessing; } // // response_cache_directive if (fields.Exists("response_cache_directive") && rule.Schema.HasAttribute(InboundRule.ResponseCacheDirectiveAttribute)) { obj.response_cache_directive = ResponseCacheDirectiveHelper.ToJsonModel(rule.ResponseCacheDirective); } // // condition_match_constraints if (fields.Exists("condition_match_constraints")) { obj.condition_match_constraints = LogicalGroupingHelper.ToJsonModel(rule.Conditions.LogicalGrouping); } // // track_all_captures if (fields.Exists("track_all_captures")) { obj.track_all_captures = rule.Conditions.TrackAllCaptures; } // // action if (fields.Exists("action")) { obj.action = new ExpandoObject(); dynamic action = obj.action; action.type = ActionTypeHelper.ToJsonModel(rule.Action.Type); action.url = rule.Action.Url; action.append_query_string = rule.Action.AppendQueryString; action.log_rewritten_url = rule.Action.LogRewrittenUrl; if (rule.Action.Type == ActionType.Redirect) { action.redirect_type = Enum.GetName(typeof(RedirectType), rule.Action.RedirectType).ToLowerInvariant(); } if (rule.Action.Type == ActionType.CustomResponse) { action.status_code = rule.Action.StatusCode; action.sub_status_code = rule.Action.SubStatusCode; action.description = rule.Action.StatusDescription; action.reason = rule.Action.StatusReason; } } // // server_variables if (fields.Exists("server_variables")) { obj.server_variables = rule.ServerVariableAssignments.Select(s => new { name = s.Name, value = s.Value, replace = s.Replace }); } // // conditions if (fields.Exists("conditions")) { obj.conditions = rule.Conditions.Select(c => new { input = c.Input, pattern = c.Pattern, negate = c.Negate, ignore_case = c.IgnoreCase, match_type = MatchTypeHelper.ToJsonModel(c.MatchType) }); } // // url_rewrite if (fields.Exists("url_rewrite")) { obj.url_rewrite = RewriteHelper.ToJsonModelRef(site, path, fields.Filter("url_rewrite")); } return(Core.Environment.Hal.Apply(Defines.InboundRulesResource.Guid, obj)); }
public static object RuleToJsonModel(OutboundRule rule, Site site, string path, Fields fields = null, bool full = true) { if (rule == null) { return(null); } if (fields == null) { fields = Fields.All; } var outboundRuleId = new OutboundRuleId(site?.Id, path, rule.Name); var section = GetSection(site, path); OutboundRuleMatchType matchType = GetMatchType(rule); dynamic obj = new ExpandoObject(); // // name if (fields.Exists("name")) { obj.name = rule.Name; } // // id if (fields.Exists("id")) { obj.id = outboundRuleId.Uuid; } // // priority if (fields.Exists("priority")) { obj.priority = GetSection(site, path).Rules.IndexOf(rule); } // precondition if (fields.Exists("precondition")) { var precondition = section.PreConditions.FirstOrDefault(pc => pc.Name.Equals(rule.PreCondition, StringComparison.OrdinalIgnoreCase)); obj.precondition = PreConditionToJsonModelRef(precondition, site, path, fields.Filter("precondition")); } // match_type if (fields.Exists("match_type")) { obj.match_type = OutboundMatchTypeHelper.ToJsonModel(matchType); } // server_variable if (fields.Exists("server_variable") && matchType == OutboundRuleMatchType.ServerVariable) { obj.server_variable = string.IsNullOrEmpty(rule.Match.ServerVariable) ? null : rule.Match.ServerVariable; } // tag_filters if (fields.Exists("tag_filters") && matchType == OutboundRuleMatchType.Response) { obj.tag_filters = CreateTagsModel(rule.Match.FilterByTags); TagsElement customTags = rule.Match.FilterByTags.HasFlag(FilterByTags.CustomTags) ? section.Tags.FirstOrDefault(t => t.Name.Equals(rule.Match.CustomTags, StringComparison.OrdinalIgnoreCase)) : null; obj.tag_filters.custom = customTags == null ? null : TagsToJsonModelRef(customTags, site, path, fields.Filter("tag_filters.custom")); } // // pattern if (fields.Exists("pattern")) { obj.pattern = rule.Match.Pattern; } // // pattern_syntax if (fields.Exists("pattern_syntax")) { obj.pattern_syntax = PatternSyntaxHelper.ToJsonModel(rule.PatternSyntax); } // // ignore_case if (fields.Exists("ignore_case")) { obj.ignore_case = rule.Match.IgnoreCase; } // // negate if (fields.Exists("negate")) { obj.negate = rule.Match.Negate; } // // stop_processing if (fields.Exists("stop_processing")) { obj.stop_processing = rule.StopProcessing; } // // enabled if (fields.Exists("enabled")) { obj.enabled = rule.Action.Type == OutboundActionType.Rewrite ? true : false; } // // rewrite_value if (fields.Exists("rewrite_value")) { obj.rewrite_value = rule.Action.RewriteValue; } // // replace_server_variable if (fields.Exists("replace_server_variable") && matchType == OutboundRuleMatchType.ServerVariable) { obj.replace_server_variable = rule.Action.ReplaceServerVariable; } // // condition_match_constraints if (fields.Exists("condition_match_constraints")) { obj.condition_match_constraints = LogicalGroupingHelper.ToJsonModel(rule.Conditions.LogicalGrouping); } // // track_all_captures if (fields.Exists("track_all_captures")) { obj.track_all_captures = rule.Conditions.TrackAllCaptures; } // // conditions if (fields.Exists("conditions")) { obj.conditions = rule.Conditions.Select(c => new { input = c.Input, pattern = c.Pattern, negate = c.Negate, ignore_case = c.IgnoreCase, match_type = MatchTypeHelper.ToJsonModel(c.MatchType) }); } // // url_rewrite if (fields.Exists("url_rewrite")) { obj.url_rewrite = RewriteHelper.ToJsonModelRef(site, path, fields.Filter("url_rewrite")); } return(Core.Environment.Hal.Apply(Defines.OutboundRulesResource.Guid, obj, full)); }
public static object PreConditionToJsonModel(PreCondition precondition, Site site, string path, Fields fields = null, bool full = true) { if (precondition == null) { return(null); } if (fields == null) { fields = Fields.All; } dynamic obj = new ExpandoObject(); // // name if (fields.Exists("name")) { obj.name = precondition.Name; } // // id if (fields.Exists("id")) { obj.id = new PreConditionId(site?.Id, path, precondition.Name).Uuid; } // // match if (fields.Exists("match")) { obj.match = precondition.LogicalGrouping == LogicalGrouping.MatchAll ? "all" : "any"; } // // pattern_syntax if (fields.Exists("pattern_syntax")) { obj.pattern_syntax = PatternSyntaxHelper.ToJsonModel(precondition.PatternSyntax); } // // requirements if (fields.Exists("requirements")) { obj.requirements = precondition.Conditions.Select(c => new { input = c.Input, pattern = c.Pattern, negate = c.Negate, ignore_case = c.IgnoreCase }); } // // url_rewrite if (fields.Exists("url_rewrite")) { obj.url_rewrite = RewriteHelper.ToJsonModelRef(site, path, fields.Filter("url_rewrite")); } return(Core.Environment.Hal.Apply(Defines.PreConditionsResource.Guid, obj, full)); }