Skip to content

azhugrov/CrimsonHttp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CrimsonHttp server for Dart

Currently uses the chat sample http server, but will be ported to the dart:io http server once that is released

Loosely inspired upon sencha/connect for node.js

Makes use of log4dart, found here: https://github.com/Qalqo/log4dart (It expects to find log4dart in ../log4dart (ie, at the same level as crimson, not within the crimson folder structure).


Usage: See test/crimsonTest.dart for example, but it goes something like this...

main() {
  CrimsonHttpServer server = new CrimsonHttpServer();
  
  CrimsonModule sampleModule = new CrimsonModule(server);
  
  sampleModule.handlers
                .addEndpoint(new Favicon("./favicon.ico"))               // match the favicon request
                .addFilter(new CookieSession())                          // adds session support
                .addEndpoint(new Route("/hello","GET",(req,res,data) {   // execute arbitary code that matches a route
				   res.outputStream.write("Hello");
				))  
				.addEndpoint(
				  new Route.withMatcher((req) => req.path.endsWith("someString"),  // matcher function returns bool
				   "customMatcherName",                                            // matcher name for logging
				   (req,res,data) => res.outputStream.write("Hello");              // execute on match
				  )
				)         
                .addEndpoint(new StaticFile("./public"));                // serve static files

  server.modules["*"] = sampleModule;  // this is the default module.

  server.listen("127.0.0.1", 8082); // start listening
 
}

#TODO

  • Lots, especially tidy up CookieSession and StaticFile, and add Route.
  • Please treat all of this as pre-alpha.
  • It's not secure in the slightest, and the StaticFile handler alone will probably allow users to browse your pc!

#Filters

  • CookieSession: sets a sessioncookie - just ported at the moment and not yet tested. Treat as pre-alpha.

#Endpoints

  • Favicon: Serves a favicon from either the default ./favicon.ico or ./public/favicon.ico, or some specified location.
  • StaticFile: serves static files from the path provided in the constructor. Simply appends the request.uri onto whatever path you provide in, and tries to load it. Very insecure.
  • Route: executes a dart method in resposne to matching a path + method, or a matching function

About

Dart HTTP webserver, providing server side session and routing and static file serving.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Dart 100.0%