private Script(Context.MainDelegate entryPoint) { _entryPoint = entryPoint; _assemblyName = new AssemblyName(); _image = ImmutableArray <byte> .Empty; _previousSubmissions = Array.Empty <Script>(); }
/// <summary> /// Installs Symfony middleware /// </summary> public static IApplicationBuilder UseSymfony( this IApplicationBuilder app, string path = "Symfony", SymfonyConfig config = null ) { var symfonyRoot = System.IO.Path.GetFullPath(path); var fproviderB = new PhysicalFileProvider(symfonyRoot); if (config == null) { bootstrapConfig = SfConfigurationLoader .CreateDefault() .LoadFromSettings(app.ApplicationServices, path); } else { bootstrapConfig = config; } // setup URL rewriting as Symfony projects' servers operate from /public folder var options = new RewriteOptions() .AddRewrite( @"((.*\/)*([^\/\?&]*\.[^\/\?&]*))", bootstrapConfig.PublicDir + "/$1", skipRemainingRules: true ) .AddRewrite( @"^(?!" + bootstrapConfig.PublicDir + "/)(.*)$", bootstrapConfig.PublicDir, skipRemainingRules: true ); app.UseRewriter(options); // handling php files: app.UsePhp(new PhpRequestOptions(scriptAssemblyName: path) { RootPath = symfonyRoot, }); // symfony's static files app.UseStaticFiles(new StaticFileOptions() { FileProvider = fproviderB }); // bootstrap.php env loading overriding string bootstrapPath = "config\\bootstrap.php"; Context.MainDelegate md = new Context.MainDelegate(BootstrapMain); Context.DeclareScript(bootstrapPath, md); return(app); }
private Script(AssemblyName assemblyName, MemoryStream peStream, MemoryStream pdbStream, PhpCompilationFactory builder, IEnumerable <Script> previousSubmissions) { _assemblyName = assemblyName; // peStream.Position = 0; if (pdbStream != null) { pdbStream.Position = 0; } var ass = builder.LoadFromStream(assemblyName, peStream, pdbStream); if (ass == null) { throw new ArgumentException(); } peStream.Position = 0; _image = peStream.ToArray().ToImmutableArray(); foreach (var t in ass.GetTypes()) { var attr = t.GetTypeInfo().GetCustomAttribute <ScriptAttribute>(false); if (attr != null) { _script = t; _entryPoint = new Context.ScriptInfo(-1, attr.Path, t.GetTypeInfo()).Evaluate; break; } } if (_entryPoint == null) { throw new InvalidOperationException(); } // we have to "declare" the script, so its referenced symbols and compiled files are loaded into the context // this comes once after loading the assembly Context.AddScriptReference(ass); // find out highest dependent submissions, if any _previousSubmissions = CollectDependencies(ass, builder, previousSubmissions); }
private Script(Context.MainDelegate entryPoint) { _entryPoint = entryPoint; _assemblyName = new AssemblyName(); _image = ImmutableArray <byte> .Empty; }