예제 #1
0
 protected PomonaModule(IPomonaSessionFactory sessionFactory,
                        string modulePath            = "/",
                        IPomonaDataSource dataSource = null)
     : base(modulePath)
 {
     Initialize(sessionFactory, dataSource);
 }
예제 #2
0
 public PomonaSession(IPomonaSessionFactory factory,
                      IContainer container = null)
 {
     if (factory == null)
     {
         throw new ArgumentNullException(nameof(factory));
     }
     Factory        = factory;
     this.container = container;
 }
예제 #3
0
        private void Initialize(IPomonaSessionFactory sessionFactory, IPomonaDataSource dataSource)
        {
            if (sessionFactory == null)
            {
                sessionFactory = PomonaModuleConfigurationBinder.Current.GetFactory(this);
            }

            this.sessionFactory = sessionFactory;
            this.dataSource     = dataSource;

            // HACK TO SUPPORT NANCY TESTING (set a valid host name)
            Before += ctx =>
            {
                if (String.IsNullOrEmpty(ctx.Request.Url.HostName))
                {
                    ctx.Request.Url.HostName = "test";
                }
                return(null);
            };

            foreach (var route in this.sessionFactory.Routes.Children)
            {
                RegisterRoutesFor((ResourceType)route.ResultItemType);
            }

            // For root resource links!
            Register(Get, "/", x => ProcessRequest());

            Get[PomonaRouteMetadataProvider.JsonSchema, "/schemas"] = x => GetSchemas();

            var clientAssemblyFileName = $"/{TypeMapper.Filter.ClientMetadata.AssemblyName}.dll";

            Get[PomonaRouteMetadataProvider.ClientAssembly, clientAssemblyFileName] = x => GetClientLibrary();

            RegisterClientNugetPackageRoute();

            RegisterSerializationProvider(TypeMapper);
        }