IOWA 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CONTRIBUTORS +14 -0
- data/README.md +23 -0
- data/RELEASE_NOTES +77 -0
- data/ToDo +21 -0
- data/components/CRUDList/CRUDList.html +13 -0
- data/components/CRUDList/CRUDList.iwa +136 -0
- data/components/Content/Content.html +0 -0
- data/components/Content/Content.iwa +143 -0
- data/components/Content/example/README +9 -0
- data/components/Content/example/cgi/iowa.cgi +10 -0
- data/components/Content/example/demo.rb +30 -0
- data/components/Content/example/doc/index.html +7 -0
- data/components/Content/example/iowa/Content.html +1 -0
- data/components/Content/example/iowa/Content.iwa +1 -0
- data/components/Content/example/iowa/Main.html +6 -0
- data/components/Content/example/iowa/Main.iwa +3 -0
- data/components/Content/example/iowa/_content/body +7 -0
- data/components/Content/example/iowa/_content/body2 +3 -0
- data/components/Content/example/iowa/_content/title +2 -0
- data/components/Content/example/iowa/app.cnf +8 -0
- data/components/Content/example/iowa/app.rb +8 -0
- data/components/Content/example/webrick.rb +38 -0
- data/components/Include/Include.html +1 -0
- data/components/Include/Include.iwa +30 -0
- data/components/Include/readme +5 -0
- data/components/JumpTo/JumpTo.html +8 -0
- data/components/JumpTo/JumpTo.iwa +8 -0
- data/components/JumpTo/readme +6 -0
- data/doc/Architecture.txt +6 -0
- data/doc/History.txt +33 -0
- data/doc/StandardDispatcher.txt +19 -0
- data/examples/blog/README +1 -0
- data/examples/hello_world/README +17 -0
- data/examples/hello_world/htdocs/hello_world_html.html +24 -0
- data/examples/hello_world/htdocs/hello_world_ruby.html +41 -0
- data/examples/hello_world/iowa/HelloWorld.html +14 -0
- data/examples/hello_world/iowa/HelloWorld.iwa +31 -0
- data/examples/hello_world/iowa/Index.html +16 -0
- data/examples/hello_world/iowa/Index.iwa +5 -0
- data/examples/hello_world/iowa/iowa_hello_world.cnf +19 -0
- data/examples/hello_world/iowa/iowa_hello_world.rb +5 -0
- data/examples/hello_world/iowa/mapfile.cnf +6 -0
- data/examples/hw1/iowa/Main.html +1 -0
- data/examples/hw1/iowa/README +9 -0
- data/examples/hw1/iowa/hw.rb +4 -0
- data/examples/hw2/iowa/Main.html +10 -0
- data/examples/hw2/iowa/Main.iwa +7 -0
- data/examples/hw2/iowa/README +16 -0
- data/examples/hw2/iowa/hw.rb +4 -0
- data/examples/hw3/iowa/Main.html +11 -0
- data/examples/hw3/iowa/Main.iwa +7 -0
- data/examples/hw3/iowa/README +22 -0
- data/examples/hw3/iowa/hw.rb +4 -0
- data/examples/hw4/iowa/Greetings.html +10 -0
- data/examples/hw4/iowa/Greetings.iwa +9 -0
- data/examples/hw4/iowa/Main.html +12 -0
- data/examples/hw4/iowa/Main.iwa +10 -0
- data/examples/hw4/iowa/README +28 -0
- data/examples/hw4/iowa/hw.rb +4 -0
- data/examples/hw5/iowa/Footer.html +2 -0
- data/examples/hw5/iowa/Greetings.html +4 -0
- data/examples/hw5/iowa/Greetings.iwa +12 -0
- data/examples/hw5/iowa/Header.html +6 -0
- data/examples/hw5/iowa/Main.html +12 -0
- data/examples/hw5/iowa/Main.iwa +13 -0
- data/examples/hw5/iowa/README +16 -0
- data/examples/hw5/iowa/hw.rb +4 -0
- data/examples/template_server/iowa/Content.iwa +121 -0
- data/examples/template_server/iowa/Content.view +0 -0
- data/examples/template_server/iowa/DBContentDispatcher.rb +112 -0
- data/examples/template_server/iowa/DBContentPage.html +3 -0
- data/examples/template_server/iowa/DBContentPage.iwa +85 -0
- data/examples/template_server/iowa/app.cnf +13 -0
- data/examples/template_server/iowa/app.rb +5 -0
- data/ext/Classifier/classifier.c +256 -0
- data/ext/Classifier/ext_help.h +14 -0
- data/ext/Classifier/extconf.rb +5 -0
- data/ext/Classifier/tst.h +40 -0
- data/ext/Classifier/tst_cleanup.c +24 -0
- data/ext/Classifier/tst_delete.c +146 -0
- data/ext/Classifier/tst_grow_node_free_list.c +38 -0
- data/ext/Classifier/tst_init.c +41 -0
- data/ext/Classifier/tst_insert.c +192 -0
- data/ext/Classifier/tst_search.c +68 -0
- data/ext/http11/README +11 -0
- data/ext/http11/ext_help.h +15 -0
- data/ext/http11/extconf.rb +5 -0
- data/ext/http11/http11.c +534 -0
- data/ext/http11/http11.c.dif +422 -0
- data/ext/http11/http11_parser.c +1243 -0
- data/ext/http11/http11_parser.c.dif +193 -0
- data/ext/http11/http11_parser.h +49 -0
- data/ext/http11/http11_parser.h.dif +20 -0
- data/ext/http11/http11_parser.rl +192 -0
- data/ext/httpmachine/Makefile +149 -0
- data/ext/httpmachine/extconf.rb +33 -0
- data/ext/httpmachine/http.cpp +430 -0
- data/ext/httpmachine/http.h +156 -0
- data/ext/httpmachine/rubyhttp.cpp +165 -0
- data/external/mime-types/LICENCE +18 -0
- data/external/mime-types/README +46 -0
- data/external/mime-types/doc/classes/MIME.html +120 -0
- data/external/mime-types/doc/classes/MIME/InvalidContentType.html +119 -0
- data/external/mime-types/doc/classes/MIME/Type.html +866 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000010.html +22 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000011.html +18 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000012.html +19 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000013.html +18 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000014.html +26 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000015.html +33 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000016.html +27 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000017.html +35 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000018.html +34 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000019.html +24 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000020.html +38 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000021.html +22 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000022.html +18 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000023.html +18 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000024.html +18 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000025.html +18 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000026.html +18 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000027.html +18 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000028.html +18 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000029.html +18 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000030.html +19 -0
- data/external/mime-types/doc/classes/MIME/Type.src/M000031.html +26 -0
- data/external/mime-types/doc/classes/MIME/Types.html +459 -0
- data/external/mime-types/doc/classes/MIME/Types.src/M000001.html +19 -0
- data/external/mime-types/doc/classes/MIME/Types.src/M000002.html +32 -0
- data/external/mime-types/doc/classes/MIME/Types.src/M000003.html +21 -0
- data/external/mime-types/doc/classes/MIME/Types.src/M000004.html +18 -0
- data/external/mime-types/doc/classes/MIME/Types.src/M000005.html +26 -0
- data/external/mime-types/doc/classes/MIME/Types.src/M000006.html +18 -0
- data/external/mime-types/doc/classes/MIME/Types.src/M000007.html +18 -0
- data/external/mime-types/doc/classes/MIME/Types.src/M000008.html +18 -0
- data/external/mime-types/doc/classes/MIME/Types.src/M000009.html +18 -0
- data/external/mime-types/doc/created.rid +1 -0
- data/external/mime-types/doc/files/ChangeLog.html +320 -0
- data/external/mime-types/doc/files/README.html +145 -0
- data/external/mime-types/doc/files/lib/mime/types_rb.html +101 -0
- data/external/mime-types/doc/fr_class_index.html +30 -0
- data/external/mime-types/doc/fr_file_index.html +29 -0
- data/external/mime-types/doc/fr_method_index.html +57 -0
- data/external/mime-types/doc/index.html +24 -0
- data/external/mime-types/doc/rdoc-style.css +208 -0
- data/external/mime-types/lib/mime/types.rb +1558 -0
- data/external/package.rb +672 -0
- data/external/test_support.rb +95 -0
- data/external/tmail/README +7 -0
- data/external/tmail/tmail.rb +4 -0
- data/external/tmail/tmail/address.rb +222 -0
- data/external/tmail/tmail/base64.rb +52 -0
- data/external/tmail/tmail/compat.rb +39 -0
- data/external/tmail/tmail/config.rb +50 -0
- data/external/tmail/tmail/encode.rb +447 -0
- data/external/tmail/tmail/header.rb +895 -0
- data/external/tmail/tmail/info.rb +14 -0
- data/external/tmail/tmail/loader.rb +1 -0
- data/external/tmail/tmail/mail.rb +869 -0
- data/external/tmail/tmail/mailbox.rb +386 -0
- data/external/tmail/tmail/mbox.rb +1 -0
- data/external/tmail/tmail/net.rb +260 -0
- data/external/tmail/tmail/obsolete.rb +123 -0
- data/external/tmail/tmail/parser.rb +1475 -0
- data/external/tmail/tmail/parser.y +372 -0
- data/external/tmail/tmail/port.rb +356 -0
- data/external/tmail/tmail/scanner.rb +17 -0
- data/external/tmail/tmail/scanner_r.rb +243 -0
- data/external/tmail/tmail/stringio.rb +256 -0
- data/external/tmail/tmail/textutils.rb +197 -0
- data/external/tmail/tmail/tmail.rb +1 -0
- data/external/tmail/tmail/utils.rb +23 -0
- data/external/win32-process/README +133 -0
- data/external/win32-process/lib/win32/process.rb +561 -0
- data/external/windows-pr/README +145 -0
- data/external/windows-pr/doc/conversion_guide.txt +25 -0
- data/external/windows-pr/lib/windows/clipboard.rb +72 -0
- data/external/windows-pr/lib/windows/console.rb +323 -0
- data/external/windows-pr/lib/windows/device_io.rb +88 -0
- data/external/windows-pr/lib/windows/directory.rb +80 -0
- data/external/windows-pr/lib/windows/error.rb +313 -0
- data/external/windows-pr/lib/windows/eventlog.rb +120 -0
- data/external/windows-pr/lib/windows/file.rb +349 -0
- data/external/windows-pr/lib/windows/filesystem.rb +16 -0
- data/external/windows-pr/lib/windows/handle.rb +31 -0
- data/external/windows-pr/lib/windows/library.rb +76 -0
- data/external/windows-pr/lib/windows/limits.rb +13 -0
- data/external/windows-pr/lib/windows/memory.rb +117 -0
- data/external/windows-pr/lib/windows/msvcrt/buffer.rb +48 -0
- data/external/windows-pr/lib/windows/msvcrt/file.rb +18 -0
- data/external/windows-pr/lib/windows/msvcrt/string.rb +46 -0
- data/external/windows-pr/lib/windows/national.rb +557 -0
- data/external/windows-pr/lib/windows/path.rb +296 -0
- data/external/windows-pr/lib/windows/pipe.rb +77 -0
- data/external/windows-pr/lib/windows/process.rb +171 -0
- data/external/windows-pr/lib/windows/registry.rb +238 -0
- data/external/windows-pr/lib/windows/security.rb +89 -0
- data/external/windows-pr/lib/windows/service.rb +183 -0
- data/external/windows-pr/lib/windows/shell.rb +88 -0
- data/external/windows-pr/lib/windows/sound.rb +52 -0
- data/external/windows-pr/lib/windows/synchronize.rb +161 -0
- data/external/windows-pr/lib/windows/system_info.rb +70 -0
- data/external/windows-pr/lib/windows/unicode.rb +138 -0
- data/external/windows-pr/lib/windows/window.rb +22 -0
- data/iowa.gemspec +45 -0
- data/microprojects/DiskCache/LICENSE +28 -0
- data/microprojects/DiskCache/README +17 -0
- data/microprojects/DiskCache/external/package.rb +608 -0
- data/microprojects/DiskCache/external/test_support.rb +8 -0
- data/microprojects/DiskCache/setup.rb +22 -0
- data/microprojects/DiskCache/src/iowa/Association.rb +67 -0
- data/microprojects/DiskCache/src/iowa/Constants.rb +159 -0
- data/microprojects/DiskCache/src/iowa/DiskStore.rb +377 -0
- data/microprojects/DiskCache/src/iowa/Hash.rb +63 -0
- data/microprojects/DiskCache/src/iowa/Lockfile.rb +575 -0
- data/microprojects/DiskCache/src/iowa/Mutex.rb +142 -0
- data/microprojects/DiskCache/src/iowa/caches/DiskCache.rb +605 -0
- data/microprojects/DiskCache/src/iowa/caches/LRUCache.rb +287 -0
- data/microprojects/DiskCache/test/TC_DiskCache.rb +218 -0
- data/microprojects/LRUCache/LICENSE +28 -0
- data/microprojects/LRUCache/README +13 -0
- data/microprojects/LRUCache/external/package.rb +608 -0
- data/microprojects/LRUCache/external/test_support.rb +8 -0
- data/microprojects/LRUCache/setup.rb +22 -0
- data/microprojects/LRUCache/src/iowa/Association.rb +57 -0
- data/microprojects/LRUCache/src/iowa/Constants.rb +159 -0
- data/microprojects/LRUCache/src/iowa/Hash.rb +63 -0
- data/microprojects/LRUCache/src/iowa/Mutex.rb +129 -0
- data/microprojects/LRUCache/src/iowa/caches/LRUCache.rb +287 -0
- data/microprojects/LRUCache/test/TC_LRUCache.rb +65 -0
- data/microprojects/LinkedList/LICENSE +28 -0
- data/microprojects/LinkedList/README +13 -0
- data/microprojects/LinkedList/external/package.rb +608 -0
- data/microprojects/LinkedList/external/test_support.rb +8 -0
- data/microprojects/LinkedList/setup.rb +22 -0
- data/microprojects/LinkedList/src/iowa/LinkedList.rb +165 -0
- data/microprojects/LinkedList/test/TC_LinkedList.rb +42 -0
- data/microprojects/README +8 -0
- data/setup.rb +116 -0
- data/share/iowa/app_skeleton/Main.html +8 -0
- data/share/iowa/app_skeleton/Main.iwa +15 -0
- data/share/iowa/app_skeleton/app.cnf +48 -0
- data/share/iowa/app_skeleton/app.rb +58 -0
- data/share/iowa/app_skeleton/models/model.rb +49 -0
- data/src/ihc.rb +223 -0
- data/src/iowa.cgi +29 -0
- data/src/iowa.rb +637 -0
- data/src/iowa/AbstractCache.rb +96 -0
- data/src/iowa/AcceptLanguage.rb +76 -0
- data/src/iowa/Application.rb +928 -0
- data/src/iowa/ApplicationStats.rb +72 -0
- data/src/iowa/Association.rb +67 -0
- data/src/iowa/BindingsParser.rb +62 -0
- data/src/iowa/Breakpoint.rb +273 -0
- data/src/iowa/CSS.rb +564 -0
- data/src/iowa/Client.rb +192 -0
- data/src/iowa/Component.rb +405 -0
- data/src/iowa/ComponentProxy.rb +26 -0
- data/src/iowa/Config.rb +21 -0
- data/src/iowa/Constants.rb +226 -0
- data/src/iowa/Context.rb +218 -0
- data/src/iowa/ContextLogger.rb +16 -0
- data/src/iowa/DbPool.rb +222 -0
- data/src/iowa/DetachedComponent.rb +18 -0
- data/src/iowa/Dispatcher.rb +27 -0
- data/src/iowa/DynamicElements.rb +471 -0
- data/src/iowa/Element.rb +100 -0
- data/src/iowa/Email.rb +287 -0
- data/src/iowa/Extensions/AllExtensions.rb +4 -0
- data/src/iowa/Extensions/Class.rb +94 -0
- data/src/iowa/Extensions/Date.rb +88 -0
- data/src/iowa/Extensions/DateTime.rb +88 -0
- data/src/iowa/Extensions/Hash.rb +22 -0
- data/src/iowa/Extensions/Kernel.rb +6 -0
- data/src/iowa/Extensions/Numeric.rb +47 -0
- data/src/iowa/Extensions/Object.rb +11 -0
- data/src/iowa/Extensions/String.rb +60 -0
- data/src/iowa/Extensions/Time.rb +89 -0
- data/src/iowa/Extensions/TimeExtensions.rb +6 -0
- data/src/iowa/Form.rb +368 -0
- data/src/iowa/Hash.rb +85 -0
- data/src/iowa/ISAAC.rb +175 -0
- data/src/iowa/ImageSize.rb +279 -0
- data/src/iowa/IowaComponentMixins.rb +7 -0
- data/src/iowa/JSON-lexer.rb +296 -0
- data/src/iowa/JSON-objects.rb +201 -0
- data/src/iowa/KeyValueCoding.rb +91 -0
- data/src/iowa/LinkedList.rb +175 -0
- data/src/iowa/Loader.rb +22 -0
- data/src/iowa/Lockfile.rb +575 -0
- data/src/iowa/Logger.rb +74 -0
- data/src/iowa/Monkey.rb +20 -0
- data/src/iowa/Mutex.rb +142 -0
- data/src/iowa/Policy.rb +70 -0
- data/src/iowa/Pool.rb +243 -0
- data/src/iowa/PrettyException.rb +1091 -0
- data/src/iowa/Request.rb +244 -0
- data/src/iowa/Response.rb +133 -0
- data/src/iowa/Session.rb +354 -0
- data/src/iowa/SessionStats.rb +78 -0
- data/src/iowa/String.rb +65 -0
- data/src/iowa/Tag.rb +101 -0
- data/src/iowa/TemplateParser.rb +236 -0
- data/src/iowa/Util.rb +314 -0
- data/src/iowa/Webcache.rb +122 -0
- data/src/iowa/caches/BiLevelCache.rb +65 -0
- data/src/iowa/caches/ClassLimitedCache.rb +67 -0
- data/src/iowa/caches/DiskCache.rb +609 -0
- data/src/iowa/caches/DiskStore.rb +380 -0
- data/src/iowa/caches/LRUCache-alternative.rb +155 -0
- data/src/iowa/caches/LRUCache.rb +290 -0
- data/src/iowa/caches/SimpleLRUCache.rb +112 -0
- data/src/iowa/dispatchers/StandardDispatcher.rb +396 -0
- data/src/iowa/dispatchers/StandardDispatcherWithClassifier.rb +93 -0
- data/src/iowa/js/iowa_jsonrpc.js +381 -0
- data/src/iowa/js/jsonrpc.js +187 -0
- data/src/iowa/js/jsonrpc_async.js +261 -0
- data/src/iowa/loaders/DiskLoader.rb +50 -0
- data/src/iowa/loggers/Analogger.rb +54 -0
- data/src/iowa/loggers/AsyncLogger.rb +54 -0
- data/src/iowa/loggers/BitBucket.rb +38 -0
- data/src/iowa/loggers/Log4R.rb +13 -0
- data/src/iowa/loggers/Log4rLogger.rb +48 -0
- data/src/iowa/loggers/Logger.rb +29 -0
- data/src/iowa/loggers/RubyLogger.rb +9 -0
- data/src/iowa/pools/DBConnectionPool.rb +53 -0
- data/src/iowa/request/Apache.rb +90 -0
- data/src/iowa/request/EMHybrid.rb +59 -0
- data/src/iowa/request/ENV.rb +80 -0
- data/src/iowa/request/FCGI.rb +68 -0
- data/src/iowa/request/HTTPMachine.rb +75 -0
- data/src/iowa/request/Mongrel.rb +68 -0
- data/src/iowa/request/WEBrick.rb +48 -0
- data/src/iowa/version.rb +3 -0
- data/src/iowa/webrick/HTTPServer.rb +43 -0
- data/src/iowa/webrick/WEBrickServlet.rb +28 -0
- data/src/iowa_fcgi_handler.rb +101 -0
- data/src/iowa_httpmachine.rb +141 -0
- data/src/iowa_hybrid.rb +193 -0
- data/src/iowa_hybrid_cluster.rb +231 -0
- data/src/iowa_mongrel.rb +136 -0
- data/src/iowa_webrick.rb +194 -0
- data/src/iowa_webrick_legacy.rb +104 -0
- data/src/mod_iowa.rb +104 -0
- data/tcss.rb +61 -0
- data/test/README.windows +12 -0
- data/test/TC_AcceptLanguage.rb +61 -0
- data/test/TC_AppConfig.rb +43 -0
- data/test/TC_AppConfig/cgi/iowa.cgi +7 -0
- data/test/TC_AppConfig/doc/index.html +1 -0
- data/test/TC_AppConfig/iowa/Main.html +4 -0
- data/test/TC_AppConfig/iowa/Main.iwa +17 -0
- data/test/TC_AppConfig/iowa/README +1 -0
- data/test/TC_AppConfig/iowa/app.cnf +19 -0
- data/test/TC_AppConfig/iowa/app.rb +8 -0
- data/test/TC_AppConfig/webrick.rb +38 -0
- data/test/TC_Association.rb +29 -0
- data/test/TC_BiLevelCache.rb +71 -0
- data/test/TC_CGI_Adaptor.rb +55 -0
- data/test/TC_CGI_Adaptor/cgi/iowa.cgi +7 -0
- data/test/TC_CGI_Adaptor/doc/index.html +1 -0
- data/test/TC_CGI_Adaptor/iowa/Main.html +8 -0
- data/test/TC_CGI_Adaptor/iowa/Main.iwa +14 -0
- data/test/TC_CGI_Adaptor/iowa/README +1 -0
- data/test/TC_CGI_Adaptor/iowa/app.cnf +8 -0
- data/test/TC_CGI_Adaptor/iowa/app.rb +8 -0
- data/test/TC_CGI_Adaptor/webrick.rb +38 -0
- data/test/TC_CSS.rb +660 -0
- data/test/TC_ClassLimitedCache.rb +89 -0
- data/test/TC_Classifier.rb +80 -0
- data/test/TC_DbPool.rb +127 -0
- data/test/TC_DiskCache.rb +218 -0
- data/test/TC_Hybrid.rb +58 -0
- data/test/TC_Hybrid/doc/thing.txt +1 -0
- data/test/TC_Hybrid/iowa/Main.html +3 -0
- data/test/TC_Hybrid/iowa/Main.iwa +7 -0
- data/test/TC_Hybrid/iowa/NewPage.html +1 -0
- data/test/TC_Hybrid/iowa/NewPage.iwa +5 -0
- data/test/TC_Hybrid/iowa/app.cnf +10 -0
- data/test/TC_Hybrid/iowa/app.rb +5 -0
- data/test/TC_IOWAFunctions/doc/Ajax1.html +1 -0
- data/test/TC_IOWAFunctions/doc/Ajax1.iwa +1 -0
- data/test/TC_IOWAFunctions/doc/index.html +1 -0
- data/test/TC_IOWAFunctions/doc/js/dojo.js +9686 -0
- data/test/TC_IOWAFunctions/iowa/Ajax1.html +40 -0
- data/test/TC_IOWAFunctions/iowa/Ajax1.iwa +23 -0
- data/test/TC_IOWAFunctions/iowa/AjaxWidget.iwa +19 -0
- data/test/TC_IOWAFunctions/iowa/AjaxWidget.view +22 -0
- data/test/TC_IOWAFunctions/iowa/DanielTest.html +9 -0
- data/test/TC_IOWAFunctions/iowa/DanielTest.iwa +10 -0
- data/test/TC_IOWAFunctions/iowa/IntervalWidget.html +1 -0
- data/test/TC_IOWAFunctions/iowa/IntervalWidget.iwa +14 -0
- data/test/TC_IOWAFunctions/iowa/Main.html +1 -0
- data/test/TC_IOWAFunctions/iowa/NestedRepeat1.html +12 -0
- data/test/TC_IOWAFunctions/iowa/NestedRepeat1.iwa +24 -0
- data/test/TC_IOWAFunctions/iowa/RPCResponse.iwa +7 -0
- data/test/TC_IOWAFunctions/iowa/RPCResponse.view +1 -0
- data/test/TC_IOWAFunctions/iowa/Repeat1.iwa +31 -0
- data/test/TC_IOWAFunctions/iowa/Repeat1.view +9 -0
- data/test/TC_IOWAFunctions/iowa/Repeat2.iwa +32 -0
- data/test/TC_IOWAFunctions/iowa/Repeat2.view +11 -0
- data/test/TC_IOWAFunctions/iowa/Repeat3.iwa +44 -0
- data/test/TC_IOWAFunctions/iowa/Repeat3.view +18 -0
- data/test/TC_IOWAFunctions/iowa/TesCon.html +1 -0
- data/test/TC_IOWAFunctions/iowa/TesCon.iwa +5 -0
- data/test/TC_IOWAFunctions/iowa/app.cnf +19 -0
- data/test/TC_IOWAFunctions/iowa/app.rb +9 -0
- data/test/TC_IOWAFunctions/iowa/mapfile.cnf +8 -0
- data/test/TC_ISAAC.rb +52 -0
- data/test/TC_ImageSize.rb +84 -0
- data/test/TC_ImageSize/img.bmp +0 -0
- data/test/TC_ImageSize/img.gif +0 -0
- data/test/TC_ImageSize/img.jpg +0 -0
- data/test/TC_ImageSize/img.pcx +0 -0
- data/test/TC_ImageSize/img.pgm +7144 -0
- data/test/TC_ImageSize/img.png +0 -0
- data/test/TC_ImageSize/img.ppm +0 -0
- data/test/TC_ImageSize/img.psd +0 -0
- data/test/TC_ImageSize/img.tiff +0 -0
- data/test/TC_ImageSize/img.xbm +22 -0
- data/test/TC_KeyValueCoding.rb +35 -0
- data/test/TC_LRUCache.rb +296 -0
- data/test/TC_LinkedList.rb +46 -0
- data/test/TC_Lockfile.rb +106 -0
- data/test/TC_Minimal.rb +45 -0
- data/test/TC_Minimal/app.cnf +8 -0
- data/test/TC_Minimal/cgi-bin/iowa.cgi +11 -0
- data/test/TC_Minimal/doc/index.html +1 -0
- data/test/TC_Minimal/iowa/Main.html +1 -0
- data/test/TC_Minimal/iowa/README +1 -0
- data/test/TC_Minimal/iowa/app.rb +3 -0
- data/test/TC_Minimal/webrick.rb +38 -0
- data/test/TC_Mongrel.rb +58 -0
- data/test/TC_Mongrel/doc/thing.txt +1 -0
- data/test/TC_Mongrel/iowa/Main.html +3 -0
- data/test/TC_Mongrel/iowa/Main.iwa +7 -0
- data/test/TC_Mongrel/iowa/NewPage.html +1 -0
- data/test/TC_Mongrel/iowa/NewPage.iwa +5 -0
- data/test/TC_Mongrel/iowa/app.cnf +10 -0
- data/test/TC_Mongrel/iowa/app.rb +5 -0
- data/test/TC_NoSubclass.rb +56 -0
- data/test/TC_NoSubclass/cgi/iowa.cgi +7 -0
- data/test/TC_NoSubclass/doc/index.html +1 -0
- data/test/TC_NoSubclass/iowa/Main.html +8 -0
- data/test/TC_NoSubclass/iowa/Main.iwa +14 -0
- data/test/TC_NoSubclass/iowa/README +1 -0
- data/test/TC_NoSubclass/iowa/app.cnf +8 -0
- data/test/TC_NoSubclass/iowa/app.rb +5 -0
- data/test/TC_NoSubclass/webrick.rb +38 -0
- data/test/TC_Pool.rb +139 -0
- data/test/TC_RenderedCache/doc/thing.txt +1 -0
- data/test/TC_RenderedCache/iowa/BigPage.html +1 -0
- data/test/TC_RenderedCache/iowa/BigPage.iwa +12 -0
- data/test/TC_RenderedCache/iowa/Main.html +3 -0
- data/test/TC_RenderedCache/iowa/Main.iwa +7 -0
- data/test/TC_RenderedCache/iowa/NewPage.html +1 -0
- data/test/TC_RenderedCache/iowa/NewPage.iwa +11 -0
- data/test/TC_RenderedCache/iowa/app.cnf +13 -0
- data/test/TC_RenderedCache/iowa/app.rb +5 -0
- data/test/TC_RenderedCache/iowa/mapfile.map +4 -0
- data/test/TC_ResourceURL.rb +73 -0
- data/test/TC_ResourceURL/iowa/Main.html +2 -0
- data/test/TC_ResourceURL/iowa/Main.iwa +10 -0
- data/test/TC_ResourceURL/iowa/app.cnf +10 -0
- data/test/TC_ResourceURL/iowa/app.rb +5 -0
- data/test/TC_SimpleDetached.rb +41 -0
- data/test/TC_StandardDispatcher.rb +362 -0
- data/test/TC_StandardDispatcherWithClassifier.rb +358 -0
- data/test/TC_String.rb +24 -0
- data/test/TC_Tag.rb +41 -0
- data/test/TC_Webrick.rb +56 -0
- data/test/TC_Webrick/doc/thing.txt +1 -0
- data/test/TC_Webrick/iowa/Main.html +3 -0
- data/test/TC_Webrick/iowa/Main.iwa +7 -0
- data/test/TC_Webrick/iowa/NewPage.html +1 -0
- data/test/TC_Webrick/iowa/NewPage.iwa +5 -0
- data/test/TC_Webrick/iowa/app.cnf +10 -0
- data/test/TC_Webrick/iowa/app.rb +5 -0
- data/test/tc_template.rb +15 -0
- data/test/tests.conf +19 -0
- data/utils/CVS/Entries +3 -0
- data/utils/CVS/Repository +1 -0
- data/utils/CVS/Root +1 -0
- data/utils/QuickCert-1.0.2.tar.gz +0 -0
- data/utils/QuickCert-1.0.2/InstalledFiles +7 -0
- data/utils/QuickCert-1.0.2/MANIFEST +10 -0
- data/utils/QuickCert-1.0.2/Makefile +15 -0
- data/utils/QuickCert-1.0.2/README +56 -0
- data/utils/QuickCert-1.0.2/bin/QuickCert +355 -0
- data/utils/QuickCert-1.0.2/config.save +12 -0
- data/utils/QuickCert-1.0.2/data/examples/ruby/QuickCert/README +60 -0
- data/utils/QuickCert-1.0.2/data/examples/ruby/QuickCert/drbssl_c.rb +26 -0
- data/utils/QuickCert-1.0.2/data/examples/ruby/QuickCert/drbssl_s.rb +35 -0
- data/utils/QuickCert-1.0.2/data/examples/ruby/QuickCert/qc_config +21 -0
- data/utils/QuickCert-1.0.2/lib/QuickCert/defaults.rb +28 -0
- data/utils/QuickCert-1.0.2/setup.rb +1312 -0
- data/utils/iowa_apps +422 -0
- data/utils/smtp_sink.rb +9 -0
- data/utils/startup_template.cnf +27 -0
- data/utils/startup_template.rb +73 -0
- metadata +551 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Hello World!
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
012345678901234567890123456789012345678901234567890123456789012345678901
|
|
2
|
+
ruby hw.rb -r webrick
|
|
3
|
+
|
|
4
|
+
This is the simplest IOWA application. It consists of a ruby file that
|
|
5
|
+
requires the main iowa library, and then calls Iowa.run, and a single
|
|
6
|
+
view file, Main.html. The application will be listening on 127.0.0.1,
|
|
7
|
+
port 2001.
|
|
8
|
+
|
|
9
|
+
IOWA applications will pass a request to the Main component by default.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
012345678901234567890123456789012345678901234567890123456789012345678901
|
|
2
|
+
ruby hw.rb -r webrick
|
|
3
|
+
|
|
4
|
+
In this example, we've added some HTML structure to the view, and have
|
|
5
|
+
inserted some dynamic content. The current date and time is now
|
|
6
|
+
displayed on every request.
|
|
7
|
+
|
|
8
|
+
In IOWA applications, code is not inserted directly into a view file.
|
|
9
|
+
Rather, methods can be called from the controller, and the return
|
|
10
|
+
value of the method will be inserted into the output of the view.
|
|
11
|
+
|
|
12
|
+
The syntax for this is to use a special tag:
|
|
13
|
+
|
|
14
|
+
<dynamicstring oid="foo" />
|
|
15
|
+
|
|
16
|
+
The value of the oid attribute is the name of the method to call.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
012345678901234567890123456789012345678901234567890123456789012345678901
|
|
2
|
+
ruby hw.rb -r webrick
|
|
3
|
+
|
|
4
|
+
Notice that the tag to include dynamic content from the last example:
|
|
5
|
+
|
|
6
|
+
<dynamicstring oid="foo" />
|
|
7
|
+
|
|
8
|
+
is missing from this one. Instead, in its place, is "@foo".
|
|
9
|
+
|
|
10
|
+
Because the act of invoking a method in the controller to insert dynamic
|
|
11
|
+
content is so common, IOWA provides a syntactic shortcut for that.
|
|
12
|
+
|
|
13
|
+
Any alphanumeric sequence of characters which is preceded with an
|
|
14
|
+
at (@) sign is treated as a DynamicString tag for that sequence of
|
|
15
|
+
characters. Dot notation for chaining method calls IS supported.
|
|
16
|
+
|
|
17
|
+
The other thing that was added to this example is a dynamic link. When
|
|
18
|
+
an <a> tag has an oid attribute, the value of that attribute names the
|
|
19
|
+
method that will be called when that link is clicked on. The reload()
|
|
20
|
+
method is a standard one that exists for all components, and does
|
|
21
|
+
nothing but allow the current page to be reloaded.
|
|
22
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<body>
|
|
2
|
+
<html>
|
|
3
|
+
<title>Hello World!</title>
|
|
4
|
+
</html>
|
|
5
|
+
|
|
6
|
+
<body>
|
|
7
|
+
<h1>Hello World!</h1>
|
|
8
|
+
<form oid="got_name">
|
|
9
|
+
What is your name? <input type="text" oid="yourname" size="20" maxlength="45" /> <input type="submit" oid="got_name" value="Tell Us Your Name" />
|
|
10
|
+
</form>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
012345678901234567890123456789012345678901234567890123456789012345678901
|
|
2
|
+
ruby hw.rb -r webrick
|
|
3
|
+
|
|
4
|
+
This example introduces is the use of a form, capturing form data, and
|
|
5
|
+
passing control and data to another component.
|
|
6
|
+
|
|
7
|
+
One of the things about IOWA that makes application development very
|
|
8
|
+
easy is that is provides implicit sessions, and it takes care of all
|
|
9
|
+
of the details involved moving data to and from forms and making it
|
|
10
|
+
transparently accessible to the code.
|
|
11
|
+
|
|
12
|
+
In this example, the Form is given an oid that represents the default
|
|
13
|
+
method to call when the form is submitted (if a submit button is no
|
|
14
|
+
pressed). The Input is also given an oid. The oid contains the
|
|
15
|
+
accessor to use to get/set the input field value. Finally there is
|
|
16
|
+
an Input tag with a type of submit. The oid, as with the Form tag,
|
|
17
|
+
contains the method to call when the button is pressed.
|
|
18
|
+
|
|
19
|
+
When execution moves to the got_name() method in the controller,
|
|
20
|
+
IOWA will have made sure that the value in the form has been placed
|
|
21
|
+
into the @yourname variable.
|
|
22
|
+
|
|
23
|
+
The got_name method calls page_named to return a new instance of a
|
|
24
|
+
component, Greetings. It assigns the @yourname variable that came
|
|
25
|
+
from the form to an accessor in the Greetings object, and then yields
|
|
26
|
+
the object. When an action yields another component, that component
|
|
27
|
+
is passed control of the request/response cycle; the response that is
|
|
28
|
+
passed back to the browser will be generated by the yielded component.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<body>
|
|
2
|
+
<html>
|
|
3
|
+
<title>Hello World!</title>
|
|
4
|
+
</html>
|
|
5
|
+
|
|
6
|
+
<body>
|
|
7
|
+
<h1>Hello World!</h1>
|
|
8
|
+
<form oid="got_name">
|
|
9
|
+
What is your name? <input type="text" oid="yourname" size="20" maxlength="45" /> <input type="submit" oid="got_name" value="Tell Us Your Name" />
|
|
10
|
+
</form>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
012345678901234567890123456789012345678901234567890123456789012345678901
|
|
2
|
+
ruby hw.rb -r webrick
|
|
3
|
+
|
|
4
|
+
Remember that IOWA uses a component architecture. And one of the best
|
|
5
|
+
things about components is that they are easy to reuse. In this
|
|
6
|
+
example, instead of repeating the same pieces of header and footer
|
|
7
|
+
HTML across more than one view file, those pieces have been extracted
|
|
8
|
+
into their own components, Header and Footer.
|
|
9
|
+
|
|
10
|
+
A little bit of new Ruby syntax is needed, here, in order to ensure
|
|
11
|
+
that the needed components have been loaded by IOWA before they are
|
|
12
|
+
needed. Think of 'import' as a 'require' statement for components.
|
|
13
|
+
|
|
14
|
+
Then, to actually use the component, just write a tag using the
|
|
15
|
+
component name as the tag, and give it an oid. IOWA uses the
|
|
16
|
+
existence of oid attribute to signal to it that the tag is dynamic.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
class Content < Iowa::DetachedComponent
|
|
2
|
+
|
|
3
|
+
# This component displays no content of its own. Rather, it retrieves content
|
|
4
|
+
# from a content repository, called a library. The retrieved content is
|
|
5
|
+
# treated like an IOWA template and is parsed with the TemplateParser.
|
|
6
|
+
# The parsed template is ccahed, and is used as the template for the component.
|
|
7
|
+
# Because the template content is parsed with the TemplateParser, that content
|
|
8
|
+
# may also have Content tags in it. There is no limit to the depth of embedding
|
|
9
|
+
# which will be traversed.
|
|
10
|
+
|
|
11
|
+
@mutex = Iowa::Mutex.new
|
|
12
|
+
Clibrary = 'library'.freeze unless const_defined?(:Clibrary)
|
|
13
|
+
Cid = 'id'.freeze unless const_defined?(:Cid)
|
|
14
|
+
Cpreview = 'preview'.freeze unless const_defined?(:Cpreview)
|
|
15
|
+
|
|
16
|
+
attr_accessor :content, :predecessors
|
|
17
|
+
|
|
18
|
+
def Content.default_cache_size; 100; end
|
|
19
|
+
def Content.default_cache_ttl; nil; end
|
|
20
|
+
|
|
21
|
+
class ConfObj_ < Hash
|
|
22
|
+
def library; @library; end
|
|
23
|
+
def library=(val); self[val] ||= {}; @library = val; end
|
|
24
|
+
|
|
25
|
+
def query; self[@library][:query]; end
|
|
26
|
+
def query=(val); self[@library][:query] = val; end
|
|
27
|
+
def retrieve; self[@library][:retrieve]; end
|
|
28
|
+
def retrieve=(val); self[@library][:retrieve] = val; end
|
|
29
|
+
|
|
30
|
+
def cache; self[@library][:cache]; end
|
|
31
|
+
def cache=(args)
|
|
32
|
+
#self[@library][:cache] = Util.get_cache(args,{Cmaxsize => Content.default_cache_size, Cttl => Content.default_cache_ttl})
|
|
33
|
+
self[@library][:cache] = Util.get_cache(args)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
@confobj = ConfObj_.new
|
|
38
|
+
|
|
39
|
+
# The Content component can serve content from multiple libraries
|
|
40
|
+
# at the same time. To set or reference a configuration item for
|
|
41
|
+
# a given library, pass it's name as an argument to Content.config.
|
|
42
|
+
# i.e. Content.config('generaldb').cache = Hash.new
|
|
43
|
+
#
|
|
44
|
+
def Content.config(library = C_default)
|
|
45
|
+
if block_given?
|
|
46
|
+
@mutex.synchronize do
|
|
47
|
+
begin
|
|
48
|
+
oldlib = @confobj.library
|
|
49
|
+
@confobj.library = library
|
|
50
|
+
yield @confobj
|
|
51
|
+
ensure
|
|
52
|
+
@confobj.library = oldlib
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
else
|
|
56
|
+
@confobj.library = library
|
|
57
|
+
@confobj
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Default cache is a basic LRUCache.
|
|
62
|
+
Content.config.cache = [:LRUCache, {:maxsize => 100}]
|
|
63
|
+
|
|
64
|
+
# Default query mechanism is flatfile based, looking in
|
|
65
|
+
# #{Iowa.app.root_path}/_content
|
|
66
|
+
Content.config.query = Proc.new do |name, attributes|
|
|
67
|
+
File.stat(File.join(Iowa.app.root_path,C_content,name)).mtime
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
Content.config.retrieve = Proc.new do |name, attributes|
|
|
71
|
+
r = {}
|
|
72
|
+
name.gsub!(/[\\\/]/,File::SEPARATOR)
|
|
73
|
+
filename = File.join(Iowa.app.root_path,C_content,name)
|
|
74
|
+
# Race condition here....
|
|
75
|
+
r[Cchecksum] = r[Clast_modification] = File.stat(filename).mtime
|
|
76
|
+
r[Clabel] = name
|
|
77
|
+
r[Ctitle],r[Cbody] =File.read(filename).split(/\n/,2)
|
|
78
|
+
r
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def initialize(*args)
|
|
82
|
+
super(*args)
|
|
83
|
+
@dataname = @bindings.has_key?(Cid) ? getBinding(Cid) : @name
|
|
84
|
+
@predecessors = {@dataname => true}
|
|
85
|
+
if @parent.respond_to?(:predecessors)
|
|
86
|
+
@predecessors.merge! @parent.predecessors
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def setup
|
|
91
|
+
parsed_template = nil
|
|
92
|
+
library = @bindings.has_key?(Clibrary) ? getBinding(Clibrary) : @attributes[Clibrary] || C_default
|
|
93
|
+
Logger['iowa_log'].info "Library: #{library}"
|
|
94
|
+
Content.config(library) do |content_config|
|
|
95
|
+
dn = session.context.request.params[Cpreview] ? "#{@dataname}?preview" : @dataname
|
|
96
|
+
cache_entry = content_config.cache[dn]
|
|
97
|
+
|
|
98
|
+
if !cache_entry or (cache_entry and cache_entry[0] != content_config.query.call(@dataname, @attributes, session)) or session.context.request.params.has_key?(Crefresh) or @attributes[Crefresh] =~ /(true|enabled)/
|
|
99
|
+
|
|
100
|
+
cobj = content_config.retrieve.call(@dataname, @attributes, session)
|
|
101
|
+
my_content = generate_wrapped_content(cobj)
|
|
102
|
+
parsed_template = TemplateParser.new(my_content,{},self.class).root
|
|
103
|
+
content_config.cache[dn] = [cobj[Cchecksum], parsed_template]
|
|
104
|
+
else
|
|
105
|
+
parsed_template = cache_entry[1]
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# This prevents infinite loops.
|
|
110
|
+
if @parent.respond_to?(:predecessors) and @parent.predecessors[@dataname]
|
|
111
|
+
@template = TemplateParser.new(C_empty,{}).root
|
|
112
|
+
else
|
|
113
|
+
@template = parsed_template
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def generate_wrapped_content(content)
|
|
118
|
+
"<div id=\"maincontent\" style=\"position: absolute; left: 140px; top: 130px\">\n#{content[Cbody]}\n</div>"
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
require 'iowa/caches/LRUCache'
|
|
2
|
+
|
|
3
|
+
module Iowa
|
|
4
|
+
module Dispatchers
|
|
5
|
+
class DBContentDispatcher
|
|
6
|
+
|
|
7
|
+
attr_accessor :dbpool
|
|
8
|
+
|
|
9
|
+
class NoMapFile < Exception; end
|
|
10
|
+
|
|
11
|
+
def initialize(args)
|
|
12
|
+
@mapfileMTime = 0
|
|
13
|
+
@dbLMTime = {:pub => 0, :priv => 0}
|
|
14
|
+
@next_check = 0
|
|
15
|
+
@urlMap = {:pub => {}, :priv => {}}
|
|
16
|
+
@dbMap = {:pub => {}, :priv => {}}
|
|
17
|
+
@dbpool = {}
|
|
18
|
+
@mapfile = 'mapfile.map'
|
|
19
|
+
raise(NoMapFile, "The mapfile (@mapfile) does not appear to exist.") unless FileTest.exist?(@mapfile)
|
|
20
|
+
@min_recheck_interval = args[:min_recheck_interval] ? args[:min_recheck_interval] : 30
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def read_mapfile
|
|
24
|
+
if File.stat(@mapfile).mtime != @mapfileMTime
|
|
25
|
+
File.open(@mapfile) {|mf| @urlMap = YAML::load(mf)}
|
|
26
|
+
File.stat(@mapfile).mtime
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def read_db
|
|
31
|
+
[:pub,:priv].each {|s| @dbpool[s].obtain {|ksdbh| poll_db(ksdbh,s)}}
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def poll_db(ksdbh,side)
|
|
35
|
+
lmtime = nil
|
|
36
|
+
ksdbh.select_all('select max(last_modified) from product_urls') {|row| lmtime = row[0]}
|
|
37
|
+
if lmtime and lmtime.to_time.to_i > @dbLMTime[side]
|
|
38
|
+
@dbLMTime[side] = lmtime.to_time.to_i
|
|
39
|
+
@dbMap[side] = {}
|
|
40
|
+
ksdbh.select(:ProductUrls).each {|pu| @dbMap[side][pu.url] = pu.product_idx}
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Returns true if the dispatcher is willing to handle this request.
|
|
45
|
+
|
|
46
|
+
# def handleRequest?(path)
|
|
47
|
+
# if @next_check < Time.now.to_i
|
|
48
|
+
# @next_check = Time.now.to_i + @min_recheck_interval
|
|
49
|
+
# read_mapfile
|
|
50
|
+
# read_db
|
|
51
|
+
# end
|
|
52
|
+
#
|
|
53
|
+
# if !Iowa.app.policy.getIDs(path)[1].nil?
|
|
54
|
+
# true
|
|
55
|
+
# elsif @urlMap[path] or @dbMap[path]
|
|
56
|
+
# true
|
|
57
|
+
# else
|
|
58
|
+
# false
|
|
59
|
+
# end
|
|
60
|
+
# end
|
|
61
|
+
|
|
62
|
+
# Dispatches the request.
|
|
63
|
+
|
|
64
|
+
def dispatch(session,context,specific_page = nil)
|
|
65
|
+
unless specific_page
|
|
66
|
+
request = context.request
|
|
67
|
+
if @next_check < Time.now.to_i
|
|
68
|
+
@next_check = Time.now.to_i + @min_recheck_interval
|
|
69
|
+
read_mapfile
|
|
70
|
+
read_db
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
side = :pub
|
|
74
|
+
if context.cookies.has_key?(::Cdirexion_id)
|
|
75
|
+
direxion_id = context.cookies[::Cdirexion_id]
|
|
76
|
+
if direxion_id.nil?
|
|
77
|
+
request.uri = '/logout.html'
|
|
78
|
+
else
|
|
79
|
+
if Iowa.app.direxion_id_cache.include?(direxion_id)
|
|
80
|
+
side = :priv
|
|
81
|
+
else
|
|
82
|
+
@dbpool[:priv].obtain do |ksdbh|
|
|
83
|
+
auth = ksdbh.select(:Authorization) {|a| a.idx == direxion_id}.first
|
|
84
|
+
if auth
|
|
85
|
+
side = :priv
|
|
86
|
+
Iowa.app.direxion_id_cache[direxion_id] = true
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
if side == :pub
|
|
91
|
+
# expire a bad cookie
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
if @urlMap[side][request.uri]
|
|
98
|
+
context[:side] = side
|
|
99
|
+
specific_page = @urlMap[side][request.uri]
|
|
100
|
+
elsif @dbMap[side][request.uri]
|
|
101
|
+
context[:product_id] = @dbMap[side][request.uri]
|
|
102
|
+
context[:side] = side
|
|
103
|
+
specific_page = 'DBContentPage'
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
Logger['iowa_log'].info "Dispatching to #{specific_page}"
|
|
107
|
+
session.handleRequest(context,specific_page)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|