hoplite.git
18 months agoAdd an interceptor for CORS OPTIONS preflighting. master
Robert Sesek [Sun, 19 Nov 2017 05:00:08 +0000 (00:00 -0500)]
Add an interceptor for CORS OPTIONS preflighting.

18 months agoRestAction: Support OPTIONS and fix old StopWithCode.
Robert Sesek [Sun, 19 Nov 2017 02:51:56 +0000 (21:51 -0500)]
RestAction: Support OPTIONS and fix old StopWithCode.

18 months agoRemove trailing <? in template expansion.
Robert Sesek [Sat, 18 Nov 2017 21:46:07 +0000 (16:46 -0500)]
Remove trailing <? in template expansion.

18 months agoThe FileCacheBackend should cache with template basename.
Robert Sesek [Sat, 18 Nov 2017 21:45:49 +0000 (16:45 -0500)]
The FileCacheBackend should cache with template basename.

4 years agoNotFoundInterceptor needs to permit a NULL Action.
Robert Sesek [Sun, 31 May 2015 21:26:17 +0000 (17:26 -0400)]
NotFoundInterceptor needs to permit a NULL Action.

4 years agoRestore FrontController::InvokeAction().
Robert Sesek [Sun, 31 May 2015 21:20:55 +0000 (17:20 -0400)]
Restore FrontController::InvokeAction().

4 years agoFix views\Template accessing RootController rather than FrontController.
Robert Sesek [Sun, 31 May 2015 21:20:28 +0000 (17:20 -0400)]
Fix views\Template accessing RootController rather than FrontController.

4 years agoIntroduce FrontController as the replacement for RootController. api-2
Robert Sesek [Sun, 31 May 2015 20:23:31 +0000 (16:23 -0400)]
Introduce FrontController as the replacement for RootController.

The FrontController has no delegate, but instead uses Interceptors to allow
middleware to further process the request or to interrupt control flow.

One integral change is that if no Action is found for the Request in the UrlMap,
then no action will be taken by the FrontController. Instead, a
NotFoundInterceptor should be used to send a HTTP 404 response in this event.

4 years agoAdd Request::Filter and ::FilterArray.
Robert Sesek [Wed, 27 May 2015 04:22:54 +0000 (00:22 -0400)]
Add Request::Filter and ::FilterArray.

4 years agoUse filter_var() over base/filter.php, which is going away soon.
Robert Sesek [Tue, 26 May 2015 02:24:31 +0000 (22:24 -0400)]
Use filter_var() over base/filter.php, which is going away soon.

4 years agoCache templates with the full template path rather than just the name.
Robert Sesek [Mon, 25 May 2015 21:44:48 +0000 (17:44 -0400)]
Cache templates with the full template path rather than just the name.

This allows multiple TemplateLoaders to operate on different template_paths
but with the same template_cache.

4 years agoThe default behavior for RestAction should be to error METHOD_NOT_ALLOWED.
Robert Sesek [Mon, 25 May 2015 21:12:52 +0000 (17:12 -0400)]
The default behavior for RestAction should be to error METHOD_NOT_ALLOWED.

5 years agoIn views\Template, do not use base/filter.php wrappers where it's not necessary.
Robert Sesek [Mon, 31 Mar 2014 13:18:30 +0000 (09:18 -0400)]
In views\Template, do not use base/filter.php wrappers where it's not necessary.

5 years agoCheck for the presence of a RootControllerDelegate before calling it.
Robert Sesek [Mon, 31 Mar 2014 13:16:26 +0000 (09:16 -0400)]
Check for the presence of a RootControllerDelegate before calling it.

5 years agoDo not call RootControllerDelegate through WeakInterface.
Robert Sesek [Mon, 31 Mar 2014 04:16:15 +0000 (00:16 -0400)]
Do not call RootControllerDelegate through WeakInterface.

This adds too much indirection in critical codepaths.

5 years agoAdd RootController::StopWithRedirect() as a redirect shortcut.
Robert Sesek [Mon, 31 Mar 2014 00:55:15 +0000 (20:55 -0400)]
Add RootController::StopWithRedirect() as a redirect shortcut.

5 years agoSimplify WeakInterface by replacing the MethodImp with a hash.
Robert Sesek [Tue, 30 Jul 2013 03:21:29 +0000 (23:21 -0400)]
Simplify WeakInterface by replacing the MethodImp with a hash.

6 years agoImplement a noop views\FileCacheBackend::GetMultipleTemplates().
Robert Sesek [Sat, 8 Jun 2013 03:41:55 +0000 (23:41 -0400)]
Implement a noop views\FileCacheBackend::GetMultipleTemplates().

6 years agoImplement template PreCache-ing in the TemplateLoader.
Robert Sesek [Tue, 4 Jun 2013 06:29:41 +0000 (02:29 -0400)]
Implement template PreCache-ing in the TemplateLoader.

FileCacheBackend still needs to implement it, and tests need to be written.

6 years agoEscape the callstack function args in ProfilingPDO::ConstructHTMLDebugBlock().
Robert Sesek [Tue, 4 Jun 2013 05:19:52 +0000 (01:19 -0400)]
Escape the callstack function args in ProfilingPDO::ConstructHTMLDebugBlock().

6 years agoThrow an exception if the template file does not exist.
Robert Sesek [Tue, 4 Jun 2013 05:11:25 +0000 (01:11 -0400)]
Throw an exception if the template file does not exist.

6 years agoTesting the return value of PDOStatement::Execute does not appear to work on MySQL.
Robert Sesek [Tue, 4 Jun 2013 05:00:52 +0000 (01:00 -0400)]
Testing the return value of PDOStatement::Execute does not appear to work on MySQL.

6 years agoPass a variable that is actually defined to MarkTemplateRendered in Template::Render.
Robert Sesek [Tue, 4 Jun 2013 04:45:28 +0000 (00:45 -0400)]
Pass a variable that is actually defined to MarkTemplateRendered in Template::Render.

6 years agoWrite a CacheBackend implementation for PDO.
Robert Sesek [Tue, 4 Jun 2013 01:54:00 +0000 (21:54 -0400)]
Write a CacheBackend implementation for PDO.

6 years agoRefactor builtin functions into a TemplateBuiltins class.
Robert Sesek [Tue, 4 Jun 2013 01:02:47 +0000 (21:02 -0400)]
Refactor builtin functions into a TemplateBuiltins class.

Also write some poor tests.

6 years agoWrite the initial builtin Template macro functions implementation.
Robert Sesek [Sun, 2 Jun 2013 21:02:22 +0000 (17:02 -0400)]
Write the initial builtin Template macro functions implementation.

6 years agoRewrite the template system to have user-customizable open and close tags.
Robert Sesek [Sat, 1 Jun 2013 18:03:19 +0000 (14:03 -0400)]
Rewrite the template system to have user-customizable open and close tags.

This requires a change in the grammar to normalize it. Rather than having {% %}
print an expression, it now evaluates a statement. To print, use {%= %} instead.
{!% %} has been removed.

6 years agoPrint comparison failure expected and actual values.
Robert Sesek [Sat, 1 Jun 2013 17:37:43 +0000 (13:37 -0400)]
Print comparison failure expected and actual values.

6 years agoSplit TemplateLoader's cache business into another interface and class.
Robert Sesek [Wed, 29 May 2013 02:45:22 +0000 (22:45 -0400)]
Split TemplateLoader's cache business into another interface and class.

This creates the CacheBackend interface, which will allow for a database cache,
and one concrete implementation FileCacheBackend. This implementation implements
the existing TemplateLoader cache behavior.

6 years agoMake use of Template names for usage profiling.
Robert Sesek [Wed, 29 May 2013 01:14:20 +0000 (21:14 -0400)]
Make use of Template names for usage profiling.

6 years agoAdd base/profiling.php and data/profiling_pdo.php.
Robert Sesek [Tue, 28 May 2013 13:44:45 +0000 (09:44 -0400)]
Add base/profiling.php and data/profiling_pdo.php.

6 years agoAdd a CHANGES file.
Robert Sesek [Tue, 28 May 2013 13:40:59 +0000 (09:40 -0400)]
Add a CHANGES file.

6 years agoMake OutputFilter::_EncodeXML protected so that the test can access it.
Robert Sesek [Sun, 19 May 2013 20:57:32 +0000 (16:57 -0400)]
Make OutputFilter::_EncodeXML protected so that the test can access it.

6 years agoAdd http\Input class to provide an input sanitization system.
Robert Sesek [Sun, 19 May 2013 20:55:52 +0000 (16:55 -0400)]
Add http\Input class to provide an input sanitization system.

6 years agoChange OutputFilter to use a delegate instead of subclassing to override behavior.
Robert Sesek [Sun, 14 Oct 2012 16:16:54 +0000 (12:16 -0400)]
Change OutputFilter to use a delegate instead of subclassing to override behavior.

7 years agoImplement hoplite\filter\RawString
Robert Sesek [Sun, 23 Oct 2011 18:47:21 +0000 (14:47 -0400)]
Implement hoplite\filter\RawString

7 years agoAdd a getter for the RootController delegate
Robert Sesek [Thu, 20 Oct 2011 00:54:50 +0000 (20:54 -0400)]
Add a getter for the RootController delegate

7 years agoAdd RootController::StopWithCode()
Robert Sesek [Sat, 8 Oct 2011 14:57:37 +0000 (10:57 -0400)]
Add RootController::StopWithCode()

7 years agoRefactor the response type guessing in OutputFilter into a method
Robert Sesek [Sat, 8 Oct 2011 04:55:19 +0000 (00:55 -0400)]
Refactor the response type guessing in OutputFilter into a method

7 years agoFix MakeUrl() for when calling it at the root page.
Robert Sesek [Mon, 22 Aug 2011 04:51:06 +0000 (00:51 -0400)]
Fix MakeUrl() for when calling it at the root page.

7 years agoUse JSON_NUMERIC_CHECK for json_encode()
Robert Sesek [Sun, 21 Aug 2011 04:29:09 +0000 (00:29 -0400)]
Use JSON_NUMERIC_CHECK for json_encode()

7 years agoAdd hoplite\views\MakeURL() in a kind of hacky way.
Robert Sesek [Sun, 14 Aug 2011 17:58:03 +0000 (13:58 -0400)]
Add hoplite\views\MakeURL() in a kind of hacky way.

7 years agoAdd hoplite\views\Inject()
Robert Sesek [Sun, 14 Aug 2011 17:45:48 +0000 (13:45 -0400)]
Add hoplite\views\Inject()

7 years agoExtract PUT data as POST params
Robert Sesek [Sun, 14 Aug 2011 17:00:18 +0000 (13:00 -0400)]
Extract PUT data as POST params

7 years agoAdd RootController::MakeURL()
Robert Sesek [Sun, 14 Aug 2011 16:01:54 +0000 (12:01 -0400)]
Add RootController::MakeURL()

7 years ago* Make Controller have an abstract _SelectModel method.
Robert Sesek [Sun, 14 Aug 2011 14:53:16 +0000 (10:53 -0400)]
* Make Controller have an abstract _SelectModel method.
* Merge the request data for the model in FilterRequest()

7 years agoMake RootControllerDelegate::OnInitialRequest also send the response
Robert Sesek [Mon, 8 Aug 2011 02:47:20 +0000 (22:47 -0400)]
Make RootControllerDelegate::OnInitialRequest also send the response

7 years agoMissing a set of ()
Robert Sesek [Mon, 8 Aug 2011 02:21:36 +0000 (22:21 -0400)]
Missing a set of ()

7 years agoAdd functionality to OutputFilter for rendering templates
Robert Sesek [Mon, 8 Aug 2011 02:19:03 +0000 (22:19 -0400)]
Add functionality to OutputFilter for rendering templates

7 years agotemplate_loader.php needs to include template.php
Robert Sesek [Mon, 8 Aug 2011 02:18:15 +0000 (22:18 -0400)]
template_loader.php needs to include template.php

7 years agoAllow an array of variables to be passed to Template::Render()
Robert Sesek [Mon, 8 Aug 2011 02:17:56 +0000 (22:17 -0400)]
Allow an array of variables to be passed to Template::Render()

7 years agoMerge form/request data in the Controller
Robert Sesek [Sun, 7 Aug 2011 07:15:15 +0000 (03:15 -0400)]
Merge form/request data in the Controller

7 years agoCheck the right header for X-Requested-With
Robert Sesek [Sun, 7 Aug 2011 07:02:39 +0000 (03:02 -0400)]
Check the right header for X-Requested-With

7 years ago* Catch PDOException in Controller
Robert Sesek [Sun, 7 Aug 2011 07:02:09 +0000 (03:02 -0400)]
* Catch PDOException in Controller
* Switch to setting the exception as the body rather than a data

7 years agoMake sure $rule_frag has length before indexing it.
Robert Sesek [Sun, 7 Aug 2011 05:56:22 +0000 (01:56 -0400)]
Make sure $rule_frag has length before indexing it.

7 years agoDon't return in FilterOutput() if there's a body already.
Robert Sesek [Sat, 6 Aug 2011 22:39:00 +0000 (18:39 -0400)]
Don't return in FilterOutput() if there's a body already.

7 years agoIntroduce a file loader to the UrlMap.
Robert Sesek [Sat, 6 Aug 2011 22:28:49 +0000 (18:28 -0400)]
Introduce a file loader to the UrlMap.

7 years agoSpecial case the empty rule.
Robert Sesek [Sat, 6 Aug 2011 22:15:37 +0000 (18:15 -0400)]
Special case the empty rule.

7 years agoOnly check the Request#data[format] key if it is set
Robert Sesek [Sat, 6 Aug 2011 22:09:31 +0000 (18:09 -0400)]
Only check the Request#data[format] key if it is set

7 years agoSend the HTTP status code in the response
Robert Sesek [Sat, 6 Aug 2011 22:09:05 +0000 (18:09 -0400)]
Send the HTTP status code in the response

7 years agoAssume an empty PATH_INFO is the root URL.
Robert Sesek [Sat, 6 Aug 2011 21:57:50 +0000 (17:57 -0400)]
Assume an empty PATH_INFO is the root URL.

7 years agoFix more bugs in TemplateLoader and a singleton helper
Robert Sesek [Sat, 6 Aug 2011 21:34:45 +0000 (17:34 -0400)]
Fix more bugs in TemplateLoader and a singleton helper

7 years ago.gitignore broke the test!
Robert Sesek [Sat, 6 Aug 2011 21:28:26 +0000 (17:28 -0400)]
.gitignore broke the test!

7 years agoGet TemplateLoader working and update the tests
Robert Sesek [Sat, 6 Aug 2011 21:02:31 +0000 (17:02 -0400)]
Get TemplateLoader working and update the tests

7 years agoChange Template::Render to return the result, rather than print it.
Robert Sesek [Sat, 6 Aug 2011 20:35:15 +0000 (16:35 -0400)]
Change Template::Render to return the result, rather than print it.

7 years agoAdd RootControllerDelegate
Robert Sesek [Sat, 6 Aug 2011 20:31:33 +0000 (16:31 -0400)]
Add RootControllerDelegate

7 years agoSet null_allowed to TRUE by default.
Robert Sesek [Sat, 6 Aug 2011 19:22:54 +0000 (15:22 -0400)]
Set null_allowed to TRUE by default.

7 years agoMore optimizations by caching the value of IsRequired()
Robert Sesek [Sat, 6 Aug 2011 19:18:04 +0000 (15:18 -0400)]
More optimizations by caching the value of IsRequired()

7 years agoSpeed up WeakInterface by 2x by caching the object reflector.
Robert Sesek [Sat, 6 Aug 2011 19:17:26 +0000 (15:17 -0400)]
Speed up WeakInterface by 2x by caching the object reflector.

7 years agoCreate WeakInterface
Robert Sesek [Sat, 6 Aug 2011 19:14:57 +0000 (15:14 -0400)]
Create WeakInterface

7 years agoImplement OutputFilter::_CreateBodyForResponse()
Robert Sesek [Sat, 6 Aug 2011 18:02:51 +0000 (14:02 -0400)]
Implement OutputFilter::_CreateBodyForResponse()

7 years agoAdd OutputFilter::_EncodeXML and create a test
Robert Sesek [Sat, 6 Aug 2011 17:28:28 +0000 (13:28 -0400)]
Add OutputFilter::_EncodeXML and create a test

7 years agoNaïve implementation of RootController::LookupAction
Robert Sesek [Sat, 6 Aug 2011 16:10:06 +0000 (12:10 -0400)]
Naïve implementation of RootController::LookupAction

7 years ago* Add RestAdapaterTest
Robert Sesek [Fri, 5 Aug 2011 04:06:18 +0000 (00:06 -0400)]
* Add RestAdapaterTest
* Refactor common HTTP test fixtures out into a new file

7 years agoAll tests pass again
Robert Sesek [Fri, 5 Aug 2011 01:21:41 +0000 (21:21 -0400)]
All tests pass again

7 years agoAdd http\RestAdapter
Robert Sesek [Fri, 5 Aug 2011 00:07:29 +0000 (20:07 -0400)]
Add http\RestAdapter

7 years agoMake http\RestController's Do methods public
Robert Sesek [Sat, 30 Jul 2011 21:56:37 +0000 (17:56 -0400)]
Make http\RestController's Do methods public

7 years agoAdd data\Controller
Robert Sesek [Sat, 30 Jul 2011 21:47:14 +0000 (17:47 -0400)]
Add data\Controller

7 years agoAdd data\Model from phalanx
Robert Sesek [Sat, 30 Jul 2011 16:33:26 +0000 (12:33 -0400)]
Add data\Model from phalanx

7 years agoAdd base\Struct from phalanx
Robert Sesek [Sat, 30 Jul 2011 16:16:51 +0000 (12:16 -0400)]
Add base\Struct from phalanx

7 years agoFix a bug in TemplateLoader
Robert Sesek [Sat, 30 Jul 2011 16:08:09 +0000 (12:08 -0400)]
Fix a bug in TemplateLoader

7 years agoAdd WIP TemplateLoader
Robert Sesek [Wed, 27 Jul 2011 13:51:25 +0000 (09:51 -0400)]
Add WIP TemplateLoader

7 years ago* Get the correct column number in parsing exceptions
Robert Sesek [Tue, 26 Jul 2011 13:05:10 +0000 (09:05 -0400)]
* Get the correct column number in parsing exceptions
* Throw an exception when nesting two macros

7 years agoAdd basic template parser and test
Robert Sesek [Tue, 26 Jul 2011 12:54:38 +0000 (08:54 -0400)]
Add basic template parser and test

7 years agoImplement UrlMap::LookupAction()
Robert Sesek [Wed, 22 Jun 2011 02:03:05 +0000 (22:03 -0400)]
Implement UrlMap::LookupAction()

7 years agoUpdate RootController and test so that a Request is passed to UrlMap::Evaluate()
Robert Sesek [Sat, 18 Jun 2011 19:25:17 +0000 (15:25 -0400)]
Update RootController and test so that a Request is passed to UrlMap::Evaluate()

7 years agoImplement UrlMap::Evaluate() with all its tests passing.
Robert Sesek [Sat, 18 Jun 2011 19:20:12 +0000 (15:20 -0400)]
Implement UrlMap::Evaluate() with all its tests passing.

7 years agoDon't print OK if a test fails
Robert Sesek [Sat, 18 Jun 2011 19:06:45 +0000 (15:06 -0400)]
Don't print OK if a test fails

7 years ago* Add a set of failing tests for UrlMap -- TDD!
Robert Sesek [Sat, 18 Jun 2011 18:19:20 +0000 (14:19 -0400)]
* Add a set of failing tests for UrlMap -- TDD!
* Document how strict pattern matching works (versus prefix)

8 years agoAdd ActionControllerTest
Robert Sesek [Sun, 12 Jun 2011 15:30:20 +0000 (11:30 -0400)]
Add ActionControllerTest

8 years agoAdd a test for RestAction
Robert Sesek [Sun, 12 Jun 2011 14:45:34 +0000 (10:45 -0400)]
Add a test for RestAction

8 years ago* Write a unittest for RootControler
Robert Sesek [Sun, 12 Jun 2011 14:30:22 +0000 (10:30 -0400)]
* Write a unittest for RootControler
* Fix a bunch of syntax errors

8 years agoAdd unit testing infrastructure, again straignt from phalanx
Robert Sesek [Sun, 12 Jun 2011 00:17:55 +0000 (20:17 -0400)]
Add unit testing infrastructure, again straignt from phalanx

8 years agoAdd functions.php, copied from phalanx
Robert Sesek [Sun, 12 Jun 2011 00:12:13 +0000 (20:12 -0400)]
Add functions.php, copied from phalanx

8 years agoStub out the OutputFilter
Robert Sesek [Sun, 12 Jun 2011 00:07:42 +0000 (20:07 -0400)]
Stub out the OutputFilter

8 years agoStub out UrlMap
Robert Sesek [Sat, 11 Jun 2011 20:54:23 +0000 (16:54 -0400)]
Stub out UrlMap

8 years ago* Add ActionController
Robert Sesek [Sat, 11 Jun 2011 18:37:37 +0000 (14:37 -0400)]
* Add ActionController
* Split out ResponseCode into its own file

8 years agoWhitespace nits in the README
Robert Sesek [Sat, 11 Jun 2011 18:08:26 +0000 (14:08 -0400)]
Whitespace nits in the README

8 years agoAdd the Request and Response objects copied from phalanx
Robert Sesek [Sat, 11 Jun 2011 14:47:15 +0000 (10:47 -0400)]
Add the Request and Response objects copied from phalanx

8 years agoStart stubbing out the design doc interfaces
Robert Sesek [Sat, 11 Jun 2011 06:31:01 +0000 (02:31 -0400)]
Start stubbing out the design doc interfaces