private async Task <ModificationContext> GetModificationContext(HttpContext context, RequestPhase phase) { ModificationContext modificationContext = null; if (phase == RequestPhase.Request) { var requestBodyBuffer = new MemoryStream(); await context.Request.Body.CopyToAsync(requestBodyBuffer); requestBodyBuffer.Seek(0, SeekOrigin.Begin); return(new ModificationContext(requestBodyBuffer, context.Request.ContentType)); } if (phase == RequestPhase.Response) { var responseStreamBuffer = context.Response.Body; responseStreamBuffer.Position = 0; return(new ModificationContext(responseStreamBuffer, context.Response.ContentType)); } return(modificationContext); }
protected override void Execute(ModificationContext context, double level) { var viewRangeFactor = CrewBasicSkill.GetIncrementalSkillFactor(level); context.SetValue(this.EffectiveDomains[0], ViewRangeFactorSkillKey, viewRangeFactor); var crewTrainingLevelBuff = level / 10; context.SetValue(this.EffectiveDomains[0], CrewTrainingLevelBuffSkillKey, crewTrainingLevelBuff); }
protected override void Execute(ModificationContext context, double level) { var decrementalFactor = CrewBasicSkill.GetDecrementalSkillFactor(level); context.SetValue(this.EffectiveDomains[0], AccuracyFactorSkillKey, decrementalFactor); context.SetValue(this.EffectiveDomains[0], AimingTimeFactorSkillKey, decrementalFactor); context.SetValue(this.EffectiveDomains[0], ShotDispersionFactorSkillKey, decrementalFactor); var incrementalFactor = CrewBasicSkill.GetIncrementalSkillFactor(level); context.SetValue(this.EffectiveDomains[0], TurretRotationSpeedSkillKey, incrementalFactor); }
public async Task Register(ModificationContext modificationContext, IJSEngine engine) { string jsonContent = string.Empty; using (StreamReader reader = new StreamReader(modificationContext.ContentStream, GetEncoding(modificationContext.ContentType))) { jsonContent = await reader.ReadToEndAsync(); } _content = new StringBuilder(jsonContent); engine.InitializeJsonApi(_content); }
public async Task <IContentAbstraction> GetAbstractionProviderAsync(ModificationContext context) { var defaultAbstractionType = typeof(DefaultAbstraction); var providerType = _options.Value.ContentProviders.GetProviderType(GetMediaType(context.ContentType)); providerType = providerType ?? defaultAbstractionType; var instance = ActivateAbstraction(providerType); var isContentValidForType = await instance.ValidateAsync(context); return(isContentValidForType ? instance : ActivateAbstraction(defaultAbstractionType)); }
public async Task Register(ModificationContext modificationContext, IJSEngine engine) { string html = string.Empty; using (StreamReader reader = new StreamReader(modificationContext.ContentStream, GetEncoding(modificationContext.ContentType))) { html = await reader.ReadToEndAsync(); } if (!string.IsNullOrEmpty(html)) { _htmlDocument = new HtmlDocument(); _htmlDocument.LoadHtml(html); } engine.InitializeHtmlDocumentApi(_htmlDocument); }
public async Task <bool> ValidateAsync(ModificationContext context) { var content = await context.GetContentStringAsync(); if (content.Length == 0) { return(false); } var length = content.Length >= 100 ? 100 : content.Length; var htmlStart = content .TrimStart() .Substring(0, length) .Replace("\r", string.Empty) .Replace("\n", string.Empty); return(htmlStart.StartsWith("<")); }
public async Task Register(ModificationContext modificationContext, IJSEngine engine) { string content = string.Empty; var encoding = GetEncoding(modificationContext.ContentType); if (encoding == null) { return; } using (StreamReader reader = new StreamReader(modificationContext.ContentStream, encoding)) { content = await reader.ReadToEndAsync(); } _content = new StringBuilder(content); engine.InitializeContentApi(_content); }
public void Modify(XElement ssdl, IProviderInformation newProvider) { if (ssdl == null) { throw new ArgumentNullException("root"); } if (newProvider == null) { throw new ArgumentNullException("newProvider"); } IElementModifier appropriateModifier = null; XNamespace ns = ssdl.Name.Namespace; // Find the appropriate modifier if (ns == StorageSchemaV1Modifier.Namespace) { appropriateModifier = this.SchemaV1Modifier; } else if (ns == StorageSchemaV2Modifier.Namespace) { appropriateModifier = this.SchemaV2Modifier; } else if (ns == StorageSchemaV3Modifier.Namespace) { appropriateModifier = this.SchemaV3Modifier; } if (appropriateModifier == null) { throw new ArgumentException("", "root"); } IModificationContext context = new ModificationContext(); context.Set(ModificationContextHelper.NewProvider, newProvider); appropriateModifier.Modify(ssdl, context); }
public IList <object> Modify(ModificationContext context, IList <object> instances) { if (context.MemberType.IsCompoundType() || context.MemberType.IsValueType) { return(instances); } if (context.Member != null && (context.Member.IsDefined(typeof(RequiredAttribute)))) { return(instances); } var instancesToNull = (int)(instances.Count * _nullPercentage); for (var i = 0; i < instancesToNull; i++) { instances[i] = null; } instances.Randomize(context.Random); return(instances); }
protected override void Execute(ModificationContext context, double level) { // todo: fire fighting speed formular unknown }
protected override void Execute(ModificationContext context, double level) { // dummy }
protected override void Execute(ModificationContext context, double level) { var signalRangeFactor = CrewBasicSkill.GetIncrementalSkillFactor(level); context.SetValue(this.EffectiveDomains[0], SignalRangeFactorSkillKey, signalRangeFactor); }
protected override void Clear(ModificationContext context) { context.SetValue(this.EffectiveDomains[0], CrewTrainingLevelIncrementSkillKey, 0); }
protected override void Clear(ModificationContext context) { context.SetValue(this.EffectiveDomains[0], DistanceFactorPerLevelWhenDeviceWorkingSkillKey, 0); context.SetValue(this.EffectiveDomains[0], DistanceFactorPerLevelWhenDeviceDestroyedSkillKey, 0); }
protected override void Clear(ModificationContext context) { context.SetValue(this.EffectiveDomains[0], RadioDistanceFactorSkillKey, 0); }
protected override void Clear(ModificationContext context) { context.SetValue(this.EffectiveDomains[0], ShotDispersionDecrementFactorSkillKey, 0); }
protected override void Execute(ModificationContext context, double level) { context.SetValue(this.EffectiveDomains[0], ShotDispersionDecrementFactorSkillKey, this.Parameters["shotDispersionFactorPerLevel"] * level); }
protected override void Execute(ModificationContext context, double level) { context.SetValue(this.EffectiveDomains[0], CrewTrainingLevelIncrementSkillKey, this.Parameters["crewLevelIncrease"]); }
protected override void Clear(ModificationContext context) { context.SetValue(this.EffectiveDomains[0], SoftGroundResistanceFactorDecrementSkillKey, 0); context.SetValue(this.EffectiveDomains[0], MediumGroundResistanceFactorDecrementSkillKey, 0); }
protected override void Execute(ModificationContext context, double level) { context.SetValue(this.EffectiveDomains[0], SoftGroundResistanceFactorDecrementSkillKey, this.Parameters["softGroundResistanceFactorPerLevel"] * level); context.SetValue(this.EffectiveDomains[0], MediumGroundResistanceFactorDecrementSkillKey, this.Parameters["mediumGroundResistanceFactorPerLevel"] * level); }
public async Task <bool> ValidateAsync(ModificationContext context) { return(true); }
protected override void Clear(ModificationContext context) { }
protected override void Clear(ModificationContext context) { context.SetValue(this.EffectiveDomains[0], ChassisRotationSpeedIncrementFactor, 0); }
protected override void Execute(ModificationContext context, double level) { context.SetValue(this.EffectiveDomains[0], RadioDistanceFactorSkillKey, this.Parameters["radioDistanceFactorPerLevel"] * level); }
protected override void Execute(ModificationContext context, double level) { context.SetValue(this.EffectiveDomains[0], EngineFireChanceDecrementSkillKey, this.Parameters["fireStartingChanceFactor"]); }
protected override void Execute(ModificationContext context, double level) { context.SetValue(this.EffectiveDomains[0], DistanceFactorPerLevelWhenDeviceWorkingSkillKey, level * this.Parameters["distanceFactorPerLevelWhenDeviceWorking"]); context.SetValue(this.EffectiveDomains[0], DistanceFactorPerLevelWhenDeviceDestroyedSkillKey, level * this.Parameters["distanceFactorPerLevelWhenDeviceDestroyed"]); }
protected override void Clear(ModificationContext context) { context.SetValue(this.EffectiveDomains[0], EngineFireChanceDecrementSkillKey, 1.0); }
protected override void Execute(ModificationContext context, double level) { var terrainResistanceFactor = CrewBasicSkill.GetDecrementalSkillFactor(level); context.SetValue(this.EffectiveDomains[0], TerrainResistanceFactorSkillKey, terrainResistanceFactor); }
private async Task ExecuteRules(HttpContext context, IContentAbstraction contentAbstraction, ModificationContext modificationContext, IEnumerable <JavascriptModifier> modifiers) { using (var jsEngine = _serviceProvider.GetService <IJSEngine>()) { jsEngine.Start(); await contentAbstraction.Register(modificationContext, jsEngine); foreach (var modifier in modifiers) { try { bool executeModificationFunction = string.IsNullOrEmpty(modifier.DiscoveryFunction) || jsEngine.Evaluate <bool>(modifier.DiscoveryFunction) ? true : false; if (executeModificationFunction) { jsEngine.Execute(modifier.ModificationFunction); } } catch (Exception ex) { _logger.LogError($"Rule Exception: {ex}"); } } } }