1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- // parse-url.js
- // This file defines a helper function for parsing an incoming URL into
- // the Public Path, Application, Instance and Private Path components.
- // incoming path public_path application instance private_path
- // /path/to/component "/path/to/component" "index.vwf" nil nil
- // /path/to/component/ "/path/to/component" "index.vwf" nil nil
- // /path/to/component/path/to/client/file "/path/to/component" "index.vwf" nil "path/to/client/file"
- // /path/to/component/path/to/component/file "/path/to/component" "index.vwf" nil "path/to/component/file"
- // /path/to/component/socket/path "/path/to/component" "index.vwf" nil "socket/path"
- // /path/to/component.vwf "/path/to" "component.vwf" nil nil
- // /path/to/component.vwf/ "/path/to" "component.vwf" nil nil
- // /path/to/component.vwf/path/to/client/file "/path/to" "component.vwf" nil "path/to/client/file"
- // /path/to/component.vwf/path/to/component/file "/path/to" "component.vwf" nil "path/to/component/file"
- // /path/to/component.vwf/socket/path "/path/to" "component.vwf" nil "socket/path"
- // /path/to/component/instance "/path/to/component" "index.vwf" "instance" nil
- // /path/to/component/instance/ "/path/to/component" "index.vwf" "instance" nil
- // /path/to/component/instance/path/to/client/file "/path/to/component" "index.vwf" "instance" "path/to/client/file"
- // /path/to/component/instance/path/to/component/file "/path/to/component" "index.vwf" "instance" "path/to/component/file"
- // /path/to/component/instance/socket/path "/path/to/component" "index.vwf" "instance" "socket/path"
- // /path/to/component.vwf/instance "/path/to" "component.vwf" "instance" nil
- // /path/to/component.vwf/instance/ "/path/to" "component.vwf" "instance" nil
- // /path/to/component.vwf/instance/path/to/client/file "/path/to" "component.vwf" "instance" "path/to/client/file"
- // /path/to/component.vwf/instance/path/to/component/file "/path/to" "component.vwf" "instance" "path/to/component/file"
- // /path/to/component.vwf/instance/socket/path "/path/to" "component.vwf" "instance" "socket/path"
- var helpers = require( './helpers' );
- // List of valid extensions for VWF components.
- var template_extensions = [ "", ".yaml", ".json" ];
- function GetExtension( path ) {
- if ( path.match( /\.vwf$/ ) ) {
- for ( var index = 0; index < template_extensions.length; index++ ) {
- if ( helpers.IsFile( helpers.JoinPath( global.applicationRoot, path + template_extensions[ index ] ) ) ) {
- return template_extensions[ index ];
- }
- }
- }
- // else if ( path.match( /\.(dae|unity3d)$/ ) ) {
- // if ( helpers.IsFile( helpers.JoinPath( global.applicationRoot, path ) ) ) {
- // return "";
- // }
- // }
- return undefined;
- }
- function Process( updatedURL ) {
- var result = { 'public_path': "/", 'application': undefined, 'instance': undefined, 'private_path': undefined };
- var segments = helpers.GenerateSegments( updatedURL );
- var extension = undefined;
- while ( ( segments.length > 0 ) && ( helpers.IsDirectory( helpers.JoinPath( global.applicationRoot + result[ 'public_path' ], segments[ 0 ] ) ) ) ) {
- result[ 'public_path' ] = helpers.JoinPath( result[ 'public_path' ], segments.shift( ) );
- }
- if ( ( segments.length > 0 ) && ( extension = GetExtension( helpers.JoinPath( result[ 'public_path' ], segments[ 0 ] ) ) ) ) {
- result[ 'application' ] = segments.shift( );
- } else if ( extension = GetExtension( helpers.JoinPath( result[ 'public_path' ], "index.vwf" ) ) ) {
- result[ 'application' ] = "index.vwf";
- } else if ( extension = GetExtension( helpers.JoinPath( result[ 'public_path' ], "index.dae" ) ) ) {
- result[ 'application' ] = "index.dae";
- } else if ( extension = GetExtension( helpers.JoinPath( result[ 'public_path' ], "index.unity3d" ) ) ) {
- result[ 'application' ] = "index.unity3d";
- }
- if ( extension ) {
- if ( ( segments.length > 0 ) && ( helpers.IsInstanceID( segments[ 0 ] ) ) ) {
- result[ 'instance' ] = segments.shift();
- }
- if ( segments.length > 0 ) {
- result[ 'private_path' ] = segments.join("/");
- }
- }
-
- return result;
- }
- exports.Process = Process;
|