hoplite.git
6 years agoMiddleware no longer takes a Pipeline. pipeline
Robert Sesek [Sun, 4 Dec 2016 04:56:40 +0000 (23:56 -0500)]
Middleware no longer takes a Pipeline.

7 years agoUpgrade PHPUnit to 5.6.7.
Robert Sesek [Sun, 4 Dec 2016 04:29:14 +0000 (23:29 -0500)]
Upgrade PHPUnit to 5.6.7.

7 years agoAdd the Router and RouteMap components for http2.
Robert Sesek [Tue, 29 Nov 2016 07:14:54 +0000 (02:14 -0500)]
Add the Router and RouteMap components for http2.

These are similar to the UrlMap and FrontController request processor in http,
but have been adapted to the Pipeline/Middleware architecture.

7 years agoInitial implementation of a new HTTP library based on pipelines.
Robert Sesek [Mon, 28 Nov 2016 07:13:47 +0000 (02:13 -0500)]
Initial implementation of a new HTTP library based on pipelines.

A Pipeline is a series of chained Middleware that execute in order to produce a
response.

The goal is for the http2 subsystem to implement the same concepts as http, but
with looser coupling between the controllers and output filters.

8 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.

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

8 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.

8 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.

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

8 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.

8 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.

8 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.

10 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.

10 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.

10 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.

10 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.

10 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.

10 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().

10 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.

10 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().

10 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.

10 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.

10 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.

10 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.

10 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.

10 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.

10 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.

10 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.

10 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.

10 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.

10 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.

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

10 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.

10 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.

11 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.

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

12 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

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

12 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

12 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.

12 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()

12 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.

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

12 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

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

12 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()

12 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

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

12 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

12 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

12 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()

12 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

12 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

12 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

12 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.

12 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.

12 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.

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

12 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

12 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

12 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.

12 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

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

12 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

12 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.

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

12 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.

12 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()

12 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.

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

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

12 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

12 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

12 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

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

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

12 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

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

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

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

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

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

12 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

12 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

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

12 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()

12 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.

12 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

12 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)

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

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

12 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

12 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

12 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

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

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

12 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

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

12 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

12 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