2017-01-15 19:09:57 +00:00
|
|
|
(function () {
|
|
|
|
|
|
|
|
var laroute = (function () {
|
|
|
|
|
|
|
|
var routes = {
|
|
|
|
|
|
|
|
absolute: false,
|
|
|
|
rootUrl: 'http://pterodactyl.app',
|
2017-04-15 21:18:12 +00:00
|
|
|
routes : [{"host":null,"methods":["GET","HEAD"],"uri":"api\/user","name":"api.user","action":"Pterodactyl\Http\Controllers\API\User\CoreController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/user\/server\/{server}","name":"api.user.server","action":"Pterodactyl\Http\Controllers\API\User\ServerController@index"},{"host":null,"methods":["POST"],"uri":"api\/user\/server\/{server}\/power","name":"api.user.server.power","action":"Pterodactyl\Http\Controllers\API\User\ServerController@power"},{"host":null,"methods":["POST"],"uri":"api\/user\/server\/{server}\/command","name":"api.user.server.command","action":"Pterodactyl\Http\Controllers\API\User\ServerController@command"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/admin","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\CoreController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/admin\/servers","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\ServerController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/admin\/servers\/{id}","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\ServerController@view"},{"host":null,"methods":["POST"],"uri":"api\/admin\/servers","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\ServerController@store"},{"host":null,"methods":["PUT"],"uri":"api\/admin\/servers\/{id}\/details","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\ServerController@details"},{"host":null,"methods":["PUT"],"uri":"api\/admin\/servers\/{id}\/container","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\ServerController@container"},{"host":null,"methods":["PUT"],"uri":"api\/admin\/servers\/{id}\/build","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\ServerController@build"},{"host":null,"methods":["PUT"],"uri":"api\/admin\/servers\/{id}\/startup","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\ServerController@startup"},{"host":null,"methods":["PATCH"],"uri":"api\/admin\/servers\/{id}\/install","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\ServerController@install"},{"host":null,"methods":["PATCH"],"uri":"api\/admin\/servers\/{id}\/rebuild","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\ServerController@rebuild"},{"host":null,"methods":["PATCH"],"uri":"api\/admin\/servers\/{id}\/suspend","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\ServerController@suspend"},{"host":null,"methods":["DELETE"],"uri":"api\/admin\/servers\/{id}","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\ServerController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/admin\/locations","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\LocationController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/admin\/nodes","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\NodeController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/admin\/nodes\/{id}","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\NodeController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/admin\/nodes\/{id}\/config","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\NodeController@viewConfig"},{"host":null,"methods":["POST"],"uri":"api\/admin\/nodes","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\NodeController@store"},{"host":null,"methods":["DELETE"],"uri":"api\/admin\/nodes\/{id}","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\NodeController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/admin\/users","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\UserController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/admin\/users\/{id}","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\UserController@view"},{"host":null,"methods":["POST"],"uri":"api\/admin\/users","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\UserController@store"},{"host":null,"methods":["PUT"],"uri":"api\/admin\/users\/{id}","name":null,"action":"Pterodactyl\Http\Controllers\API\Admin\UserController@up
|
2017-01-15 19:09:57 +00:00
|
|
|
prefix: '',
|
|
|
|
|
|
|
|
route : function (name, parameters, route) {
|
|
|
|
route = route || this.getByName(name);
|
|
|
|
|
|
|
|
if ( ! route ) {
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
|
|
|
|
return this.toRoute(route, parameters);
|
|
|
|
},
|
|
|
|
|
|
|
|
url: function (url, parameters) {
|
|
|
|
parameters = parameters || [];
|
|
|
|
|
|
|
|
var uri = url + '/' + parameters.join('/');
|
|
|
|
|
|
|
|
return this.getCorrectUrl(uri);
|
|
|
|
},
|
|
|
|
|
|
|
|
toRoute : function (route, parameters) {
|
|
|
|
var uri = this.replaceNamedParameters(route.uri, parameters);
|
|
|
|
var qs = this.getRouteQueryString(parameters);
|
|
|
|
|
2017-04-15 21:18:12 +00:00
|
|
|
if (this.absolute && this.isOtherHost(route)){
|
|
|
|
return "//" + route.host + "/" + uri + qs;
|
|
|
|
}
|
|
|
|
|
2017-01-15 19:09:57 +00:00
|
|
|
return this.getCorrectUrl(uri + qs);
|
|
|
|
},
|
|
|
|
|
2017-04-15 21:18:12 +00:00
|
|
|
isOtherHost: function (route){
|
|
|
|
return route.host && route.host != window.location.hostname;
|
|
|
|
},
|
|
|
|
|
2017-01-15 19:09:57 +00:00
|
|
|
replaceNamedParameters : function (uri, parameters) {
|
|
|
|
uri = uri.replace(/\{(.*?)\??\}/g, function(match, key) {
|
|
|
|
if (parameters.hasOwnProperty(key)) {
|
|
|
|
var value = parameters[key];
|
|
|
|
delete parameters[key];
|
|
|
|
return value;
|
|
|
|
} else {
|
|
|
|
return match;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Strip out any optional parameters that were not given
|
|
|
|
uri = uri.replace(/\/\{.*?\?\}/g, '');
|
|
|
|
|
|
|
|
return uri;
|
|
|
|
},
|
|
|
|
|
|
|
|
getRouteQueryString : function (parameters) {
|
|
|
|
var qs = [];
|
|
|
|
for (var key in parameters) {
|
|
|
|
if (parameters.hasOwnProperty(key)) {
|
|
|
|
qs.push(key + '=' + parameters[key]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (qs.length < 1) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
return '?' + qs.join('&');
|
|
|
|
},
|
|
|
|
|
|
|
|
getByName : function (name) {
|
|
|
|
for (var key in this.routes) {
|
|
|
|
if (this.routes.hasOwnProperty(key) && this.routes[key].name === name) {
|
|
|
|
return this.routes[key];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
getByAction : function(action) {
|
|
|
|
for (var key in this.routes) {
|
|
|
|
if (this.routes.hasOwnProperty(key) && this.routes[key].action === action) {
|
|
|
|
return this.routes[key];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
getCorrectUrl: function (uri) {
|
|
|
|
var url = this.prefix + '/' + uri.replace(/^\/?/, '');
|
|
|
|
|
2017-04-15 21:18:12 +00:00
|
|
|
if ( ! this.absolute) {
|
2017-01-15 19:09:57 +00:00
|
|
|
return url;
|
2017-04-15 21:18:12 +00:00
|
|
|
}
|
2017-01-15 19:09:57 +00:00
|
|
|
|
|
|
|
return this.rootUrl.replace('/\/?$/', '') + url;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
var getLinkAttributes = function(attributes) {
|
|
|
|
if ( ! attributes) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
var attrs = [];
|
|
|
|
for (var key in attributes) {
|
|
|
|
if (attributes.hasOwnProperty(key)) {
|
|
|
|
attrs.push(key + '="' + attributes[key] + '"');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return attrs.join(' ');
|
|
|
|
};
|
|
|
|
|
|
|
|
var getHtmlLink = function (url, title, attributes) {
|
|
|
|
title = title || url;
|
|
|
|
attributes = getLinkAttributes(attributes);
|
|
|
|
|
|
|
|
return '<a href="' + url + '" ' + attributes + '>' + title + '</a>';
|
|
|
|
};
|
|
|
|
|
|
|
|
return {
|
|
|
|
// Generate a url for a given controller action.
|
|
|
|
// Router.action('HomeController@getIndex', [params = {}])
|
|
|
|
action : function (name, parameters) {
|
|
|
|
parameters = parameters || {};
|
|
|
|
|
|
|
|
return routes.route(name, parameters, routes.getByAction(name));
|
|
|
|
},
|
|
|
|
|
|
|
|
// Generate a url for a given named route.
|
|
|
|
// Router.route('routeName', [params = {}])
|
|
|
|
route : function (route, parameters) {
|
|
|
|
parameters = parameters || {};
|
|
|
|
|
|
|
|
return routes.route(route, parameters);
|
|
|
|
},
|
|
|
|
|
|
|
|
// Generate a fully qualified URL to the given path.
|
|
|
|
// Router.route('url', [params = {}])
|
|
|
|
url : function (route, parameters) {
|
|
|
|
parameters = parameters || {};
|
|
|
|
|
|
|
|
return routes.url(route, parameters);
|
|
|
|
},
|
|
|
|
|
|
|
|
// Generate a html link to the given url.
|
|
|
|
// Router.link_to('foo/bar', [title = url], [attributes = {}])
|
|
|
|
link_to : function (url, title, attributes) {
|
|
|
|
url = this.url(url);
|
|
|
|
|
|
|
|
return getHtmlLink(url, title, attributes);
|
|
|
|
},
|
|
|
|
|
|
|
|
// Generate a html link to the given route.
|
|
|
|
// Router.link_to_route('route.name', [title=url], [parameters = {}], [attributes = {}])
|
|
|
|
link_to_route : function (route, title, parameters, attributes) {
|
|
|
|
var url = this.route(route, parameters);
|
|
|
|
|
|
|
|
return getHtmlLink(url, title, attributes);
|
|
|
|
},
|
|
|
|
|
|
|
|
// Generate a html link to the given controller action.
|
|
|
|
// Router.link_to_action('HomeController@getIndex', [title=url], [parameters = {}], [attributes = {}])
|
|
|
|
link_to_action : function(action, title, parameters, attributes) {
|
|
|
|
var url = this.action(action, parameters);
|
|
|
|
|
|
|
|
return getHtmlLink(url, title, attributes);
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Expose the class either via AMD, CommonJS or the global object
|
|
|
|
*/
|
|
|
|
if (typeof define === 'function' && define.amd) {
|
|
|
|
define(function () {
|
|
|
|
return laroute;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
else if (typeof module === 'object' && module.exports){
|
|
|
|
module.exports = laroute;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
window.Router = laroute;
|
|
|
|
}
|
|
|
|
|
|
|
|
}).call(this);
|
|
|
|
|