|  | @@ -4,6 +4,7 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  var parseurl = require( './parse-url' ),
 | 
	
		
			
				|  |  |      serve = require( './serve' ),
 | 
	
		
			
				|  |  | +    persistence = require( './persistence' ),
 | 
	
		
			
				|  |  |      servehandler = require( './serve-handler' ),
 | 
	
		
			
				|  |  |      helpers = require( './helpers' ),
 | 
	
		
			
				|  |  |      application = require( './application' ),
 | 
	
	
		
			
				|  | @@ -170,6 +171,70 @@ function HandleWebAppRequest(request, response) {
 | 
	
		
			
				|  |  |      return res;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +function parseUrlForReflector( pathName ) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    try
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        var namespace = pathName;
 | 
	
		
			
				|  |  | +        if(!namespace) return null;
 | 
	
		
			
				|  |  | +        if (namespace[namespace.length - 1] != "/")
 | 
	
		
			
				|  |  | +            namespace += "/";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return parseurl.Process( namespace );
 | 
	
		
			
				|  |  | +       
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    catch (e)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        return null;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function GetLoadForSocket( processedURL ) {
 | 
	
		
			
				|  |  | +    if ( processedURL[ 'private_path' ] ) {
 | 
	
		
			
				|  |  | +        return persistence.GetLoadInformation( processedURL );
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    return { 'save_name': undefined, 'save_revision': undefined, 'explicit_revision': undefined, 'application_path': undefined };
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function HandleReflectorRequest(request, response) {
 | 
	
		
			
				|  |  | +    //var updatedURL = url.parse(request.url).pathname;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   // var address = request.headers.host;
 | 
	
		
			
				|  |  | +    var res = false;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if (request.method === 'POST' && request.url === '/parseurl') {
 | 
	
		
			
				|  |  | +        let body = [];
 | 
	
		
			
				|  |  | +        request.on('data', (chunk) => {
 | 
	
		
			
				|  |  | +          body.push(chunk);
 | 
	
		
			
				|  |  | +        }).on('end', () => {
 | 
	
		
			
				|  |  | +          body = Buffer.concat(body).toString();
 | 
	
		
			
				|  |  | +          let pathUrl = JSON.parse(body);
 | 
	
		
			
				|  |  | +          let refPath = parseUrlForReflector( pathUrl.url );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //prepare for persistence request in case that's what this is
 | 
	
		
			
				|  |  | +        let loadInfo = GetLoadForSocket( refPath );
 | 
	
		
			
				|  |  | +        let saveObject = persistence.LoadSaveObject( loadInfo );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        let resObj = {
 | 
	
		
			
				|  |  | +            path: refPath,
 | 
	
		
			
				|  |  | +            loadInfo: loadInfo,
 | 
	
		
			
				|  |  | +            saveObject: saveObject
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +          //console.log(resObj);
 | 
	
		
			
				|  |  | +        let json = JSON.stringify(resObj);
 | 
	
		
			
				|  |  | +         response.writeHead(200, {"Content-Type": "application/json"});
 | 
	
		
			
				|  |  | +          response.end(json);
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        //response.statusCode = 404;
 | 
	
		
			
				|  |  | +        //response.end();
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return res;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  // Serve is the top level function for serving requests. It first attempts to 
 | 
	
		
			
				|  |  |  // serve the request based on parsing the incoming URL.
 | 
	
		
			
				|  |  |  // If that fails, it continues to attempt to serve the request as a 'proxy' request,
 | 
	
	
		
			
				|  | @@ -178,7 +243,9 @@ function HandleWebAppRequest(request, response) {
 | 
	
		
			
				|  |  |  // directory structure.
 | 
	
		
			
				|  |  |  // If all that fails, serve up a 404 response since the request was not handled.
 | 
	
		
			
				|  |  |  function Serve( request, response ) {
 | 
	
		
			
				|  |  | -    var handledRequest = HandleParsableRequest( request, response );
 | 
	
		
			
				|  |  | +    var handledRequest = HandleReflectorRequest( request, response );
 | 
	
		
			
				|  |  | +    if ( ! ( handledRequest ) ) {
 | 
	
		
			
				|  |  | +        handledRequest = HandleParsableRequest( request, response ); }
 | 
	
		
			
				|  |  |      if ( ! ( handledRequest ) ) {
 | 
	
		
			
				|  |  |          handledRequest = HandleProxyRequest( request, response );
 | 
	
		
			
				|  |  |      }
 |